Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80665 views
1
var spawn = require('child_process').spawn;
2
var test = require('tap').test;
3
4
test('dotSlashEmpty', testCmd('./bin.js', []));
5
6
test('dotSlashArgs', testCmd('./bin.js', [ 'a', 'b', 'c' ]));
7
8
test('nodeEmpty', testCmd('node bin.js', []));
9
10
test('nodeArgs', testCmd('node bin.js', [ 'x', 'y', 'z' ]));
11
12
test('whichNodeEmpty', function (t) {
13
var which = spawn('which', ['node']);
14
15
which.stdout.on('data', function (buf) {
16
t.test(
17
testCmd(buf.toString().trim() + ' bin.js', [])
18
);
19
t.end();
20
});
21
22
which.stderr.on('data', function (err) {
23
assert.error(err);
24
t.end();
25
});
26
});
27
28
test('whichNodeArgs', function (t) {
29
var which = spawn('which', ['node']);
30
31
which.stdout.on('data', function (buf) {
32
t.test(
33
testCmd(buf.toString().trim() + ' bin.js', [ 'q', 'r' ])
34
);
35
t.end();
36
});
37
38
which.stderr.on('data', function (err) {
39
t.error(err);
40
t.end();
41
});
42
});
43
44
function testCmd (cmd, args) {
45
46
return function (t) {
47
var to = setTimeout(function () {
48
assert.fail('Never got stdout data.')
49
}, 5000);
50
51
var oldDir = process.cwd();
52
process.chdir(__dirname + '/_');
53
54
var cmds = cmd.split(' ');
55
56
var bin = spawn(cmds[0], cmds.slice(1).concat(args.map(String)));
57
process.chdir(oldDir);
58
59
bin.stderr.on('data', function (err) {
60
t.error(err);
61
t.end();
62
});
63
64
bin.stdout.on('data', function (buf) {
65
clearTimeout(to);
66
var _ = JSON.parse(buf.toString());
67
t.same(_.map(String), args.map(String));
68
t.end();
69
});
70
};
71
}
72
73