Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornlf <quitlahok@gmail.com>2022-08-15 23:31:10 +0300
committerNathan Fritz <fritzy@github.com>2022-08-17 03:54:17 +0300
commite6d4304bbd03e38dcf2c7467bb1e61b5740a4c73 (patch)
tree1c961352edffc88a2f587ceb896db2f200052e73
parent9dc69830a5d78aa4042746d54e2a6b0d2af70caa (diff)
feat(arborist): add overridden getter to Node class
-rw-r--r--workspaces/arborist/lib/node.js4
-rw-r--r--workspaces/arborist/test/node.js46
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,