mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 01:21:03 +01:00
45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
/**
|
|
* Tests the exception handling behavior of the load() function across nested calls.
|
|
*/
|
|
(function() {
|
|
"use strict";
|
|
|
|
let isMain = true;
|
|
|
|
if (TestData.hasOwnProperty("loadDepth")) {
|
|
isMain = false;
|
|
++TestData.loadDepth;
|
|
} else {
|
|
TestData.loadDepth = 0;
|
|
TestData.loadErrors = [];
|
|
}
|
|
|
|
if (TestData.loadDepth >= 3) {
|
|
throw new Error("Intentionally thrown");
|
|
}
|
|
|
|
try {
|
|
load("jstests/noPassthrough/shell_load_file.js");
|
|
} catch (e) {
|
|
TestData.loadErrors.push(e);
|
|
|
|
if (!isMain) {
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
assert(isMain,
|
|
"only the root caller of load() needs to check the generated JavaScript exceptions");
|
|
|
|
for (let i = 0; i < TestData.loadErrors.length; ++i) {
|
|
const error = TestData.loadErrors[i];
|
|
assert.eq("error loading js file: jstests/noPassthrough/shell_load_file.js", error.message);
|
|
assert(
|
|
/@jstests\/noPassthrough\/shell_load_file.js:/.test(error.stack) ||
|
|
/@jstests\\noPassthrough\\shell_load_file.js:/.test(error.stack),
|
|
() =>
|
|
"JavaScript stacktrace from load() didn't include file paths (AKA stack frames): " +
|
|
error.stack);
|
|
}
|
|
})();
|