mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-27 18:46:18 -04:00
fix: allowedVersions corner case when only parent>child selectors exist (#6148)
This commit is contained in:
5
.changeset/unlucky-avocados-unite.md
Normal file
5
.changeset/unlucky-avocados-unite.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/hooks.read-package-hook": patch
|
||||
---
|
||||
|
||||
Fixed issue where allowedVersions wouldn't apply correctly if only parent>child selectors were used
|
||||
@@ -36,11 +36,10 @@ export function createPeerDependencyPatcher (
|
||||
pkg.peerDependencies![peerName] = '*'
|
||||
continue
|
||||
}
|
||||
if (
|
||||
!peerDependencyRules.allowedVersions?.[peerName] ||
|
||||
peerVersion === '*'
|
||||
) continue
|
||||
if (peerDependencyRules.allowedVersions[peerName] === '*') {
|
||||
if (!allowedVersions?.[peerName] || peerVersion === '*') {
|
||||
continue
|
||||
}
|
||||
if (allowedVersions?.[peerName].includes('*')) {
|
||||
pkg.peerDependencies![peerName] = '*'
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -168,6 +168,25 @@ test('createPeerDependencyPatcher() overrides peerDependencies when parent>child
|
||||
})
|
||||
})
|
||||
|
||||
// corner case exists when a 'parent>child' allowedVersion selector is used without a 'child' selector
|
||||
test('createPeerDependencyPatcher() corner case correctly applies override', () => {
|
||||
const patcher = createPeerDependencyPatcher({
|
||||
allowedVersions: {
|
||||
'foo>bar': '2',
|
||||
},
|
||||
})
|
||||
|
||||
const patchedPkg = patcher({
|
||||
name: 'foo',
|
||||
peerDependencies: {
|
||||
bar: '0 || 1',
|
||||
},
|
||||
}) as ProjectManifest
|
||||
expect(patchedPkg.peerDependencies).toStrictEqual({
|
||||
bar: '0 || 1 || 2',
|
||||
})
|
||||
})
|
||||
|
||||
test('createPeerDependencyPathcer() throws expected error if parent>child selector cannot parse', () => {
|
||||
expect(() => createPeerDependencyPatcher({
|
||||
allowedVersions: {
|
||||
|
||||
Reference in New Issue
Block a user