mirror of
https://github.com/nodejs/node.git
synced 2024-11-28 14:33:11 +01:00
c923ce7414
PR-URL: https://github.com/nodejs/node/pull/52767 Reviewed-By: Richard Lau <rlau@redhat.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
206 lines
3.9 KiB
JavaScript
206 lines
3.9 KiB
JavaScript
const t = require('tap')
|
|
const installedDeep = require('../../../lib/utils/installed-deep.js')
|
|
const mockNpm = require('../../fixtures/mock-npm')
|
|
|
|
const fixture = {
|
|
'package.json': JSON.stringify({
|
|
name: 'test-installed-deep',
|
|
version: '1.0.0',
|
|
dependencies: {
|
|
a: '^1.0.0',
|
|
b: '^1.0.0',
|
|
c: '^1.0.0',
|
|
},
|
|
devDependencies: {
|
|
d: '^1.0.0',
|
|
},
|
|
peerDependencies: {
|
|
e: '^1.0.0',
|
|
},
|
|
}),
|
|
node_modules: {
|
|
a: {
|
|
'package.json': JSON.stringify({
|
|
name: 'a',
|
|
version: '1.0.0',
|
|
dependencies: {
|
|
f: '^1.0.0',
|
|
},
|
|
}),
|
|
},
|
|
b: {
|
|
'package.json': JSON.stringify({
|
|
name: 'b',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
c: {
|
|
'package.json': JSON.stringify({
|
|
name: 'c',
|
|
version: '1.0.0',
|
|
dependencies: {
|
|
ch: '1.0.0',
|
|
},
|
|
}),
|
|
},
|
|
ch: {
|
|
'package.json': JSON.stringify({
|
|
name: 'ch',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
d: {
|
|
'package.json': JSON.stringify({
|
|
name: 'd',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
e: {
|
|
'package.json': JSON.stringify({
|
|
name: 'e',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
f: {
|
|
'package.json': JSON.stringify({
|
|
name: 'f',
|
|
version: '1.0.0',
|
|
dependencies: {
|
|
g: '^1.0.0',
|
|
e: '^2.0.0',
|
|
},
|
|
}),
|
|
node_modules: {
|
|
e: {
|
|
'package.json': JSON.stringify({
|
|
name: 'e',
|
|
version: '2.0.0',
|
|
dependencies: {
|
|
bb: '^1.0.0',
|
|
},
|
|
}),
|
|
node_modules: {
|
|
bb: {
|
|
'package.json': JSON.stringify({
|
|
name: 'bb',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
g: {
|
|
'package.json': JSON.stringify({
|
|
name: 'g',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
},
|
|
}
|
|
|
|
const globalFixture = {
|
|
node_modules: {
|
|
foo: {
|
|
'package.json': JSON.stringify({
|
|
name: 'foo',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
bar: {
|
|
'package.json': JSON.stringify({
|
|
name: 'bar',
|
|
version: '1.0.0',
|
|
dependencies: {
|
|
'a-bar': '^1.0.0',
|
|
},
|
|
}),
|
|
node_modules: {
|
|
'a-bar': {
|
|
'package.json': JSON.stringify({
|
|
name: 'a-bar',
|
|
version: '1.0.0',
|
|
}),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
const mockDeep = async (t, config) => {
|
|
const mock = await mockNpm(t, {
|
|
prefixDir: fixture,
|
|
globalPrefixDir: globalFixture,
|
|
config: {
|
|
depth: Infinity,
|
|
...config,
|
|
},
|
|
})
|
|
|
|
const res = await installedDeep(mock.npm)
|
|
|
|
return res
|
|
}
|
|
|
|
t.test('get list of package names', async t => {
|
|
const res = await mockDeep(t)
|
|
t.same(
|
|
res,
|
|
[
|
|
['bar', '-g'],
|
|
['foo', '-g'],
|
|
['a-bar', '-g'],
|
|
'a', 'b', 'c',
|
|
'ch', 'd', 'e',
|
|
'f', 'g', 'bb',
|
|
],
|
|
'should return list of package names and global flag'
|
|
)
|
|
t.end()
|
|
})
|
|
|
|
t.test('get list of package names as global', async t => {
|
|
const res = await mockDeep(t, { global: true })
|
|
t.same(
|
|
res,
|
|
[
|
|
'bar',
|
|
'foo',
|
|
'a-bar',
|
|
],
|
|
'should return list of global packages with no extra flags'
|
|
)
|
|
})
|
|
|
|
t.test('limit depth', async t => {
|
|
const res = await mockDeep(t, { depth: 0 })
|
|
t.same(
|
|
res,
|
|
[
|
|
['bar', '-g'],
|
|
['foo', '-g'],
|
|
// XXX https://github.com/npm/statusboard/issues/380
|
|
['a-bar', '-g'],
|
|
'a', 'b',
|
|
'c', 'ch',
|
|
'd', 'e',
|
|
'f', 'g',
|
|
],
|
|
'should print only packages up to the specified depth'
|
|
)
|
|
})
|
|
|
|
t.test('limit depth as global', async t => {
|
|
const res = await mockDeep(t, { depth: 0, global: true })
|
|
t.same(
|
|
res,
|
|
[
|
|
'bar',
|
|
'foo',
|
|
// https://github.com/npm/statusboard/issues/380
|
|
'a-bar',
|
|
],
|
|
'should reorder so that packages above that level depth goes last'
|
|
)
|
|
})
|