-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.js
127 lines (104 loc) · 2.53 KB
/
test.js
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/*!
* exec-cmd <https://github.com/hybridables/exec-cmd>
*
* Copyright (c) 2014-2015 Charlike Mike Reagent, contributors.
* Released under the MIT license.
*/
/* jshint asi:true */
'use strict'
var path = require('path')
var test = require('assertit')
var execCmd = require('./index')
test('should handle optional `args` and `options`', function (done) {
var promise = execCmd('echo')
test.equal(typeof promise.then, 'function')
test.equal(typeof promise.hybridify, 'function')
done()
})
test('should handle optional `options`', function (done) {
var promise = execCmd('echo', [
'hello world'
])
promise
.then(function (res) {
var stdout = res[0]
var code = res[1]
test.equal(code, 0)
test.equal(stdout.trim(), 'hello world')
done()
})
})
test('should be hybrid', function (done) {
var cnt = 0
var promise = execCmd('echo', [
'hello world'
], function (err, res) {
var stdout = res[0]
var code = res[1]
test.ifError(err)
test.equal(code, 0)
test.equal(stdout.trim(), 'hello world')
cnt++
})
promise
.then(function (res) {
var stdout = res[0]
var code = res[1]
test.equal(code, 0)
test.equal(stdout.trim(), 'hello world')
test.equal(cnt, 1)
done()
})
})
test('should pass args to `node fixtures/hello-world.js`', function (done) {
var promise = execCmd('node', [
'./fixtures/hello-world.js', 'hello world'
])
promise
.then(function (res) {
var stdout = res[0]
var code = res[1]
test.equal(code, 0)
test.equal(stdout.trim(), 'hello world')
done()
})
})
test('should expand using PATH_EXT properly', function (done) {
if (process.platform !== 'win32') {
return done()
}
/* istanbul ignore next */
execCmd(path.join(__dirname, 'fixtures/foo.bat'))
.then(function (res) {
var stdout = res[0]
var code = res[1]
test.equal(code, 0)
test.equal(stdout.trim(), 'foo')
done()
})
})
test('should handle multibyte properly', function (done) {
var promise = execCmd('node', [
path.join(__dirname, 'fixtures/multibyte')
])
promise
.then(function (res) {
var stdout = res[0]
var code = res[1]
test.equal(code, 0)
test.equal(stdout, 'こんにちは')
done()
})
})
test('should fail on error code != 0', function (done) {
var promise = execCmd('node', [
path.join(__dirname, 'fixtures/fail')
])
promise
.catch(function (err) {
test.ifError(!err)
test.equal(err instanceof Error, true)
test.equal(err.name, 'CommandError')
done()
})
})