Skip to content

Commit 84e9b27

Browse files
committed
fix: undefined override set conflicts shouldn't error
1 parent 7da8fdd commit 84e9b27

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

workspaces/arborist/lib/override-set.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ class OverrideSet {
200200
}
201201

202202
static doOverrideSetsConflict (first, second) {
203+
// If either override set is missing, there's no conflict
204+
if (!first || !second) {
205+
return false
206+
}
207+
203208
// If override sets contain one another then we can try to use the more specific one.
204209
// If neither one is more specific, check for semantic conflicts.
205210
const specificSet = this.findSpecificOverrideSet(first, second)

workspaces/arborist/test/override-set.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,4 +558,24 @@ t.test('coverage for isEqual edge cases', async t => {
558558
// AND parent.isEqual(...) returns false
559559
t.notOk(childC.isEqual(childD), 'two children with different parents are not equal')
560560
})
561+
562+
t.test('should handle undefined/null second parameter gracefully', async (t) => {
563+
const overrides = new OverrideSet({
564+
overrides: {
565+
react: '^18.3.1',
566+
'react-dom': '^18.3.1',
567+
},
568+
})
569+
570+
t.doesNotThrow(() => {
571+
OverrideSet.doOverrideSetsConflict(overrides, undefined)
572+
}, 'should not throw when second parameter is undefined')
573+
574+
t.doesNotThrow(() => {
575+
OverrideSet.doOverrideSetsConflict(overrides, null)
576+
}, 'should not throw when second parameter is null')
577+
578+
t.equal(OverrideSet.doOverrideSetsConflict(overrides, undefined), false, 'should return false for undefined')
579+
t.equal(OverrideSet.doOverrideSetsConflict(overrides, null), false, 'should return false for null')
580+
})
561581
})

0 commit comments

Comments
 (0)