Index: LayoutTests/resources/js-test.js |
diff --git a/LayoutTests/resources/js-test.js b/LayoutTests/resources/js-test.js |
index 6e578d5e6372b8e7504823684e1c674f6f11e984..d88c440e9cd0897c626072fdf8a1333b86bfc746 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); |
+ finishJSTest(); |
+ } |
}; |
} |
})(); |
@@ -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>'); |
} |