| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/inspector-test.js"></script> |
| <script> |
| function typeErrorWrap() |
| { |
| return typeError(); |
| } |
| |
| function typeError() |
| { |
| var object = {}; |
| try { |
| object.propertyDoesnt.exist; |
| } catch(e) { |
| console.trace(); |
| return e.stack; |
| } |
| } |
| |
| function testWithNativeCallInBetween() |
| { |
| return [42].map(typeError)[0]; |
| } |
| |
| var _anonymousFunctionError = null; |
| |
| (function() { |
| var object = {}; |
| try { |
| object.methodDoesntExist(); |
| } catch(e) { |
| _anonymousFunctionError = e.stack; |
| } |
| })(); |
| |
| function getAnonymousFunctionError() |
| { |
| return _anonymousFunctionError; |
| } |
| |
| 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: "typeErrorWrap", |
| test(resolve, reject) { |
| InspectorTest.evaluateInPage("typeErrorWrap()", function(error, result) { |
| if (error) |
| reject(error); |
| |
| InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace."); |
| |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "getAnonymousFunctionError", |
| test(resolve, reject) { |
| InspectorTest.evaluateInPage("getAnonymousFunctionError()", function(error, result) { |
| if (error) |
| reject(error); |
| |
| // FIXME: this test case fails. <https://bugs.webkit.org/show_bug.cgi?id=180664> |
| InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace."); |
| |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.addTestCase({ |
| name: "testWithNativeCallInBetween", |
| test(resolve, reject) { |
| InspectorTest.evaluateInPage("testWithNativeCallInBetween()", function(error, result) { |
| if (error) |
| reject(error); |
| |
| InspectorTest.expectThat(WI.StackTrace.isLikelyStackTrace(result), "Should be a stacktrace."); |
| |
| resolve(); |
| }); |
| } |
| }); |
| |
| suite.runTestCasesAndFinish(); |
| } |
| </script> |
| </head> |
| <body onload="runTest()"> |
| <p> |
| Test stack trace detection heuristic.<br> |
| </p> |
| </body> |
| </html> |