diff options
author | nlf <quitlahok@gmail.com> | 2022-08-15 23:31:10 +0300 |
---|---|---|
committer | Nathan Fritz <fritzy@github.com> | 2022-08-17 03:54:17 +0300 |
commit | e6d4304bbd03e38dcf2c7467bb1e61b5740a4c73 (patch) | |
tree | 1c961352edffc88a2f587ceb896db2f200052e73 /workspaces | |
parent | 9dc69830a5d78aa4042746d54e2a6b0d2af70caa (diff) |
feat(arborist): add overridden getter to Node class
Diffstat (limited to 'workspaces')
-rw-r--r-- | workspaces/arborist/lib/node.js | 4 | ||||
-rw-r--r-- | workspaces/arborist/test/node.js | 46 |
2 files changed, 50 insertions, 0 deletions
diff --git a/workspaces/arborist/lib/node.js b/workspaces/arborist/lib/node.js index be9735657..8ec90ff3c 100644 --- a/workspaces/arborist/lib/node.js +++ b/workspaces/arborist/lib/node.js @@ -334,6 +334,10 @@ class Node { return `${myname}@${alias}${version}` } + get overridden () { + return !!(this.overrides && this.overrides.value && this.overrides.name === this.name) + } + get package () { return this[_package] } diff --git a/workspaces/arborist/test/node.js b/workspaces/arborist/test/node.js index 0db439cba..d89bf804a 100644 --- a/workspaces/arborist/test/node.js +++ b/workspaces/arborist/test/node.js @@ -2728,6 +2728,52 @@ t.test('overrides', (t) => { t.end() }) + t.test('node.overridden is true when an override applies to a specific node', async (t) => { + const tree = new Node({ + loadOverrides: true, + path: '/some/path', + pkg: { + name: 'foo', + dependencies: { + bar: '^1', + }, + overrides: { + baz: '1.0.0', + }, + }, + children: [{ + name: 'bar', + version: '1.0.0', + pkg: { + dependencies: { + baz: '2.0.0', + }, + }, + children: [{ + name: 'baz', + version: '1.0.0', + pkg: { + dependencies: { + buzz: '1.0.0', + }, + }, + children: [{ + name: 'buzz', + version: '1.0.0', + pkg: {}, + }], + }], + }], + }) + + const bar = tree.edgesOut.get('bar').to + t.not(bar.overridden, 'bar was not overridden') + const baz = bar.edgesOut.get('baz').to + t.ok(baz.overridden, 'baz was overridden') + const buzz = baz.edgesOut.get('buzz').to + t.not(buzz.overridden, 'buzz was not overridden') + }) + t.test('assertRootOverrides throws when a dependency and override conflict', async (t) => { const conflictingTree = new Node({ loadOverrides: true, |