repl: do not run --eval code if there is none
`getOptionValue('--eval')` always returns a string, so it is never loose-equal to `null`. Running eval makes some modifications to the global object, including setting `module` to a different value, which we want to avoid if possible. Refs: https://github.com/nodejs/node/pull/27278 PR-URL: https://github.com/nodejs/node/pull/27587 Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: John-David Dalton <john.david.dalton@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
1d31c6833d
commit
f2a48c8245
@ -46,10 +46,9 @@ cliRepl.createInternalRepl(process.env, (err, repl) => {
|
|||||||
|
|
||||||
// If user passed '-e' or '--eval' along with `-i` or `--interactive`,
|
// If user passed '-e' or '--eval' along with `-i` or `--interactive`,
|
||||||
// evaluate the code in the current context.
|
// evaluate the code in the current context.
|
||||||
const source = getOptionValue('--eval');
|
if (getOptionValue('[has_eval_string]')) {
|
||||||
if (source != null) {
|
|
||||||
evalScript('[eval]',
|
evalScript('[eval]',
|
||||||
source,
|
getOptionValue('--eval'),
|
||||||
getOptionValue('--inspect-brk'),
|
getOptionValue('--inspect-brk'),
|
||||||
getOptionValue('--print'));
|
getOptionValue('--print'));
|
||||||
}
|
}
|
||||||
|
22
test/parallel/test-repl-cli-eval.js
Normal file
22
test/parallel/test-repl-cli-eval.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
'use strict';
|
||||||
|
const common = require('../common');
|
||||||
|
const child_process = require('child_process');
|
||||||
|
const assert = require('assert');
|
||||||
|
|
||||||
|
// Regression test for https://github.com/nodejs/node/issues/27575:
|
||||||
|
// module.id === '<repl>' in the REPL.
|
||||||
|
|
||||||
|
for (const extraFlags of [[], ['-e', '42']]) {
|
||||||
|
const flags = ['--interactive', ...extraFlags];
|
||||||
|
const proc = child_process.spawn(process.execPath, flags, {
|
||||||
|
stdio: ['pipe', 'pipe', 'inherit']
|
||||||
|
});
|
||||||
|
proc.stdin.write('module.id\n.exit\n');
|
||||||
|
|
||||||
|
let stdout = '';
|
||||||
|
proc.stdout.setEncoding('utf8');
|
||||||
|
proc.stdout.on('data', (chunk) => stdout += chunk);
|
||||||
|
proc.stdout.on('end', common.mustCall(() => {
|
||||||
|
assert(stdout.includes('<repl>'), `stdout: ${stdout}`);
|
||||||
|
}));
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user