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 authored and MylesBorins committed Dec 13, 2016
1 parent 02e8187 commit 698bf2e
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 4 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,11 +20,11 @@ function createRepl(env, opts, cb) {
cb = opts;
opts = null;
}
opts = opts || {
opts = util._extend({
ignoreUndefined: false,
terminal: process.stdout.isTTY,
useGlobal: 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
6 changes: 6 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,12 @@ function runTest(assertCleaned) {
throw err;
}

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

repl.once('close', () => {
if (repl._flushing) {
repl.once('flushHistory', onClose);
Expand Down

0 comments on commit 698bf2e

Please sign in to comment.