| OLD | NEW |
| 1 // js-test now supports lazily printing test results which dumps all test | 1 // js-test now supports lazily printing test results which dumps all test |
| 2 // results once at the end of the test instead of building them up. To enable | 2 // results once at the end of the test instead of building them up. To enable |
| 3 // this option, call setPrintTestResultsLazily() before running any tests. | 3 // this option, call setPrintTestResultsLazily() before running any tests. |
| 4 var _lazyTestResults; // Set by setPrintTestResultsLazily(). | 4 var _lazyTestResults; // Set by setPrintTestResultsLazily(). |
| 5 var _lazyDescription; // Set by description() after setPrintTestResultsLazily(). | 5 var _lazyDescription; // Set by description() after setPrintTestResultsLazily(). |
| 6 | 6 |
| 7 // svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump tex
t + pixel results | 7 // svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump tex
t + pixel results |
| 8 if (self.testRunner) { | 8 if (self.testRunner) { |
| 9 if (self.enablePixelTesting) | 9 if (self.enablePixelTesting) |
| 10 testRunner.dumpAsTextWithPixelResults(); | 10 testRunner.dumpAsTextWithPixelResults(); |
| 11 else | 11 else |
| 12 testRunner.dumpAsText(); | 12 testRunner.dumpAsText(); |
| 13 } | 13 } |
| 14 | 14 |
| 15 var isJsTest = true; | 15 var isJsTest = true; |
| 16 | 16 |
| 17 var description, debug, successfullyParsed, getOrCreateTestElement; | 17 var description, debug, successfullyParsed, getOrCreateTestElement; |
| 18 | 18 |
| 19 var expectingError; // set by shouldHaveError() | 19 var expectingError; // set by expectError() |
| 20 var expectedErrorMessage; // set by onerror when expectingError is true | 20 var expectedErrorMessage; // set by onerror when expectingError is true |
| 21 var unexpectedErrorMessage; // set by onerror when expectingError is not true | 21 var unexpectedErrorMessage; // set by onerror when expectingError is not true |
| 22 | 22 |
| 23 (function() { | 23 (function() { |
| 24 | 24 |
| 25 getOrCreateTestElement = function(id, tagName) | 25 getOrCreateTestElement = function(id, tagName) |
| 26 { | 26 { |
| 27 var element = document.getElementById(id); | 27 var element = document.getElementById(id); |
| 28 if (element) | 28 if (element) |
| 29 return element; | 29 return element; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 window.addEventListener('DOMContentLoaded', handleTestFinished, false); | 112 window.addEventListener('DOMContentLoaded', handleTestFinished, false); |
| 113 insertStyleSheet(); | 113 insertStyleSheet(); |
| 114 } | 114 } |
| 115 | 115 |
| 116 if (!self.isOnErrorTest) { | 116 if (!self.isOnErrorTest) { |
| 117 self.onerror = function(message) | 117 self.onerror = function(message) |
| 118 { | 118 { |
| 119 if (self.expectingError) { | 119 if (self.expectingError) { |
| 120 self.expectedErrorMessage = message; | 120 self.expectedErrorMessage = message; |
| 121 self.expectingError = false; | 121 self.expectingError = false; |
| 122 return; | 122 // In workers, consume expected error so window doesn't fail the
test. |
| 123 return isWorker(); |
| 123 } | 124 } |
| 124 self.unexpectedErrorMessage = message; | 125 self.unexpectedErrorMessage = message; |
| 125 if (self.jsTestIsAsync) { | 126 if (self.jsTestIsAsync) { |
| 126 self.testFailed("Unexpected error: " + message); | 127 self.testFailed("Unexpected error: " + message); |
| 127 finishJSTest(); | 128 finishJSTest(); |
| 128 } | 129 } |
| 129 }; | 130 }; |
| 130 } | 131 } |
| 131 })(); | 132 })(); |
| 132 | 133 |
| (...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 | 709 |
| 709 testPassed(a + " is equivalent to Date.now()."); | 710 testPassed(a + " is equivalent to Date.now()."); |
| 710 return; | 711 return; |
| 711 } | 712 } |
| 712 testFailed(a + " cannot be tested against the current time. The clock is goi
ng backwards too often."); | 713 testFailed(a + " cannot be tested against the current time. The clock is goi
ng backwards too often."); |
| 713 } | 714 } |
| 714 | 715 |
| 715 function expectError() | 716 function expectError() |
| 716 { | 717 { |
| 717 if (expectingError) { | 718 if (expectingError) { |
| 718 testFailed("shouldHaveError() called twice before an error occurred!"); | 719 testFailed("expectError() called twice before an error occurred!"); |
| 719 } | 720 } |
| 720 expectingError = true; | 721 expectingError = true; |
| 721 } | 722 } |
| 722 | 723 |
| 723 function shouldHaveHadError(message) | 724 function shouldHaveHadError(message) |
| 724 { | 725 { |
| 725 if (expectingError) { | 726 if (expectingError) { |
| 726 testFailed("No error thrown between expectError() and shouldHaveHadError
()"); | 727 testFailed("No error thrown between expectError() and shouldHaveHadError
()"); |
| 727 return; | 728 return; |
| 728 } | 729 } |
| 729 | 730 |
| 730 if (expectedErrorMessage) { | 731 if (expectedErrorMessage) { |
| 731 if (!message) | 732 if (!message) |
| 732 testPassed("Got expected error"); | 733 testPassed("Got expected error"); |
| 733 else if (expectedErrorMessage.indexOf(message) !== -1) | 734 else if (expectedErrorMessage.indexOf(message) !== -1) |
| 734 testPassed("Got expected error: '" + message + "'"); | 735 testPassed("Got expected error: '" + message + "'"); |
| 735 else | 736 else |
| 736 testFailed("Unexpected error '" + message + "'"); | 737 testFailed("Unexpected error '" + message + "'"); |
| 737 expectedErrorMessage = undefined; | 738 expectedErrorMessage = undefined; |
| 738 return; | 739 return; |
| 739 } | 740 } |
| 740 | 741 |
| 741 testFailed("expectError() not called before shouldHaveHadError()"); | 742 testFailed("expectError() not called before shouldHaveHadError()"); |
| 742 } | 743 } |
| 743 | 744 |
| 745 // Waits for the global 'onerror' handler to fire, verifies the |
| 746 // message with a regex, then calls another function. e.g. |
| 747 // waitForError(/AbortError/, nextTestCase); |
| 748 function waitForError(regex, continuation) |
| 749 { |
| 750 var original_onerror = self.onerror; |
| 751 self.onerror = function(message) { |
| 752 self.onerror = original_onerror; |
| 753 if (regex.test(message)) |
| 754 testPassed("Got expected error: '" + message + "'"); |
| 755 else |
| 756 testFailed("Unexpected error '" + message + "', expected: " + String
(regex)); |
| 757 continuation(); |
| 758 }; |
| 759 } |
| 760 |
| 744 // With Oilpan tests that rely on garbage collection need to go through | 761 // With Oilpan tests that rely on garbage collection need to go through |
| 745 // the event loop in order to get precise garbage collections. Oilpan | 762 // the event loop in order to get precise garbage collections. Oilpan |
| 746 // uses conservative stack scanning when not at the event loop and that | 763 // uses conservative stack scanning when not at the event loop and that |
| 747 // can artificially keep objects alive. Therefore, tests that need to check | 764 // can artificially keep objects alive. Therefore, tests that need to check |
| 748 // that something is dead need to use this asynchronous collectGarbage | 765 // that something is dead need to use this asynchronous collectGarbage |
| 749 // function. | 766 // function. |
| 750 function asyncGC(callback) { | 767 function asyncGC(callback) { |
| 751 var documentsBefore = window.internals.numberOfLiveDocuments(); | 768 var documentsBefore = window.internals.numberOfLiveDocuments(); |
| 752 GCController.collectAll(); | 769 GCController.collectAll(); |
| 753 // FIXME: we need a better way of waiting for chromium events to happen | 770 // FIXME: we need a better way of waiting for chromium events to happen |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 903 testPassed = function(msg) { | 920 testPassed = function(msg) { |
| 904 workerPort.postMessage('PASS:' + msg); | 921 workerPort.postMessage('PASS:' + msg); |
| 905 }; | 922 }; |
| 906 finishJSTest = function() { | 923 finishJSTest = function() { |
| 907 workerPort.postMessage('DONE:'); | 924 workerPort.postMessage('DONE:'); |
| 908 }; | 925 }; |
| 909 debug = function(msg) { | 926 debug = function(msg) { |
| 910 workerPort.postMessage(msg); | 927 workerPort.postMessage(msg); |
| 911 }; | 928 }; |
| 912 } | 929 } |
| OLD | NEW |