Skip to content

Commit e6d4304

Browse files
nlffritzy
authored andcommitted
feat(arborist): add overridden getter to Node class
1 parent 9dc6983 commit e6d4304

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

workspaces/arborist/lib/node.js

+4
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,10 @@ class Node {
334334
return `${myname}@${alias}${version}`
335335
}
336336

337+
get overridden () {
338+
return !!(this.overrides && this.overrides.value && this.overrides.name === this.name)
339+
}
340+
337341
get package () {
338342
return this[_package]
339343
}

workspaces/arborist/test/node.js

+46
Original file line numberDiff line numberDiff line change
@@ -2728,6 +2728,52 @@ t.test('overrides', (t) => {
27282728
t.end()
27292729
})
27302730

2731+
t.test('node.overridden is true when an override applies to a specific node', async (t) => {
2732+
const tree = new Node({
2733+
loadOverrides: true,
2734+
path: '/some/path',
2735+
pkg: {
2736+
name: 'foo',
2737+
dependencies: {
2738+
bar: '^1',
2739+
},
2740+
overrides: {
2741+
baz: '1.0.0',
2742+
},
2743+
},
2744+
children: [{
2745+
name: 'bar',
2746+
version: '1.0.0',
2747+
pkg: {
2748+
dependencies: {
2749+
baz: '2.0.0',
2750+
},
2751+
},
2752+
children: [{
2753+
name: 'baz',
2754+
version: '1.0.0',
2755+
pkg: {
2756+
dependencies: {
2757+
buzz: '1.0.0',
2758+
},
2759+
},
2760+
children: [{
2761+
name: 'buzz',
2762+
version: '1.0.0',
2763+
pkg: {},
2764+
}],
2765+
}],
2766+
}],
2767+
})
2768+
2769+
const bar = tree.edgesOut.get('bar').to
2770+
t.not(bar.overridden, 'bar was not overridden')
2771+
const baz = bar.edgesOut.get('baz').to
2772+
t.ok(baz.overridden, 'baz was overridden')
2773+
const buzz = baz.edgesOut.get('buzz').to
2774+
t.not(buzz.overridden, 'buzz was not overridden')
2775+
})
2776+
27312777
t.test('assertRootOverrides throws when a dependency and override conflict', async (t) => {
27322778
const conflictingTree = new Node({
27332779
loadOverrides: true,

0 commit comments

Comments
 (0)