diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /js/src/jit-test/tests/basic/withSourceHook.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/jit-test/tests/basic/withSourceHook.js')
-rw-r--r-- | js/src/jit-test/tests/basic/withSourceHook.js | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/basic/withSourceHook.js b/js/src/jit-test/tests/basic/withSourceHook.js new file mode 100644 index 000000000..460c4efe1 --- /dev/null +++ b/js/src/jit-test/tests/basic/withSourceHook.js @@ -0,0 +1,56 @@ +// Check that withSourceHook passes URLs, propagates exceptions, and +// properly restores the original source hooks. + +load(libdir + 'asserts.js'); + +// withSourceHook isn't defined if you pass the shell the --fuzzing-safe +// option. Skip this test silently, to avoid spurious failures. +if (typeof withSourceHook != 'function') + quit(0); + +var log = ''; + +// Establish an outermost source hook. +withSourceHook(function (url) { + log += 'o'; + assertEq(url, 'outer'); + return '(function outer() { 3; })'; +}, function () { + log += 'O'; + // Verify that withSourceHook propagates exceptions thrown by source hooks. + assertThrowsValue(function () { + // Establish a source hook that throws. + withSourceHook(function (url) { + log += 'm'; + assertEq(url, 'middle'); + throw 'borborygmus'; // middle + }, function () { + log += 'M'; + // Establish an innermost source hook that does not throw, + // and verify that it is in force. + assertEq(withSourceHook(function (url) { + log += 'i'; + assertEq(url, 'inner'); + return '(function inner() { 1; })'; + }, function () { + log += 'I'; + return evaluate('(function inner() { 2; })', + { fileName: 'inner', sourceIsLazy: true }) + .toSource(); + }), + '(function inner() { 1; })'); + // Verify that the source hook that throws has been reinstated. + evaluate('(function middle() { })', + { fileName: 'middle', sourceIsLazy: true }) + .toSource(); + }); + }, 'borborygmus'); + + // Verify that the outermost source hook has been restored. + assertEq(evaluate('(function outer() { 4; })', + { fileName: 'outer', sourceIsLazy: true }) + .toSource(), + '(function outer() { 3; })'); +}); + +assertEq(log, 'OMIimo'); |