Skip to content

Commit d6a7d7d

Browse files
committed
fix premature exit of test process on windows
1 parent 5654fa4 commit d6a7d7d

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

packages/test-my-cli/operations/exec.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ exports.create = (command) => {
6363
)),
6464
withTime(({index, root, caller, cwd, env, meta}, {onActivity}) =>
6565
new Promise((resolve) => {
66-
let stdout = '', stderr = '', interval = 0;
66+
let stdout = '', stderr = '', interval = 0, caughtError = null;
6767
const child = spawn(cmd, args, {cwd, env, shell: true, stdio: 'pipe'});
6868
addOrRemove(true);
6969

@@ -72,8 +72,8 @@ exports.create = (command) => {
7272
const field = isAdd ? 'addListener' : 'removeListener';
7373
child.stdout[field]('data', onStdout);
7474
child.stderr[field]('data', onStderr);
75-
child.on('exit', onExit);
76-
child.on('error', onError);
75+
child[field]('error', onError);
76+
child[field]('close', onClose);
7777

7878
if (isAdd) {
7979
child.stdout.setEncoding('utf8');
@@ -92,14 +92,16 @@ exports.create = (command) => {
9292
stderr += data;
9393
}
9494

95-
function onExit(code) {
96-
addOrRemove(false);
97-
resolve({index, root, caller, cwd, env, meta, code, stdout, stderr});
95+
function onError(error) {
96+
caughtError = error;
9897
}
9998

100-
function onError(error) {
99+
function onClose(code) {
101100
addOrRemove(false);
102-
resolve({index, root, caller, cwd, env, meta, code: 1, stdout, stderr: error.toString()});
101+
resolve({
102+
index, root, caller, cwd, env, meta, code, stdout,
103+
stderr: caughtError ? caughtError.toString() : stderr
104+
});
103105
}
104106
})
105107
),

test/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const tape = require('blue-tape');
1010
const {init, layer, cwd, fs, env, meta, exec} = require('test-my-cli');
1111
const {assign} = Object;
1212

13-
const {assertExitCodeZero, bail} = require('./lib/assert');
13+
const {assertExitCodeZero, bail, saveOutput} = require('./lib/assert');
1414
const {testBase} = require('./cases/common/test');
1515

1616
// tests are located in resolve-url-loader package which might differ from package under test
@@ -88,9 +88,11 @@ filterTests()
8888
PATH: dirname(process.execPath)
8989
}),
9090
exec('enforce-node-version'),
91+
saveOutput('enforce-node-version'),
9192
assertExitCodeZero('enforce node version'),
9293
bail,
9394
exec('npm install'),
95+
saveOutput('npm-install'),
9496
assertExitCodeZero('npm install'),
9597
bail
9698
)

test/lib/assert/util.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
const {join, relative} = require('path');
44

55
exports.subdir = ({root, cwd, env: {OUTPUT}}) =>
6-
relative(root, join(cwd, OUTPUT));
6+
relative(root, join(cwd, OUTPUT || '.'));

0 commit comments

Comments
 (0)