fix: overrides should not fail on non-semver specs

This commit is contained in:
Zoltan Kochan
2021-04-04 22:59:24 +03:00
parent 1f05fef659
commit 22dbacb100
2 changed files with 27 additions and 3 deletions

View File

@@ -59,11 +59,15 @@ function overrideDepsOfPkg (pkg: PackageManifest, versionOverrides: VersionOverr
function overrideDeps (versionOverrides: VersionOverride[], deps: Dependencies) {
for (const versionOverride of versionOverrides) {
const actual = deps[versionOverride.wantedDependency.alias]
if (
deps[versionOverride.wantedDependency.alias] &&
actual &&
(
!versionOverride.wantedDependency.pref ||
semver.subset(deps[versionOverride.wantedDependency.alias], versionOverride.wantedDependency.pref)
actual === versionOverride.wantedDependency.pref ||
semver.validRange(actual) != null &&
semver.validRange(versionOverride.wantedDependency.pref) != null &&
semver.subset(actual, versionOverride.wantedDependency.pref)
)
) {
deps[versionOverride.wantedDependency.alias] = versionOverride.newPref

View File

@@ -1,6 +1,6 @@
import createVersionsOverrider from 'supi/lib/install/createVersionsOverrider'
test('createVersionsOverrider()', () => {
test('createVersionsOverrider() matches subranges', () => {
const overrider = createVersionsOverrider({
'foo@2': '2.12.0',
})
@@ -10,3 +10,23 @@ test('createVersionsOverrider()', () => {
})
).toStrictEqual({ dependencies: { foo: '2.12.0' } })
})
test('createVersionsOverrider() does not fail on non-range selectors', () => {
const overrider = createVersionsOverrider({
'foo@2': '2.12.0',
'bar@github:org/bar': '2.12.0',
})
expect(
overrider({
dependencies: {
foo: 'github:org/foo',
bar: 'github:org/bar',
},
})
).toStrictEqual({
dependencies: {
foo: 'github:org/foo',
bar: '2.12.0',
},
})
})