108 lines
3.3 KiB
HTML
108 lines
3.3 KiB
HTML
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function generateTypeError()
|
|
{
|
|
try {
|
|
({}).propertyDoesnt.exist;
|
|
} catch(e) {
|
|
console.trace();
|
|
return e.stack;
|
|
}
|
|
}
|
|
|
|
function generateErrorNativeCallInBetween()
|
|
{
|
|
return [42].map(generateTypeError)[0];
|
|
}
|
|
|
|
var _globalTypeError = generateTypeError();
|
|
var _globalErrorWithNativeCalls = generateErrorNativeCallInBetween();
|
|
var _globalAnonymousFunctionError = null;
|
|
(function() {
|
|
var object = {};
|
|
try {
|
|
object.methodDoesntExist();
|
|
} catch(e) {
|
|
_globalAnonymousFunctionError = e.stack;
|
|
}
|
|
})();
|
|
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createAsyncSuite("WI.StackTrace.isLikelyStackTrace");
|
|
|
|
suite.addTestCase({
|
|
name: "notStacktrace",
|
|
test(resolve, reject) {
|
|
let result = WI.StackTrace.isLikelyStackTrace("Messages:42\nUnread:16");
|
|
InspectorTest.expectFalse(result, "Should NOT be a stacktrace.");
|
|
resolve();
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.StackTrace.isLikelyStackTrace.TypeError",
|
|
async test() {
|
|
let result = await InspectorTest.evaluateInPage(`_globalTypeError`);
|
|
InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace.");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.StackTrace.isLikelyStackTrace.AnonymousFunctionError",
|
|
async test() {
|
|
let result = await InspectorTest.evaluateInPage(`_globalAnonymousFunctionError`);
|
|
InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace.");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.StackTrace.isLikelyStackTrace.NativeFunctionCallsError",
|
|
async test() {
|
|
let result = await InspectorTest.evaluateInPage(`_globalErrorWithNativeCalls`);
|
|
InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace.");
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.StackTrace.isLikelyStackTrace.ValidStackStrings",
|
|
async test() {
|
|
const strings = [
|
|
"a@file:///ex.html:10:6\nb@file:///ex.html:7:6\nglobal code@file:///ex.html:12:2",
|
|
"global code@file:///ex.html:12:2\na@file:///ex.html:10:6\nb@file:///ex.html:7:6",
|
|
"global code@file:///ex.html:1:1\nmap@[native code]",
|
|
];
|
|
|
|
for (let string of strings)
|
|
InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(string), `${JSON.stringify(string)} should be a stacktrace.`);
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "WI.StackTrace.isLikelyStackTrace.InvalidStackStrings",
|
|
async test() {
|
|
const strings = [
|
|
"video:1:2",
|
|
"video/mp4:1:2",
|
|
"video/mp4 : 11:22:33-44:55:66",
|
|
"http://video:1:2",
|
|
"http://video/mp4:1:2",
|
|
"http://video/mp4 : 11:22:33-44:55:66",
|
|
];
|
|
|
|
for (let string of strings)
|
|
InspectorTest.expectThat(!WI.StackTrace.isLikelyStackTrace(string), `${JSON.stringify(string)} should not be a stacktrace.`);
|
|
}
|
|
});
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<p>Test stack trace detection heuristic.</p>
|
|
</body>
|
|
</html>
|