spec.js
2.21 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
const chai = require('chai')
const should = chai.should()
const chaiAsPromised = require('chai-as-promised')
const BluebirdPromise = require('bluebird')
const requireNew = require('require-new')
const spawn = require('../index.js')
chai.use(chaiAsPromised)
describe('spawn-please', () => {
it('resolve on success', async () => {
await spawn('true')
})
it('reject on fail', async () => {
return spawn('false')
.catch(function (err) {
should.exist(err)
})
})
it('allow errors to be ignored with rejectOnError:false', async () => {
await spawn('false', [], { rejectOnError: false })
})
it('handle command-line arguments', async () => {
const output = await spawn('printf', ['hello'])
output.should.equal('hello')
})
it('accept stdin', async () => {
const output = await spawn('cat', [], 'test')
output.should.equal('test')
})
it('allow you to specify a custom Promise', () => {
const spawn = requireNew('../index.js')
spawn('true').should.not.be.an.instanceof(BluebirdPromise)
spawn.Promise = BluebirdPromise
spawn('true').should.be.an.instanceof(BluebirdPromise)
})
it('accept options as second argument', async () => {
const pwd = await spawn('pwd', [], 'test', { cwd: __dirname })
pwd.trim().should.equal(__dirname)
// stdin should still be read
const cat = await spawn('cat', [], 'test', { cwd: __dirname })
cat.should.equal('test')
})
it('accept options as third argument', async () => {
const output = await spawn('pwd', [], { cwd: __dirname })
output.trim().should.equal(__dirname)
})
it('only resolve stdout when fulfilled', async () => {
const output = await spawn('node', ['./stdout-and-stderr.js'], { cwd: __dirname })
output.should.equal('STDOUT\n')
})
it('expose stdout and stderr', () => {
let stdoutOutput = ''
let stderrOutput = ''
return spawn('node', ['./stdout-and-stderr.js'], {
cwd: __dirname,
stderr: function (data) {
stderrOutput += data
},
stdout: function (data) {
stdoutOutput += data
},
})
.then(() => {
stderrOutput.trim().should.equal('STDERR')
stdoutOutput.trim().should.equal('STDOUT')
})
})
})