OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 | 56 |
57 function testEval() { | 57 function testEval() { |
58 eval("function Doo() { FAIL; }; Doo();"); | 58 eval("function Doo() { FAIL; }; Doo();"); |
59 } | 59 } |
60 | 60 |
61 function testNestedEval() { | 61 function testNestedEval() { |
62 var x = "FAIL"; | 62 var x = "FAIL"; |
63 eval("function Outer() { eval('function Inner() { eval(x); }'); Inner(); }; Ou
ter();"); | 63 eval("function Outer() { eval('function Inner() { eval(x); }'); Inner(); }; Ou
ter();"); |
64 } | 64 } |
65 | 65 |
| 66 function testEvalWithSourceURL() { |
| 67 eval("function Doo() { FAIL; }; Doo();\n//@ sourceURL=res://name"); |
| 68 } |
| 69 |
| 70 function testNestedEvalWithSourceURL() { |
| 71 var x = "FAIL"; |
| 72 var innerEval = 'function Inner() { eval(x); }\n//@ sourceURL=res://inner-eval
'; |
| 73 eval("function Outer() { eval(innerEval); Inner(); }; Outer();\n//@ sourceURL=
res://outer-eval"); |
| 74 } |
| 75 |
66 function testValue() { | 76 function testValue() { |
67 Number.prototype.causeError = function () { FAIL; }; | 77 Number.prototype.causeError = function () { FAIL; }; |
68 (1).causeError(); | 78 (1).causeError(); |
69 } | 79 } |
70 | 80 |
71 function testConstructor() { | 81 function testConstructor() { |
72 function Plonk() { FAIL; } | 82 function Plonk() { FAIL; } |
73 new Plonk(); | 83 new Plonk(); |
74 } | 84 } |
75 | 85 |
(...skipping 27 matching lines...) Expand all Loading... |
103 | 113 |
104 // Utility function for testing that the expected strings occur | 114 // Utility function for testing that the expected strings occur |
105 // in the stack trace produced when running the given function. | 115 // in the stack trace produced when running the given function. |
106 function testTrace(name, fun, expected, unexpected) { | 116 function testTrace(name, fun, expected, unexpected) { |
107 var threw = false; | 117 var threw = false; |
108 try { | 118 try { |
109 fun(); | 119 fun(); |
110 } catch (e) { | 120 } catch (e) { |
111 for (var i = 0; i < expected.length; i++) { | 121 for (var i = 0; i < expected.length; i++) { |
112 assertTrue(e.stack.indexOf(expected[i]) != -1, | 122 assertTrue(e.stack.indexOf(expected[i]) != -1, |
113 name + " doesn't contain expected[" + i + "]"); | 123 name + " doesn't contain expected[" + i + "] stack = " + e.stac
k); |
114 } | 124 } |
115 if (unexpected) { | 125 if (unexpected) { |
116 for (var i = 0; i < unexpected.length; i++) { | 126 for (var i = 0; i < unexpected.length; i++) { |
117 assertEquals(e.stack.indexOf(unexpected[i]), -1, | 127 assertEquals(e.stack.indexOf(unexpected[i]), -1, |
118 name + " contains unexpected[" + i + "]"); | 128 name + " contains unexpected[" + i + "]"); |
119 } | 129 } |
120 } | 130 } |
121 threw = true; | 131 threw = true; |
122 } | 132 } |
123 assertTrue(threw, name + " didn't throw"); | 133 assertTrue(threw, name + " didn't throw"); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 assertTrue(threw, "ErrorsDuringFormatting didnt' throw (2)"); | 193 assertTrue(threw, "ErrorsDuringFormatting didnt' throw (2)"); |
184 } | 194 } |
185 | 195 |
186 | 196 |
187 testTrace("testArrayNative", testArrayNative, ["Array.map (native)"]); | 197 testTrace("testArrayNative", testArrayNative, ["Array.map (native)"]); |
188 testTrace("testNested", testNested, ["at one", "at two", "at three"]); | 198 testTrace("testNested", testNested, ["at one", "at two", "at three"]); |
189 testTrace("testMethodNameInference", testMethodNameInference, ["at Foo.bar"]); | 199 testTrace("testMethodNameInference", testMethodNameInference, ["at Foo.bar"]); |
190 testTrace("testImplicitConversion", testImplicitConversion, ["at Nirk.valueOf"])
; | 200 testTrace("testImplicitConversion", testImplicitConversion, ["at Nirk.valueOf"])
; |
191 testTrace("testEval", testEval, ["at Doo (eval at testEval"]); | 201 testTrace("testEval", testEval, ["at Doo (eval at testEval"]); |
192 testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]); | 202 testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]); |
| 203 testTrace("testEvalWithSourceURL", testEvalWithSourceURL, |
| 204 [ "at Doo (res://name:1:18)" ]); |
| 205 testTrace("testNestedEvalWithSourceURL", testNestedEvalWithSourceURL, |
| 206 [" at Inner (res://inner-eval:1:20)", |
| 207 " at Outer (res://outer-eval:1:37)"]); |
193 testTrace("testValue", testValue, ["at Number.causeError"]); | 208 testTrace("testValue", testValue, ["at Number.causeError"]); |
194 testTrace("testConstructor", testConstructor, ["new Plonk"]); | 209 testTrace("testConstructor", testConstructor, ["new Plonk"]); |
195 testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]); | 210 testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]); |
196 testTrace("testAnonymousMethod", testAnonymousMethod, ["Array.<anonymous>"]); | 211 testTrace("testAnonymousMethod", testAnonymousMethod, ["Array.<anonymous>"]); |
197 testTrace("testDefaultCustomError", testDefaultCustomError, | 212 testTrace("testDefaultCustomError", testDefaultCustomError, |
198 ["hep-hey", "new CustomError"], | 213 ["hep-hey", "new CustomError"], |
199 ["collectStackTrace"]); | 214 ["collectStackTrace"]); |
200 testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"], | 215 testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"], |
201 ["new CustomError", "collectStackTrace"]); | 216 ["new CustomError", "collectStackTrace"]); |
202 testCallerCensorship(); | 217 testCallerCensorship(); |
203 testUnintendedCallerCensorship(); | 218 testUnintendedCallerCensorship(); |
204 testErrorsDuringFormatting(); | 219 testErrorsDuringFormatting(); |
OLD | NEW |