Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Unified Diff: LayoutTests/resources/js-test.js

Issue 59903016: LayoutTests/resources/js-test.js onerror tweak. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Removed setTimeout from js-tests changes. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>');
}

Powered by Google App Engine
This is Rietveld 408576698