blob: d597ba2743837e8d5c6e622ede00c18b6e011069 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
const t = require('tap')
const spawk = require('spawk')
const { real: mockNpm } = require('../fixtures/mock-npm')
spawk.preventUnmatched()
t.teardown(() => {
spawk.unload()
})
// TODO this ... smells. npm "script-shell" config mentions defaults but those
// are handled by run-script, not npm. So for now we have to tie tests to some
// pretty specific internals of runScript
const makeSpawnArgs = require('@npmcli/run-script/lib/make-spawn-args.js')
t.test('should run stop script from package.json', async t => {
const prefix = t.testdir({
'package.json': JSON.stringify({
name: 'x',
version: '1.2.3',
scripts: {
test: 'node ./test-test.js',
},
}),
})
const { command, npm } = mockNpm(t)
await npm.load()
npm.log.level = 'silent'
npm.localPrefix = prefix
const [scriptShell] = makeSpawnArgs({ path: prefix })
const script = spawk.spawn(scriptShell, (args) => {
t.ok(args.includes('node ./test-test.js "foo"'), 'ran test script with extra args')
return true
})
await command('test', ['foo'])
t.ok(script.called, 'script ran')
})
|