-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathspawn.tap.js
100 lines (84 loc) · 2.36 KB
/
spawn.tap.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
var test = require('tap').test
, assert = require('assert')
;
if (!global.setImmediate) global.setImmediate = setTimeout;
if (!process.addAsyncListener) require('../index.js');
var childProcess = require('child_process')
, exec = childProcess.exec
, execFile = childProcess.execFile
, spawn = childProcess.spawn
;
test('ChildProcess', function (t) {
t.plan(3);
t.test('exec', function (t) {
t.plan(3);
var active
, cntr = 0
;
process.addAsyncListener(
{
create : function () { return { val : ++cntr }; },
before : function (context, data) { active = data.val; },
after : function () { active = null; }
}
);
t.equal(active, undefined,
'starts in initial context');
process.nextTick(function () {
t.equal(active, 1,
'after tick: 1st context');
var child = exec('node --version');
child.on('exit', function (code) {
t.ok(active >= 2,
'after exec#exit: entered additional contexts');
})
});
});
t.test('execFile', function (t) {
t.plan(3);
var active
, cntr = 0
;
process.addAsyncListener(
{
create : function () { return { val : ++cntr }; },
before : function (context, data) { active = data.val; },
after : function () { active = null; }
}
);
t.equal(active, undefined,
'starts in initial context');
process.nextTick(function () {
t.equal(active, 1,
'after nextTick: 1st context');
execFile('node', ['--version'], function (err, code) {
t.ok(active >= 2,
'after execFile: entered additional contexts');
});
});
});
t.test('spawn', function (t) {
t.plan(3);
var active
, cntr = 0
;
process.addAsyncListener(
{
create : function () { return { val : ++cntr }; },
before : function (context, data) { active = data.val; },
after : function () { active = null; }
}
);
t.equal(active, undefined,
'starts in initial context');
process.nextTick(function () {
t.equal(active, 1,
'after tick: 1st context');
var child = spawn('node', ['--version']);
child.on('exit', function (code) {
t.ok(active >= 2,
'after spawn#exit: entered additional contexts');
})
});
});
});