| Index: test/mjsunit/stack-traces.js
|
| diff --git a/test/mjsunit/stack-traces.js b/test/mjsunit/stack-traces.js
|
| index 3bb5755aed77a0cbb2b903590917ce2645d4f49e..7d185e9c5fc1c3cfcea79ef6187c76e7821946a7 100644
|
| --- a/test/mjsunit/stack-traces.js
|
| +++ b/test/mjsunit/stack-traces.js
|
| @@ -103,22 +103,24 @@ function testStrippedCustomError() {
|
|
|
| // Utility function for testing that the expected strings occur
|
| // in the stack trace produced when running the given function.
|
| -function testTrace(fun, expected, unexpected) {
|
| +function testTrace(name, fun, expected, unexpected) {
|
| var threw = false;
|
| try {
|
| fun();
|
| } catch (e) {
|
| for (var i = 0; i < expected.length; i++) {
|
| - assertTrue(e.stack.indexOf(expected[i]) != -1);
|
| + assertTrue(e.stack.indexOf(expected[i]) != -1,
|
| + name + " doesn't contain expected[" + i + "]");
|
| }
|
| if (unexpected) {
|
| for (var i = 0; i < unexpected.length; i++) {
|
| - assertEquals(e.stack.indexOf(unexpected[i]), -1);
|
| + assertEquals(e.stack.indexOf(unexpected[i]), -1,
|
| + name + " contains unexpected[" + i + "]");
|
| }
|
| }
|
| threw = true;
|
| }
|
| - assertTrue(threw);
|
| + assertTrue(threw, name + " didn't throw");
|
| }
|
|
|
| // Test that the error constructor is not shown in the trace
|
| @@ -127,10 +129,11 @@ function testCallerCensorship() {
|
| try {
|
| FAIL;
|
| } catch (e) {
|
| - assertEquals(-1, e.stack.indexOf('at new ReferenceError'));
|
| + assertEquals(-1, e.stack.indexOf('at new ReferenceError'),
|
| + "CallerCensorship contained new ReferenceError");
|
| threw = true;
|
| }
|
| - assertTrue(threw);
|
| + assertTrue(threw, "CallerCensorship didn't throw");
|
| }
|
|
|
| // Test that the explicit constructor call is shown in the trace
|
| @@ -143,10 +146,11 @@ function testUnintendedCallerCensorship() {
|
| }
|
| });
|
| } catch (e) {
|
| - assertTrue(e.stack.indexOf('at new ReferenceError') != -1);
|
| + assertTrue(e.stack.indexOf('at new ReferenceError') != -1,
|
| + "UnintendedCallerCensorship didn't contain new ReferenceError");
|
| threw = true;
|
| }
|
| - assertTrue(threw);
|
| + assertTrue(threw, "UnintendedCallerCensorship didn't throw");
|
| }
|
|
|
| // If an error occurs while the stack trace is being formatted it should
|
| @@ -161,9 +165,10 @@ function testErrorsDuringFormatting() {
|
| n.foo();
|
| } catch (e) {
|
| threw = true;
|
| - assertTrue(e.stack.indexOf('<error: ReferenceError') != -1);
|
| + assertTrue(e.stack.indexOf('<error: ReferenceError') != -1,
|
| + "ErrorsDuringFormatting didn't contain error: ReferenceError");
|
| }
|
| - assertTrue(threw);
|
| + assertTrue(threw, "ErrorsDuringFormatting didn't throw");
|
| threw = false;
|
| // Now we can't even format the message saying that we couldn't format
|
| // the stack frame. Put that in your pipe and smoke it!
|
| @@ -172,26 +177,28 @@ function testErrorsDuringFormatting() {
|
| n.foo();
|
| } catch (e) {
|
| threw = true;
|
| - assertTrue(e.stack.indexOf('<error>') != -1);
|
| + assertTrue(e.stack.indexOf('<error>') != -1,
|
| + "ErrorsDuringFormatting didn't contain <error>");
|
| }
|
| - assertTrue(threw);
|
| -}
|
| -
|
| -testTrace(testArrayNative, ["Array.map (native)"]);
|
| -testTrace(testNested, ["at one", "at two", "at three"]);
|
| -testTrace(testMethodNameInference, ["at Foo.bar"]);
|
| -testTrace(testImplicitConversion, ["at Nirk.valueOf"]);
|
| -testTrace(testEval, ["at Doo (eval at testEval"]);
|
| -testTrace(testNestedEval, ["eval at Inner (eval at Outer"]);
|
| -testTrace(testValue, ["at Number.causeError"]);
|
| -testTrace(testConstructor, ["new Plonk"]);
|
| -testTrace(testRenamedMethod, ["Wookie.a$b$c$d [as d]"]);
|
| -testTrace(testAnonymousMethod, ["Array.<anonymous>"]);
|
| -testTrace(testDefaultCustomError, ["hep-hey", "new CustomError"],
|
| + assertTrue(threw, "ErrorsDuringFormatting didnt' throw (2)");
|
| +}
|
| +
|
| +
|
| +testTrace("testArrayNative", testArrayNative, ["Array.map (native)"]);
|
| +testTrace("testNested", testNested, ["at one", "at two", "at three"]);
|
| +testTrace("testMethodNameInference", testMethodNameInference, ["at Foo.bar"]);
|
| +testTrace("testImplicitConversion", testImplicitConversion, ["at Nirk.valueOf"]);
|
| +testTrace("testEval", testEval, ["at Doo (eval at testEval"]);
|
| +testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]);
|
| +testTrace("testValue", testValue, ["at Number.causeError"]);
|
| +testTrace("testConstructor", testConstructor, ["new Plonk"]);
|
| +testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]);
|
| +testTrace("testAnonymousMethod", testAnonymousMethod, ["Array.<anonymous>"]);
|
| +testTrace("testDefaultCustomError", testDefaultCustomError,
|
| + ["hep-hey", "new CustomError"],
|
| ["collectStackTrace"]);
|
| -testTrace(testStrippedCustomError, ["hep-hey"], ["new CustomError",
|
| - "collectStackTrace"]);
|
| -
|
| +testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"],
|
| + ["new CustomError", "collectStackTrace"]);
|
| testCallerCensorship();
|
| testUnintendedCallerCensorship();
|
| testErrorsDuringFormatting();
|
|
|