Files
pnpm/exec/build-commands/test/ignoredBuilds.test.ts
Zoltan Kochan 961dc5d29d feat: add ignored-builds command (#8963)
* feat: add ignored-builds command

* test: ignored-builds

* test: ignored-builds

* fix: document the new command

* refactor: update text

* feat: add approve-builds command

* feat: rebuild approved packages

* fix: ignored builds

* feat: add final approval prompt

* test: approve builds

* refactor: approve-builds
2025-01-25 18:51:35 +01:00

97 lines
2.4 KiB
TypeScript

import path from 'path'
import fs from 'fs'
import { ignoredBuilds } from '@pnpm/exec.build-commands'
import { tempDir } from '@pnpm/prepare-temp-dir'
import { writeModulesManifest } from '@pnpm/modules-yaml'
const DEFAULT_MODULES_MANIFEST = {
hoistedDependencies: {},
layoutVersion: 4,
packageManager: '',
included: {
optionalDependencies: true,
dependencies: true,
devDependencies: true,
},
pendingBuilds: [],
prunedAt: '',
skipped: [],
storeDir: '',
virtualStoreDir: '',
virtualStoreDirMaxLength: 90,
registries: {
default: '',
},
}
test('ignoredBuilds lists automatically ignored dependencies', async () => {
const dir = tempDir()
const modulesDir = path.join(dir, 'node_modules')
fs.mkdirSync(modulesDir, { recursive: true })
await writeModulesManifest(modulesDir, {
...DEFAULT_MODULES_MANIFEST,
ignoredBuilds: ['foo'],
})
const output = await ignoredBuilds.handler({
dir,
modulesDir,
rootProjectManifest: {},
})
expect(output).toMatchSnapshot()
})
test('ignoredBuilds lists explicitly ignored dependencies', async () => {
const dir = tempDir()
const modulesDir = path.join(dir, 'node_modules')
fs.mkdirSync(modulesDir, { recursive: true })
await writeModulesManifest(modulesDir, {
...DEFAULT_MODULES_MANIFEST,
ignoredBuilds: [],
})
const output = await ignoredBuilds.handler({
dir,
modulesDir,
rootProjectManifest: {
pnpm: {
ignoredBuiltDependencies: ['bar'],
},
},
})
expect(output).toMatchSnapshot()
})
test('ignoredBuilds lists both automatically and explicitly ignored dependencies', async () => {
const dir = tempDir()
const modulesDir = path.join(dir, 'node_modules')
fs.mkdirSync(modulesDir, { recursive: true })
await writeModulesManifest(modulesDir, {
...DEFAULT_MODULES_MANIFEST,
ignoredBuilds: ['foo', 'bar'],
})
const output = await ignoredBuilds.handler({
dir,
modulesDir,
rootProjectManifest: {
pnpm: {
ignoredBuiltDependencies: ['qar', 'zoo'],
},
},
})
expect(output).toMatchSnapshot()
})
test('ignoredBuilds prints an info message when there is no node_modules', async () => {
const dir = tempDir()
const modulesDir = path.join(dir, 'node_modules')
const output = await ignoredBuilds.handler({
dir,
modulesDir,
rootProjectManifest: {
pnpm: {
ignoredBuiltDependencies: ['qar', 'zoo'],
},
},
})
expect(output).toMatchSnapshot()
})