pnpm
55 строк · 2.2 Кб
1import fs from 'fs'
2import path from 'path'
3import { getFilePathInCafs } from '@pnpm/store.cafs'
4import { getIntegrity, REGISTRY_MOCK_PORT } from '@pnpm/registry-mock'
5
6export interface StoreAssertions {
7getPkgIndexFilePath: (pkgName: string, version?: string) => string
8cafsHas: (pkgName: string, version?: string) => void
9cafsHasNot: (pkgName: string, version?: string) => void
10storeHas: (pkgName: string, version?: string) => void
11storeHasNot: (pkgName: string, version?: string) => void
12resolve: (pkgName: string, version?: string, relativePath?: string) => string
13}
14
15export function assertStore (
16storePath: string,
17encodedRegistryName?: string
18): StoreAssertions {
19// eslint-disable-next-line
20const ok = (value: any) => expect(value).toBeTruthy()
21// eslint-disable-next-line
22const notOk = (value: any) => expect(value).toBeFalsy()
23const ern = encodedRegistryName ?? `localhost+${REGISTRY_MOCK_PORT}`
24const store = {
25getPkgIndexFilePath (pkgName: string, version?: string): string {
26const cafsDir = path.join(storePath, 'files')
27const integrity = version ? getIntegrity(pkgName, version) : pkgName
28return getFilePathInCafs(cafsDir, integrity, 'index')
29},
30cafsHas (pkgName: string, version?: string): void {
31const pathToCheck = store.getPkgIndexFilePath(pkgName, version)
32ok(fs.existsSync(pathToCheck))
33},
34cafsHasNot (pkgName: string, version?: string): void {
35const pathToCheck = store.getPkgIndexFilePath(pkgName, version)
36notOk(fs.existsSync(pathToCheck))
37},
38storeHas (pkgName: string, version?: string): void {
39const pathToCheck = store.resolve(pkgName, version)
40ok(fs.existsSync(pathToCheck))
41},
42storeHasNot (pkgName: string, version?: string): void {
43const pathToCheck = store.resolve(pkgName, version)
44notOk(fs.existsSync(pathToCheck))
45},
46resolve (pkgName: string, version?: string, relativePath?: string): string {
47const pkgFolder = version ? path.join(ern, pkgName, version) : pkgName
48if (relativePath) {
49return path.join(storePath, pkgFolder, relativePath)
50}
51return path.join(storePath, pkgFolder)
52},
53}
54return store
55}
56