Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

setup({ allow_uncaught_exception:true });
[
1,
new TypeError(),
undefined
].forEach(throwable => {
test(t => {
let happened = false;
self.addEventListener("error", t.step_func(e => {
assert_true(e.message !== "");
assert_equals(e.filename, new URL("reporterror.any.js", location.href).href);
assert_greater_than(e.lineno, 0);
assert_greater_than(e.colno, 0);
assert_equals(e.error, throwable);
happened = true;
}), { once:true });
self.reportError(throwable);
assert_true(happened);
}, `self.reportError(${throwable})`);
});
test(() => {
assert_throws_js(TypeError, () => self.reportError());
}, `self.reportError() (without arguments) throws`);
test(() => {
let invoked = false;
self.reportError({
get name() {
invoked = true;
assert_unreached('get name')
},
get message() {
invoked = true;
assert_unreached('get message');
},
get fileName() {
invoked = true;
assert_unreached('get fileName');
},
get lineNumber() {
invoked = true;
assert_unreached('get lineNumber');
}
});
assert_false(invoked);
}, `self.reportError() doesn't invoke getters`);