From b0be19c73ded5f20c2c86c8e546558e09da4e2a5 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 5 Jun 2016 16:03:21 -0700 Subject: [PATCH] Remove process and other node globals from `this` --- lib/execjs/support/node_runner.js | 11 +++++++++++ test/test_execjs.rb | 13 +++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lib/execjs/support/node_runner.js b/lib/execjs/support/node_runner.js index 3dc4757..2987d9f 100644 --- a/lib/execjs/support/node_runner.js +++ b/lib/execjs/support/node_runner.js @@ -4,7 +4,17 @@ process.stdout.write('' + string); }; try { + var __process__ = process; + delete this.process; + delete this.console; + delete this.setTimeout; + delete this.setInterval; + delete this.clearTimeout; + delete this.clearInterval; + delete this.setImmediate; + delete this.clearImmediate; result = program(); + this.process = __process__; if (typeof result == 'undefined' && result !== null) { print('["ok"]'); } else { @@ -15,6 +25,7 @@ } } } catch (err) { + this.process = __process__; print(JSON.stringify(['err', '' + err, err.stack])); } }); diff --git a/test/test_execjs.rb b/test/test_execjs.rb index 061be48..0ee411f 100644 --- a/test/test_execjs.rb +++ b/test/test_execjs.rb @@ -239,16 +239,22 @@ class TestExecJS < Test def test_node_process_is_undefined assert ExecJS.eval("typeof process == 'undefined'") + refute ExecJS.eval("'process' in this") end def test_commonjs_vars_are_undefined assert ExecJS.eval("typeof module == 'undefined'") assert ExecJS.eval("typeof exports == 'undefined'") assert ExecJS.eval("typeof require == 'undefined'") + + refute ExecJS.eval("'module' in this") + refute ExecJS.eval("'exports' in this") + refute ExecJS.eval("'require' in this") end def test_console_is_undefined assert ExecJS.eval("typeof console == 'undefined'") + refute ExecJS.eval("'console' in this") end def test_timers_are_undefined @@ -258,6 +264,13 @@ class TestExecJS < Test assert ExecJS.eval("typeof clearInterval == 'undefined'") assert ExecJS.eval("typeof setImmediate == 'undefined'") assert ExecJS.eval("typeof clearImmediate == 'undefined'") + + refute ExecJS.eval("'setTimeout' in this") + refute ExecJS.eval("'setInterval' in this") + refute ExecJS.eval("'clearTimeout' in this") + refute ExecJS.eval("'clearInterval' in this") + refute ExecJS.eval("'setImmediate' in this") + refute ExecJS.eval("'clearImmediate' in this") end def test_compile_large_scripts