Browse Source

test,repl: add coverage for repl .clear+useGlobal

Add a test to cover situation where REPL is initialized with `useGlobal`
set to `true` and `.clear` is called. This adds coverage for code in
repl.js that is not currently covered.

Includes minor refactor of rocket functions in repl.js for concision.

PR-URL: https://github.com/nodejs/node/pull/10777
Reviewed-By: James M Snell <jasnell@gmail.com>
v7.x
Rich Trott 8 years ago
committed by Italo A. Casas
parent
commit
fc2db50021
  1. 11
      lib/repl.js
  2. 27
      test/parallel/test-repl-underscore.js

11
lib/repl.js

@ -721,9 +721,7 @@ REPLServer.prototype.createContext = function() {
Object.defineProperty(context, '_', {
configurable: true,
get: () => {
return this.last;
},
get: () => this.last,
set: (value) => {
this.last = value;
if (!this.underscoreAssigned) {
@ -1265,9 +1263,10 @@ function defineDefaultCommands(repl) {
help: 'Print this help message',
action: function() {
const names = Object.keys(this.commands).sort();
const longestNameLength = names.reduce((max, name) => {
return Math.max(max, name.length);
}, 0);
const longestNameLength = names.reduce(
(max, name) => Math.max(max, name.length),
0
);
names.forEach((name) => {
const cmd = this.commands[name];
const spaces = ' '.repeat(longestNameLength - name.length + 3);

27
test/parallel/test-repl-underscore.js

@ -8,6 +8,7 @@ const stream = require('stream');
testSloppyMode();
testStrictMode();
testResetContext();
testResetContextGlobal();
testMagicMode();
function testSloppyMode() {
@ -131,7 +132,28 @@ function testResetContext() {
]);
}
function initRepl(mode) {
function testResetContextGlobal() {
const r = initRepl(repl.REPL_MODE_STRICT, true);
r.write(`_ = 10; // explicitly set to 10
_; // 10 from user input
.clear // No output because useGlobal is true
_; // remains 10
`);
assertOutput(r.output, [
'Expression assignment to _ now disabled.',
'10',
'10',
'10',
]);
// delete globals leaked by REPL when `useGlobal` is `true`
delete global.module;
delete global.require;
}
function initRepl(mode, useGlobal) {
const inputStream = new stream.PassThrough();
const outputStream = new stream.PassThrough();
outputStream.accum = '';
@ -146,7 +168,8 @@ function initRepl(mode) {
useColors: false,
terminal: false,
prompt: '',
replMode: mode
replMode: mode,
useGlobal: useGlobal
});
}

Loading…
Cancel
Save