diff --git a/src/node_script.cc b/src/node_script.cc index 97e58c9e62a8f5..78136dd791de57 100644 --- a/src/node_script.cc +++ b/src/node_script.cc @@ -166,7 +166,7 @@ Handle node::Script::EvalMachine(const Arguments& args) { } } if (result.IsEmpty()) { - result = ThrowException(try_catch.Exception()); + return try_catch.ReThrow(); } else if (cFlag == newContext) { // success! copy changes back onto the sandbox object. keys = context->Global()->GetPropertyNames(); diff --git a/test/message/testcfg.py b/test/message/testcfg.py index e41803df8ce404..3f00ebf7fa2285 100644 --- a/test/message/testcfg.py +++ b/test/message/testcfg.py @@ -63,7 +63,7 @@ def IsFailureOutput(self, output): pattern = '^%s$' % pattern patterns.append(pattern) # Compare actual output with the expected - raw_lines = output.stdout.split('\n') + raw_lines = (output.stdout + output.stderr).split('\n') outlines = [ s for s in raw_lines if not self.IgnoreLine(s) ] if len(outlines) != len(patterns): return True diff --git a/test/message/undefined_reference_in_new_context.js b/test/message/undefined_reference_in_new_context.js new file mode 100644 index 00000000000000..7430869f5c4f2e --- /dev/null +++ b/test/message/undefined_reference_in_new_context.js @@ -0,0 +1,11 @@ +require('../common'); + +error('before'); + +var Script = process.binding('evals').Script; + +// undefined reference +script = new Script('foo.bar = 5;'); +script.runInNewContext(); + +error('after'); diff --git a/test/message/undefined_reference_in_new_context.out b/test/message/undefined_reference_in_new_context.out new file mode 100644 index 00000000000000..f5fba24dc263bf --- /dev/null +++ b/test/message/undefined_reference_in_new_context.out @@ -0,0 +1,14 @@ +before + + +/Users/ryan/projects/node/test/message/undefined_reference_in_new_context.js:9 +script.runInNewContext(); + ^ +ReferenceError: foo is not defined + at evalmachine.:1:1 + at Object. (/Users/ryan/projects/node/test/message/undefined_reference_in_new_context.js:9:8) + at Module._compile (module:384:23) + at Module._loadScriptSync (module:393:8) + at Module.loadSync (module:296:10) + at Object.runMain (module:447:22) + at node.js:208:10 diff --git a/test/simple/test-script-new.js b/test/simple/test-script-new.js index f95258f3eacfb3..a2011e688eb806 100644 --- a/test/simple/test-script-new.js +++ b/test/simple/test-script-new.js @@ -15,6 +15,22 @@ assert.throws(function() { script.runInNewContext(); }); + + +debug('undefined reference'); +var error; +script = new Script('foo.bar = 5;'); +try { + script.runInNewContext(); +} catch (e) { + error = e; +} +assert.ok(error); +assert.ok(error.message.indexOf('not defined') >= 0); + +debug('error.message: ' + error.message); + + hello = 5; script = new Script('hello = 2'); script.runInNewContext();