File tree Expand file tree Collapse file tree 2 files changed +30
-8
lines changed
Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Original file line number Diff line number Diff 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);
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ const stream = require('stream');
88testSloppyMode();
99testStrictMode();
1010testResetContext();
11+ testResetContextGlobal();
1112testMagicMode();
1213
1314function 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
You can’t perform that action at this time.
0 commit comments