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 @@ -722,9 +722,7 @@ REPLServer.prototype.createContext = function() {
722722
723723 Object . defineProperty ( context , '_' , {
724724 configurable : true ,
725- get : ( ) => {
726- return this . last ;
727- } ,
725+ get : ( ) => this . last ,
728726 set : ( value ) => {
729727 this . last = value ;
730728 if ( ! this . underscoreAssigned ) {
@@ -1266,9 +1264,10 @@ function defineDefaultCommands(repl) {
12661264 help : 'Print this help message' ,
12671265 action : function ( ) {
12681266 const names = Object . keys ( this . commands ) . sort ( ) ;
1269- const longestNameLength = names . reduce ( ( max , name ) => {
1270- return Math . max ( max , name . length ) ;
1271- } , 0 ) ;
1267+ const longestNameLength = names . reduce (
1268+ ( max , name ) => Math . max ( max , name . length ) ,
1269+ 0
1270+ ) ;
12721271 names . forEach ( ( name ) => {
12731272 const cmd = this . commands [ name ] ;
12741273 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