Permalink
Browse files

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: #10777
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information...
Trott committed Jan 12, 2017
1 parent 34bf31e commit 338d09d25b380366b0263ac4d90bcc2b8a1d4ac8
Showing with 30 additions and 8 deletions.
  1. +5 −6 lib/repl.js
  2. +25 −2 test/parallel/test-repl-underscore.js
View
@@ -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) {
@@ -1266,9 +1264,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);
@@ -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
});
}

0 comments on commit 338d09d

Please sign in to comment.