mirror of
https://github.com/rails/execjs
synced 2023-03-27 23:21:20 -04:00
Merge pull request #43 from josh/undef-process
Undefine globals, not just shadow
This commit is contained in:
commit
e57706ff06
3 changed files with 30 additions and 1 deletions
|
@ -2,6 +2,7 @@
|
||||||
}, function(program) {
|
}, function(program) {
|
||||||
var output;
|
var output;
|
||||||
try {
|
try {
|
||||||
|
delete this.console;
|
||||||
result = program();
|
result = program();
|
||||||
if (typeof result == 'undefined' && result !== null) {
|
if (typeof result == 'undefined' && result !== null) {
|
||||||
print('["ok"]');
|
print('["ok"]');
|
||||||
|
|
|
@ -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) {
|
}, function(program) {
|
||||||
var output, print = function(string) {
|
var output, print = function(string) {
|
||||||
process.stdout.write('' + string);
|
process.stdout.write('' + string);
|
||||||
};
|
};
|
||||||
try {
|
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();
|
result = program();
|
||||||
|
this.process = __process__;
|
||||||
if (typeof result == 'undefined' && result !== null) {
|
if (typeof result == 'undefined' && result !== null) {
|
||||||
print('["ok"]');
|
print('["ok"]');
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,6 +25,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
this.process = __process__;
|
||||||
print(JSON.stringify(['err', '' + err, err.stack]));
|
print(JSON.stringify(['err', '' + err, err.stack]));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -237,14 +237,24 @@ class TestExecJS < Test
|
||||||
assert ExecJS.eval("typeof global == 'undefined'")
|
assert ExecJS.eval("typeof global == 'undefined'")
|
||||||
end
|
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
|
def test_commonjs_vars_are_undefined
|
||||||
assert ExecJS.eval("typeof module == 'undefined'")
|
assert ExecJS.eval("typeof module == 'undefined'")
|
||||||
assert ExecJS.eval("typeof exports == 'undefined'")
|
assert ExecJS.eval("typeof exports == 'undefined'")
|
||||||
assert ExecJS.eval("typeof require == '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
|
end
|
||||||
|
|
||||||
def test_console_is_undefined
|
def test_console_is_undefined
|
||||||
assert ExecJS.eval("typeof console == 'undefined'")
|
assert ExecJS.eval("typeof console == 'undefined'")
|
||||||
|
refute ExecJS.eval("'console' in this")
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_timers_are_undefined
|
def test_timers_are_undefined
|
||||||
|
@ -254,6 +264,13 @@ class TestExecJS < Test
|
||||||
assert ExecJS.eval("typeof clearInterval == 'undefined'")
|
assert ExecJS.eval("typeof clearInterval == 'undefined'")
|
||||||
assert ExecJS.eval("typeof setImmediate == 'undefined'")
|
assert ExecJS.eval("typeof setImmediate == 'undefined'")
|
||||||
assert ExecJS.eval("typeof clearImmediate == '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
|
end
|
||||||
|
|
||||||
def test_compile_large_scripts
|
def test_compile_large_scripts
|
||||||
|
|
Loading…
Reference in a new issue