Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix(ls): when filtering workspaces, make sure the edge has a to befor…
…e checking if its a workspace (#5164)
  • Loading branch information
nlf committed Aug 1, 2022
1 parent 58cc362 commit eac1bf2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/commands/ls.js
Expand Up @@ -92,7 +92,7 @@ class LS extends ArboristWorkspaceCmd {
}

if (this.npm.flatOptions.includeWorkspaceRoot
&& !edge.to.isWorkspace) {
&& edge.to && !edge.to.isWorkspace) {
return true
}

Expand Down
7 changes: 7 additions & 0 deletions tap-snapshots/test/lib/commands/ls.js.test.cjs
Expand Up @@ -678,6 +678,13 @@ dedupe-entries@1.0.0 {CWD}/tap-testdir-ls-ls-with-no-args-dedupe-entries-and-not
`

exports[`test/lib/commands/ls.js TAP ls workspace and missing optional dep > should omit missing optional dep 1`] = `
root@ {CWD}/tap-testdir-ls-ls-workspace-and-missing-optional-dep
+-- baz@1.0.0 -> ./baz
\`-- foo@1.0.0
`

exports[`test/lib/commands/ls.js TAP show multiple invalid reasons > ls result 1`] = `
test-npm-ls@1.0.0 {cwd}/tap-testdir-ls-show-multiple-invalid-reasons
+-- cat@1.0.0 invalid: "^2.0.0" from the root project
Expand Down
38 changes: 38 additions & 0 deletions test/lib/commands/ls.js
Expand Up @@ -178,6 +178,44 @@ t.test('ls', t => {
)
})

t.test('workspace and missing optional dep', async t => {
npm.prefix = npm.localPrefix = t.testdir({
'package.json': JSON.stringify({
name: 'root',
dependencies: {
foo: '^1.0.0',
},
optionalDependencies: {
bar: '^1.0.0',
},
workspaces: ['./baz'],
}),
baz: {
'package.json': JSON.stringify({
name: 'baz',
version: '1.0.0',
}),
},
node_modules: {
baz: t.fixture('symlink', '../baz'),
foo: {
'package.json': JSON.stringify({
name: 'foo',
version: '1.0.0',
}),
},
},
})

npm.flatOptions.includeWorkspaceRoot = true
t.teardown(() => {
delete npm.flatOptions.includeWorkspaceRoot
})

await ls.execWorkspaces([], ['baz'])
t.matchSnapshot(redactCwd(result), 'should omit missing optional dep')
})

t.test('extraneous deps', async t => {
npm.prefix = t.testdir({
'package.json': JSON.stringify({
Expand Down

0 comments on commit eac1bf2

Please sign in to comment.