Bug 996060 Part 4 - Add mochitest for console stacks from non-exception errors.

--HG--
extra : rebase_source : fff3ed9c883fc6677fd478b80364863ee3e9fc48
This commit is contained in:
Brian Hackett 2019-04-07 11:45:04 -10:00
parent e41c2071ac
commit ea3a5e2582
4 changed files with 151 additions and 6 deletions

View File

@ -202,8 +202,30 @@ stubPreparedMessages.set(`throw ""`, new ConsoleMessage({
"category": "content javascript",
"messageText": "uncaught exception: ",
"parameters": null,
"repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: \",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null,\"private\":false,\"stacktrace\":null}",
"stacktrace": null,
"repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: \",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null,\"private\":false,\"stacktrace\":[{\"filename\":\"http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html\",\"sourceId\":\"server1.conn0.child1/source24\",\"lineNumber\":1,\"columnNumber\":1,\"functionName\":null},{\"filename\":\"resource://testing-common/content-task.js line 59 > eval\",\"sourceId\":null,\"lineNumber\":7,\"columnNumber\":31,\"functionName\":null},{\"filename\":\"resource://testing-common/content-task.js\",\"sourceId\":null,\"lineNumber\":60,\"columnNumber\":29,\"functionName\":null}]}",
"stacktrace": [
{
"filename": "http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html",
"sourceId": "server1.conn0.child1/source24",
"lineNumber": 1,
"columnNumber": 1,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js line 59 > eval",
"sourceId": null,
"lineNumber": 7,
"columnNumber": 31,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js",
"sourceId": null,
"lineNumber": 60,
"columnNumber": 29,
"functionName": null
}
],
"frame": null,
"groupId": null,
"errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
@ -226,8 +248,30 @@ stubPreparedMessages.set(`throw "tomato"`, new ConsoleMessage({
"category": "content javascript",
"messageText": "uncaught exception: tomato",
"parameters": null,
"repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: tomato\",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null,\"private\":false,\"stacktrace\":null}",
"stacktrace": null,
"repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: tomato\",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null,\"private\":false,\"stacktrace\":[{\"filename\":\"http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html\",\"sourceId\":\"server1.conn0.child1/source24\",\"lineNumber\":1,\"columnNumber\":1,\"functionName\":null},{\"filename\":\"resource://testing-common/content-task.js line 59 > eval\",\"sourceId\":null,\"lineNumber\":7,\"columnNumber\":31,\"functionName\":null},{\"filename\":\"resource://testing-common/content-task.js\",\"sourceId\":null,\"lineNumber\":60,\"columnNumber\":29,\"functionName\":null}]}",
"stacktrace": [
{
"filename": "http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html",
"sourceId": "server1.conn0.child1/source24",
"lineNumber": 1,
"columnNumber": 1,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js line 59 > eval",
"sourceId": null,
"lineNumber": 7,
"columnNumber": 31,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js",
"sourceId": null,
"lineNumber": 60,
"columnNumber": 29,
"functionName": null
}
],
"frame": null,
"groupId": null,
"errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
@ -421,7 +465,29 @@ stubPackets.set(`throw ""`, {
"strict": false,
"info": false,
"private": false,
"stacktrace": null,
"stacktrace": [
{
"filename": "http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html",
"sourceId": "server1.conn0.child1/source24",
"lineNumber": 1,
"columnNumber": 1,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js line 59 > eval",
"sourceId": null,
"lineNumber": 7,
"columnNumber": 31,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js",
"sourceId": null,
"lineNumber": 60,
"columnNumber": 29,
"functionName": null
}
],
"notes": null
},
"type": "pageError",
@ -446,7 +512,29 @@ stubPackets.set(`throw "tomato"`, {
"strict": false,
"info": false,
"private": false,
"stacktrace": null,
"stacktrace": [
{
"filename": "http://example.com/browser/devtools/client/webconsole/test/fixtures/stub-generators/test-console-api.html",
"sourceId": "server1.conn0.child1/source24",
"lineNumber": 1,
"columnNumber": 1,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js line 59 > eval",
"sourceId": null,
"lineNumber": 7,
"columnNumber": 31,
"functionName": null
},
{
"filename": "resource://testing-common/content-task.js",
"sourceId": null,
"lineNumber": 60,
"columnNumber": 29,
"functionName": null
}
],
"notes": null
},
"type": "pageError",

View File

@ -104,6 +104,7 @@ support-files =
test-non-javascript-mime.js
test-non-javascript-mime.js^headers^
test-non-javascript-mime-worker.html
test-primitive-stacktrace.html
test-reopen-closed-tab.html
test-sourcemap-error-01.html
test-sourcemap-error-01.js
@ -356,6 +357,7 @@ subsuite = clipboard
subsuite = clipboard
[browser_webconsole_output_order.js]
[browser_webconsole_persist.js]
[browser_webconsole_primitive_stacktrace.js]
[browser_webconsole_reopen_closed_tab.js]
[browser_webconsole_repeat_different_objects.js]
[browser_webconsole_reverse_search.js]

View File

@ -0,0 +1,33 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that stack traces are shown when primitive values are thrown instead of
// error objects.
"use strict";
const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
"test/mochitest/" +
"test-primitive-stacktrace.html";
add_task(async function() {
const hud = await openNewTabAndConsole(TEST_URI);
await checkMessage("hello", 14, 3);
await checkMessage("1,2,3", 20, 1);
async function checkMessage(text, line, numFrames) {
const msgNode = await waitFor(() => findMessage(hud, text));
ok(!msgNode.classList.contains("open"), `Error logged not expanded`);
const button = msgNode.querySelector(".collapse-button");
button.click();
const framesNode = await waitFor(() => msgNode.querySelector(".frames"));
const frameNodes = framesNode.querySelectorAll(".frame");
ok(frameNodes.length == numFrames);
ok(frameNodes[0].querySelector(".line").textContent == "" + line);
}
});

View File

@ -0,0 +1,22 @@
<html>
<script>
/* eslint-disable no-throw-literal */
"use strict";
foo();
function foo() {
bar();
}
function bar() {
throw "hello";
}
</script>
<script>
/* eslint-disable no-throw-literal */
"use strict";
throw [1, 2, 3];
</script>
</html>