mirror of https://github.com/pyodide/pyodide.git
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
Error.stackTraceLimit = Infinity;
|
|
|
|
// Fix globalThis is messed up in firefox see facebook/react#16606.
|
|
// Replace it with window.
|
|
globalThis.globalThis = globalThis.window || globalThis;
|
|
|
|
globalThis.sleep = function (s) {
|
|
return new Promise((resolve) => setTimeout(resolve, s));
|
|
};
|
|
|
|
globalThis.assert = function (cb, message = "") {
|
|
if (message !== "") {
|
|
message = "\n" + message;
|
|
}
|
|
if (cb() !== true) {
|
|
throw new Error(
|
|
`Assertion failed: ${cb.toString().slice(6)}${message}`
|
|
);
|
|
}
|
|
};
|
|
|
|
globalThis.assertAsync = async function (cb, message = "") {
|
|
if (message !== "") {
|
|
message = "\n" + message;
|
|
}
|
|
if ((await cb()) !== true) {
|
|
throw new Error(
|
|
`Assertion failed: ${cb.toString().slice(12)}${message}`
|
|
);
|
|
}
|
|
};
|
|
|
|
function checkError(err, errname, pattern, pat_str, thiscallstr) {
|
|
if (typeof pattern === "string") {
|
|
pattern = new RegExp(pattern);
|
|
}
|
|
if (!err) {
|
|
throw new Error(`${thiscallstr} failed, no error thrown`);
|
|
}
|
|
if (err.constructor.name !== errname) {
|
|
throw new Error(
|
|
`${thiscallstr} failed, expected error ` +
|
|
`of type '${errname}' got type '${err.constructor.name}'`
|
|
);
|
|
}
|
|
if (!pattern.test(err.message)) {
|
|
throw new Error(
|
|
`${thiscallstr} failed, expected error ` +
|
|
`message to match pattern ${pat_str} got:\n${err.message}`
|
|
);
|
|
}
|
|
}
|
|
|
|
globalThis.assertThrows = function (cb, errname, pattern) {
|
|
let pat_str = typeof pattern === "string" ? `"${pattern}"` : `${pattern}`;
|
|
let thiscallstr = `assertThrows(${cb.toString()}, "${errname}", ${pat_str})`;
|
|
let err = undefined;
|
|
try {
|
|
cb();
|
|
} catch (e) {
|
|
err = e;
|
|
}
|
|
checkError(err, errname, pattern, pat_str, thiscallstr);
|
|
};
|
|
|
|
globalThis.assertThrowsAsync = async function (cb, errname, pattern) {
|
|
let pat_str = typeof pattern === "string" ? `"${pattern}"` : `${pattern}`;
|
|
let thiscallstr = `assertThrowsAsync(${cb.toString()}, "${errname}", ${pat_str})`;
|
|
let err = undefined;
|
|
try {
|
|
await cb();
|
|
} catch (e) {
|
|
err = e;
|
|
}
|
|
checkError(err, errname, pattern, pat_str, thiscallstr);
|
|
};
|