mirror of
https://github.com/pnpm/pnpm.git
synced 2026-05-19 14:20:36 -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] = '*'
|
pkg.peerDependencies![peerName] = '*'
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (
|
if (!allowedVersions?.[peerName] || peerVersion === '*') {
|
||||||
!peerDependencyRules.allowedVersions?.[peerName] ||
|
continue
|
||||||
peerVersion === '*'
|
}
|
||||||
) continue
|
if (allowedVersions?.[peerName].includes('*')) {
|
||||||
if (peerDependencyRules.allowedVersions[peerName] === '*') {
|
|
||||||
pkg.peerDependencies![peerName] = '*'
|
pkg.peerDependencies![peerName] = '*'
|
||||||
continue
|
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', () => {
|
test('createPeerDependencyPathcer() throws expected error if parent>child selector cannot parse', () => {
|
||||||
expect(() => createPeerDependencyPatcher({
|
expect(() => createPeerDependencyPatcher({
|
||||||
allowedVersions: {
|
allowedVersions: {
|
||||||
|
|||||||
Reference in New Issue
Block a user