Skip to content

Commit

Permalink
Merge pull request #43 from josh/undef-process
Browse files Browse the repository at this point in the history
Undefine globals, not just shadow
  • Loading branch information
rafaelfranca committed Jun 21, 2016
2 parents 4f2fc87 + 5c6f4a9 commit e57706f
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/execjs/support/jsc_runner.js
Expand Up @@ -2,6 +2,7 @@
}, function(program) {
var output;
try {
delete this.console;
result = program();
if (typeof result == 'undefined' && result !== null) {
print('["ok"]');
Expand Down
13 changes: 12 additions & 1 deletion lib/execjs/support/node_runner.js
@@ -1,10 +1,20 @@
(function(program, execJS) { execJS(program) })(function(global, module, exports, require, console, setTimeout, setInterval, clearTimeout, clearInterval, setImmediate, clearImmediate) { #{source}
(function(program, execJS) { execJS(program) })(function(global, process, module, exports, require, console, setTimeout, setInterval, clearTimeout, clearInterval, setImmediate, clearImmediate) { #{source}
}, function(program) {
var output, print = function(string) {
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 {
Expand All @@ -15,6 +25,7 @@
}
}
} catch (err) {
this.process = __process__;
print(JSON.stringify(['err', '' + err, err.stack]));
}
});
17 changes: 17 additions & 0 deletions test/test_execjs.rb
Expand Up @@ -237,14 +237,24 @@ def test_node_global_is_undefined
assert ExecJS.eval("typeof global == 'undefined'")
end

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
Expand All @@ -254,6 +264,13 @@ def test_timers_are_undefined
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
Expand Down

0 comments on commit e57706f

Please sign in to comment.