New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Drop support for Node 12 #497
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,6 @@ import process from 'node:process'; | |
import {fileURLToPath} from 'node:url'; | ||
import test from 'ava'; | ||
// The helper module overrides Promise on import so has to be imported before `execa`. | ||
// Can't use top-level await (TLA) + `import(…)` since Node.js 12 doesn't support TLA. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I do not see how a top-level await could be used in this instance, so I just removed the comment. |
||
import {restorePromise} from './helpers/override-promise.js'; | ||
// eslint-disable-next-line import/order | ||
import {execa} from '../index.js'; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,7 +4,6 @@ import {fileURLToPath, pathToFileURL} from 'node:url'; | |
import test from 'ava'; | ||
import isRunning from 'is-running'; | ||
import getNode from 'get-node'; | ||
import semver from 'semver'; | ||
import {execa, execaSync} from '../index.js'; | ||
|
||
process.env.PATH = fileURLToPath(new URL('fixtures', import.meta.url)) + path.delimiter + process.env.PATH; | ||
|
@@ -167,9 +166,7 @@ if (process.platform !== 'win32') { | |
}); | ||
|
||
test('execa() rejects with correct error and doesn\'t throw if running non-executable with input', async t => { | ||
// On Node <12.6.0, `EACCESS` is emitted on `childProcess`. | ||
// On Node >=12.6.0, `EPIPE` is emitted on `childProcess.stdin`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This comment was invalid: |
||
await t.throwsAsync(execa('non-executable.js', {input: 'Hey!'}), {message: /EACCES|EPIPE/}); | ||
await t.throwsAsync(execa('non-executable.js', {input: 'Hey!'}), {message: /EACCES/}); | ||
}); | ||
} | ||
|
||
|
@@ -207,21 +204,19 @@ test('can use `options.cwd` as a string', async t => { | |
t.is(path.toNamespacedPath(stdout), path.toNamespacedPath(cwd)); | ||
}); | ||
|
||
if (semver.satisfies(process.version, '^14.18.0 || >=16.4.0')) { | ||
test('localDir option can be a URL', async t => { | ||
const command = process.platform === 'win32' ? 'echo %PATH%' : 'echo $PATH'; | ||
const {stdout} = await execa(command, {shell: true, preferLocal: true, localDir: pathToFileURL('/test')}); | ||
const envPaths = stdout.split(path.delimiter); | ||
t.true(envPaths.some(envPath => envPath.endsWith('.bin'))); | ||
}); | ||
test('localDir option can be a URL', async t => { | ||
const command = process.platform === 'win32' ? 'echo %PATH%' : 'echo $PATH'; | ||
const {stdout} = await execa(command, {shell: true, preferLocal: true, localDir: pathToFileURL('/test')}); | ||
const envPaths = stdout.split(path.delimiter); | ||
t.true(envPaths.some(envPath => envPath.endsWith('.bin'))); | ||
}); | ||
|
||
test('can use `options.cwd` as a URL', async t => { | ||
const cwd = '/'; | ||
const cwdUrl = pathToFileURL(cwd); | ||
const {stdout} = await execa('node', ['-p', 'process.cwd()'], {cwd: cwdUrl}); | ||
t.is(path.toNamespacedPath(stdout), path.toNamespacedPath(cwd)); | ||
}); | ||
} | ||
test('can use `options.cwd` as a URL', async t => { | ||
const cwd = '/'; | ||
const cwdUrl = pathToFileURL(cwd); | ||
const {stdout} = await execa('node', ['-p', 'process.cwd()'], {cwd: cwdUrl}); | ||
t.is(path.toNamespacedPath(stdout), path.toNamespacedPath(cwd)); | ||
}); | ||
|
||
test('can use `options.shell: true`', async t => { | ||
const {stdout} = await execa('node test/fixtures/noop.js foo', {shell: true}); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would prefer using non-specific minors so it upgrades when new minor versions are out.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed!