Chromium Code Reviews| Index: LayoutTests/resources/js-test.js |
| diff --git a/LayoutTests/resources/js-test.js b/LayoutTests/resources/js-test.js |
| index 6e578d5e6372b8e7504823684e1c674f6f11e984..957a53924183e6f783a37175dedce826a877c6bb 100644 |
| --- a/LayoutTests/resources/js-test.js |
| +++ b/LayoutTests/resources/js-test.js |
| @@ -6,7 +6,11 @@ if (self.testRunner) { |
| testRunner.dumpAsText(); |
| } |
| -var description, debug, successfullyParsed, errorMessage; |
| +var description, debug, successfullyParsed; |
| + |
| +var expectingError; // set by shouldHaveError() |
| +var expectedErrorMessage; // set by onerror when expectingError is true |
| +var unexpectedErrorMessage; // set by onerror when expectingError is not true |
| (function() { |
| @@ -94,7 +98,16 @@ var description, debug, successfullyParsed, errorMessage; |
| if (!self.isOnErrorTest) { |
| self.onerror = function(message) |
| { |
| - errorMessage = message; |
| + if (self.expectingError) { |
| + self.expectedErrorMessage = message; |
| + self.expectingError = false; |
| + return; |
| + } |
| + self.unexpectedErrorMessage = message; |
| + if (self.jsTestIsAsync) { |
| + self.testFailed("Unexpected error: " + message); |
| + setTimeout(finishJSTest, 0); |
|
ojan
2013/11/11 20:22:29
Why the setTimeout?
pwnall-personal
2013/11/11 22:45:34
As I was debugging failed tests on the last patch,
ojan
2013/11/11 23:30:41
Don't you get the same error message from the test
|
| + } |
| }; |
| } |
| })(); |
| @@ -554,18 +567,33 @@ function shouldThrow(_a, _e) |
| testFailed(_a + " should throw " + (typeof _e == "undefined" ? "an exception" : _ev) + ". Was " + _av + "."); |
| } |
| +function expectError() |
| +{ |
| + if (expectingError) { |
| + testFailed("shouldHaveError() called twice before an error occurred!"); |
| + } |
| + expectingError = true; |
| +} |
| + |
| function shouldHaveHadError(message) |
| { |
| - if (errorMessage) { |
| + if (expectingError) { |
| + testFailed("No error thrown between expectError() and shouldHaveHadError()"); |
| + return; |
| + } |
| + |
| + if (expectedErrorMessage) { |
| if (!message) |
| testPassed("Got expected error"); |
| - else if (errorMessage.indexOf(message) !== -1) |
| + else if (expectedErrorMessage.indexOf(message) !== -1) |
| testPassed("Got expected error: '" + message + "'"); |
| else |
| - testFailed("Unexpexted error '" + message + "'"); |
| - } else |
| - testFailed("Missing expexted error"); |
| - errorMessage = undefined; |
| + testFailed("Unexpected error '" + message + "'"); |
| + expectedErrorMessage = undefined; |
| + return; |
| + } |
| + |
| + testFailed("expectError() not called before shouldHaveHadError()"); |
| } |
| function gc() { |
| @@ -594,8 +622,7 @@ function minorGC() { |
| function isSuccessfullyParsed() |
| { |
| // FIXME: Remove this and only report unexpected syntax errors. |
| - if (!errorMessage) |
| - successfullyParsed = true; |
| + successfullyParsed = !unexpectedErrorMessage; |
| shouldBeTrue("successfullyParsed"); |
| debug('<br /><span class="pass">TEST COMPLETE</span>'); |
| } |