%PDF- %PDF-
| Direktori : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/npm/test/lib/ |
| Current File : /home/vacivi36/vittasync.vacivitta.com.br/vittasync/node/deps/npm/test/lib/arborist-cmd.js |
const { resolve } = require('path')
const t = require('tap')
const { load: loadMockNpm } = require('../fixtures/mock-npm')
const tmock = require('../fixtures/tmock')
const mockArboristCmd = async (t, exec, workspace, { mocks = {}, ...opts } = {}) => {
const ArboristCmd = tmock(t, '{LIB}/arborist-cmd.js', mocks)
const config = (typeof workspace === 'function')
? (dirs) => ({ workspace: workspace(dirs) })
: { workspace }
const mock = await loadMockNpm(t, {
config,
prefixDir: {
'package.json': JSON.stringify({
name: 'simple-workspaces-list',
version: '1.1.1',
workspaces: [
'a',
'b',
'group/*',
],
}),
node_modules: {
abbrev: {
'package.json': JSON.stringify({ name: 'abbrev', version: '1.1.1' }),
},
a: t.fixture('symlink', '../a'),
b: t.fixture('symlink', '../b'),
},
a: {
'package.json': JSON.stringify({ name: 'a', version: '1.0.0' }),
},
b: {
'package.json': JSON.stringify({ name: 'b', version: '1.0.0' }),
},
group: {
c: {
'package.json': JSON.stringify({
name: 'c',
version: '1.0.0',
dependencies: {
abbrev: '^1.1.1',
},
}),
},
d: {
'package.json': JSON.stringify({ name: 'd', version: '1.0.0' }),
},
},
},
...opts,
})
let execArg
class TestCmd extends ArboristCmd {
async exec (arg) {
execArg = arg
}
}
const cmd = new TestCmd(mock.npm)
if (exec) {
await cmd.execWorkspaces(exec)
}
return { ...mock, cmd, getArg: () => execArg }
}
t.test('arborist-cmd', async t => {
await t.test('single name', async t => {
const { cmd, getArg } = await mockArboristCmd(t, ['foo'], 'a')
t.same(cmd.workspaceNames, ['a'], 'should set array with single ws name')
t.same(getArg(), ['foo'], 'should get received args')
})
await t.test('single path', async t => {
const { cmd } = await mockArboristCmd(t, [], './a')
t.same(cmd.workspaceNames, ['a'], 'should set array with single ws name')
})
await t.test('single full path', async t => {
const { cmd } = await mockArboristCmd(t, [], ({ prefix }) => resolve(prefix, 'a'))
t.same(cmd.workspaceNames, ['a'], 'should set array with single ws name')
})
await t.test('multiple names', async t => {
const { cmd } = await mockArboristCmd(t, [], ['a', 'c'])
t.same(cmd.workspaceNames, ['a', 'c'], 'should set array with single ws name')
})
await t.test('multiple paths', async t => {
const { cmd } = await mockArboristCmd(t, [], ['./a', 'group/c'])
t.same(cmd.workspaceNames, ['a', 'c'], 'should set array with single ws name')
})
await t.test('parent path', async t => {
const { cmd } = await mockArboristCmd(t, [], './group')
t.same(cmd.workspaceNames, ['c', 'd'], 'should set array with single ws name')
})
await t.test('parent path', async t => {
const { cmd } = await mockArboristCmd(t, [], './group')
t.same(cmd.workspaceNames, ['c', 'd'], 'should set array with single ws name')
})
await t.test('prefix inside cwd', async t => {
const { npm, cmd, prefix } = await mockArboristCmd(t, null, ['a', 'c'], {
chdir: (dirs) => dirs.testdir,
})
npm.localPrefix = prefix
await cmd.execWorkspaces([])
t.same(cmd.workspaceNames, ['a', 'c'], 'should set array with single ws name')
})
})
t.test('handle getWorkspaces raising an error', async t => {
const { cmd } = await mockArboristCmd(t, null, 'a', {
mocks: {
'{LIB}/workspaces/get-workspaces.js': async () => {
throw new Error('oopsie')
},
},
})
await t.rejects(
cmd.execWorkspaces(['foo']),
{ message: 'oopsie' }
)
})