Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fc2db50

Browse filesBrowse files
TrottItalo A. Casas
authored andcommitted
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>
1 parent 9f6d1f6 commit fc2db50
Copy full SHA for fc2db50

File tree

Expand file treeCollapse file tree

2 files changed

+30
-8
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

2 files changed

+30
-8
lines changed
Open diff view settings
Collapse file

‎lib/repl.js‎

Copy file name to clipboardExpand all lines: lib/repl.js
+5-6Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -721,9 +721,7 @@ REPLServer.prototype.createContext = function() {
721721

722722
Object.defineProperty(context, '_', {
723723
configurable: true,
724-
get: () => {
725-
return this.last;
726-
},
724+
get: () => this.last,
727725
set: (value) => {
728726
this.last = value;
729727
if (!this.underscoreAssigned) {
@@ -1265,9 +1263,10 @@ function defineDefaultCommands(repl) {
12651263
help: 'Print this help message',
12661264
action: function() {
12671265
const names = Object.keys(this.commands).sort();
1268-
const longestNameLength = names.reduce((max, name) => {
1269-
return Math.max(max, name.length);
1270-
}, 0);
1266+
const longestNameLength = names.reduce(
1267+
(max, name) => Math.max(max, name.length),
1268+
0
1269+
);
12711270
names.forEach((name) => {
12721271
const cmd = this.commands[name];
12731272
const spaces = ' '.repeat(longestNameLength - name.length + 3);
Collapse file

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

Copy file name to clipboardExpand all lines: test/parallel/test-repl-underscore.js
+25-2Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const stream = require('stream');
88
testSloppyMode();
99
testStrictMode();
1010
testResetContext();
11+
testResetContextGlobal();
1112
testMagicMode();
1213

1314
function testSloppyMode() {
@@ -131,7 +132,28 @@ function testResetContext() {
131132
]);
132133
}
133134

134-
function initRepl(mode) {
135+
function testResetContextGlobal() {
136+
const r = initRepl(repl.REPL_MODE_STRICT, true);
137+
138+
r.write(`_ = 10; // explicitly set to 10
139+
_; // 10 from user input
140+
.clear // No output because useGlobal is true
141+
_; // remains 10
142+
`);
143+
144+
assertOutput(r.output, [
145+
'Expression assignment to _ now disabled.',
146+
'10',
147+
'10',
148+
'10',
149+
]);
150+
151+
// delete globals leaked by REPL when `useGlobal` is `true`
152+
delete global.module;
153+
delete global.require;
154+
}
155+
156+
function initRepl(mode, useGlobal) {
135157
const inputStream = new stream.PassThrough();
136158
const outputStream = new stream.PassThrough();
137159
outputStream.accum = '';
@@ -146,7 +168,8 @@ function initRepl(mode) {
146168
useColors: false,
147169
terminal: false,
148170
prompt: '',
149-
replMode: mode
171+
replMode: mode,
172+
useGlobal: useGlobal
150173
});
151174
}
152175

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.