Skip to content

Commit

Permalink
repl: don't override all internal repl defaults
Browse files Browse the repository at this point in the history
The createInternalRepl() module accepts an options object as an
argument. However, if one is provided, it overrides all of the
default options. This commit applies the options object to the
defaults, only changing the values that are explicitly set.

PR-URL: #7826
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
cjihrig committed Aug 10, 2016
1 parent 9735acc commit 61e57e0
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 6 deletions.
7 changes: 4 additions & 3 deletions lib/internal/repl.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ const REPL = require('repl');
const path = require('path');
const fs = require('fs');
const os = require('os');
const debug = require('util').debuglog('repl');
const util = require('util');
const debug = util.debuglog('repl');

module.exports = Object.create(REPL);
module.exports.createInternalRepl = createRepl;
Expand All @@ -19,12 +20,12 @@ function createRepl(env, opts, cb) {
cb = opts;
opts = null;
}
opts = opts || {
opts = util._extend({
ignoreUndefined: false,
terminal: process.stdout.isTTY,
useGlobal: true,
breakEvalOnSigint: true
};
}, opts);

if (parseInt(env.NODE_NO_READLINE)) {
opts.terminal = false;
Expand Down
6 changes: 5 additions & 1 deletion test/parallel/test-repl-envvars.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

// Flags: --expose-internals

require('../common');
const common = require('../common');
const stream = require('stream');
const REPL = require('internal/repl');
const assert = require('assert');
Expand Down Expand Up @@ -46,6 +46,10 @@ function run(test) {

REPL.createInternalRepl(env, opts, function(err, repl) {
if (err) throw err;

// The REPL registers 'module' and 'require' globals
common.allowGlobals(repl.context.module, repl.context.require);

assert.equal(expected.terminal, repl.terminal,
'Expected ' + inspect(expected) + ' with ' + inspect(env));
assert.equal(expected.useColors, repl.useColors,
Expand Down
4 changes: 4 additions & 0 deletions test/parallel/test-repl-history-perm.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ const replHistoryPath = path.join(common.tmpDir, '.node_repl_history');
const checkResults = common.mustCall(function(err, r) {
if (err)
throw err;

// The REPL registers 'module' and 'require' globals
common.allowGlobals(r.context.module, r.context.require);

r.input.end();
const stat = fs.statSync(replHistoryPath);
assert.strictEqual(
Expand Down
3 changes: 3 additions & 0 deletions test/parallel/test-repl-persistent-history.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,9 @@ function runTest(assertCleaned) {
throw err;
}

// The REPL registers 'module' and 'require' globals
common.allowGlobals(repl.context.module, repl.context.require);

repl.once('close', () => {
if (repl._flushing) {
repl.once('flushHistory', onClose);
Expand Down
5 changes: 3 additions & 2 deletions test/parallel/test-repl-use-global.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ const stream = require('stream');
const repl = require('internal/repl');
const assert = require('assert');

common.globalCheck = false;

// Array of [useGlobal, expectedResult] pairs
const globalTestCases = [
[false, 'undefined'],
Expand All @@ -20,6 +18,9 @@ const globalTest = (useGlobal, cb, output) => (err, repl) => {
if (err)
return cb(err);

// The REPL registers 'module' and 'require' globals
common.allowGlobals(repl.context.module, repl.context.require);

let str = '';
output.on('data', (data) => (str += data));
global.lunch = 'tacos';
Expand Down

0 comments on commit 61e57e0

Please sign in to comment.