Navigation Menu

Skip to content

Commit

Permalink
Fix errors being thrown when detached: true or cleanup: false is …
Browse files Browse the repository at this point in the history
…used (#360)

# Conflicts:
#	test/stream.js
  • Loading branch information
ehmicky authored and sindresorhus committed Aug 15, 2019
1 parent 0cdc62c commit 211febe
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 9 deletions.
2 changes: 1 addition & 1 deletion lib/kill.js
Expand Up @@ -85,7 +85,7 @@ const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise
// `cleanup` option handling
const setExitHandler = (spawned, {cleanup, detached}, timedPromise) => {
if (!cleanup || detached) {
return;
return timedPromise;
}

const removeExitHandler = onExit(() => {
Expand Down
12 changes: 11 additions & 1 deletion test/fixtures/sub-process-exit
Expand Up @@ -4,4 +4,14 @@ const execa = require('../..');

const cleanup = process.argv[2] === 'true';
const detached = process.argv[3] === 'true';
execa('node', ['./test/fixtures/noop'], {cleanup, detached});

const runChild = async () => {
try {
await execa('node', ['./test/fixtures/noop'], {cleanup, detached});
} catch (error) {
console.error(error);
process.exit(1);
}
};

runChild();
12 changes: 5 additions & 7 deletions test/test.js
Expand Up @@ -74,24 +74,22 @@ test('stripFinalNewline in sync mode on failure', t => {
});

test('preferLocal: true', async t => {
await t.notThrowsAsync(execa('ava', ['--version'], {preferLocal: true, env: {PATH: ''}}));
await t.notThrowsAsync(execa('ava', ['--version'], {preferLocal: true, env: {Path: '', PATH: ''}}));
});

test('preferLocal: false', async t => {
await t.throwsAsync(execa('ava', ['--version'], {preferLocal: false, env: {PATH: ''}}), ENOENT_REGEXP);
await t.throwsAsync(execa('ava', ['--version'], {preferLocal: false, env: {Path: '', PATH: ''}}), ENOENT_REGEXP);
});

test('preferLocal: undefined', async t => {
await t.throwsAsync(execa('ava', ['--version'], {env: {PATH: ''}}), ENOENT_REGEXP);
await t.throwsAsync(execa('ava', ['--version'], {env: {Path: '', PATH: ''}}), ENOENT_REGEXP);
});

test('localDir option', async t => {
const command = process.platform === 'win32' ? 'echo %PATH%' : 'echo $PATH';
const {stdout} = await execa(command, {shell: true, preferLocal: true, localDir: '/test'});
const envPaths = stdout.split(path.delimiter).map(envPath =>
envPath.replace(/\\/g, '/').replace(/^[^/]+/, '')
);
t.true(envPaths.some(envPath => envPath === '/test/node_modules/.bin'));
const envPaths = stdout.split(path.delimiter);
t.true(envPaths.some(envPath => envPath.endsWith('.bin')));
});

test('stdin errors are handled', async t => {
Expand Down

0 comments on commit 211febe

Please sign in to comment.