mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-07 16:49:48 -04:00
fix: sync --allow-build flag value to allowBuilds (#10343)
* fix: sync `--allow-build` flag value to `allowBuilds` * feat: rename * fix: update * chore: reset * fix: update * fix: test * fix: update * fix: update
This commit is contained in:
6
.changeset/solid-suns-wear.md
Normal file
6
.changeset/solid-suns-wear.md
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"@pnpm/plugin-commands-installation": patch
|
||||
"pnpm": patch
|
||||
---
|
||||
|
||||
The parameter set by the `--allow-build` flag is written to `allowBuilds`.
|
||||
@@ -113,7 +113,8 @@ test('approve no builds', async () => {
|
||||
|
||||
const manifest = readYamlFile<any>(path.resolve('pnpm-workspace.yaml')) // eslint-disable-line
|
||||
expect(manifest.onlyBuiltDependencies).toBeUndefined()
|
||||
expect(manifest.ignoredBuiltDependencies?.sort()).toStrictEqual([
|
||||
expect(manifest.ignoredBuiltDependencies).toBeUndefined()
|
||||
expect(Object.keys(manifest.allowBuilds ?? {}).sort()).toStrictEqual([
|
||||
'@pnpm.e2e/install-script-example',
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example',
|
||||
])
|
||||
@@ -144,8 +145,10 @@ test("works when root project manifest doesn't exist in a workspace", async () =
|
||||
|
||||
expect(readYamlFile(workspaceManifestFile)).toStrictEqual({
|
||||
packages: ['packages/*'],
|
||||
onlyBuiltDependencies: ['@pnpm.e2e/pre-and-postinstall-scripts-example'],
|
||||
ignoredBuiltDependencies: ['@pnpm.e2e/install-script-example'],
|
||||
allowBuilds: {
|
||||
'@pnpm.e2e/install-script-example': false,
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example': true,
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
@@ -223,7 +226,9 @@ test('should approve builds with package.json that has no onlyBuiltDependencies
|
||||
|
||||
expect(readYamlFile(workspaceManifestFile)).toStrictEqual({
|
||||
packages: ['packages/*'],
|
||||
onlyBuiltDependencies: ['@pnpm.e2e/pre-and-postinstall-scripts-example'],
|
||||
ignoredBuiltDependencies: ['@pnpm.e2e/install-script-example'],
|
||||
allowBuilds: {
|
||||
'@pnpm.e2e/install-script-example': false,
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example': true,
|
||||
},
|
||||
})
|
||||
})
|
||||
|
||||
@@ -186,7 +186,8 @@ test('selectively allow scripts in some dependencies by --allow-build flag', asy
|
||||
const manifest = loadJsonFile.sync<ProjectManifest>('package.json')
|
||||
expect(manifest.pnpm?.onlyBuiltDependencies).toStrictEqual(undefined)
|
||||
const modulesManifest = await readWorkspaceManifest(project.dir())
|
||||
expect(modulesManifest?.onlyBuiltDependencies).toStrictEqual(['@pnpm.e2e/install-script-example'])
|
||||
expect(modulesManifest?.onlyBuiltDependencies).toBeUndefined()
|
||||
expect(modulesManifest?.allowBuilds).toStrictEqual({ '@pnpm.e2e/install-script-example': true })
|
||||
})
|
||||
|
||||
test('--allow-build flag should specify the package', async () => {
|
||||
|
||||
@@ -40,7 +40,7 @@ export async function updateWorkspaceManifest (dir: string, opts: {
|
||||
|
||||
// If the current manifest has allowBuilds, convert old fields to allowBuilds format
|
||||
const updatedFields = { ...opts.updatedFields }
|
||||
if (manifest.allowBuilds != null && (updatedFields.onlyBuiltDependencies != null || updatedFields.ignoredBuiltDependencies != null)) {
|
||||
if (manifest.allowBuilds != null || (manifest.onlyBuiltDependencies == null && manifest.ignoredBuiltDependencies == null)) {
|
||||
const allowBuilds: Record<string, boolean | string> = { ...manifest.allowBuilds }
|
||||
|
||||
// Convert onlyBuiltDependencies to allowBuilds with true values
|
||||
@@ -58,7 +58,9 @@ export async function updateWorkspaceManifest (dir: string, opts: {
|
||||
}
|
||||
|
||||
// Update allowBuilds instead of the old fields
|
||||
updatedFields.allowBuilds = allowBuilds
|
||||
if (manifest.allowBuilds != null || Object.keys(allowBuilds).length > 0) {
|
||||
updatedFields.allowBuilds = allowBuilds
|
||||
}
|
||||
delete updatedFields.onlyBuiltDependencies
|
||||
delete updatedFields.ignoredBuiltDependencies
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { sync as writeYamlFile } from 'write-yaml-file'
|
||||
test('updateWorkspaceManifest adds a new setting', async () => {
|
||||
const dir = tempDir(false)
|
||||
const filePath = path.join(dir, WORKSPACE_MANIFEST_FILENAME)
|
||||
writeYamlFile(filePath, { packages: ['*'] })
|
||||
writeYamlFile(filePath, { packages: ['*'], onlyBuiltDependencies: [] })
|
||||
await updateWorkspaceManifest(dir, {
|
||||
updatedFields: { onlyBuiltDependencies: [] },
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user