Index: Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py |
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py |
index 0c029234c68a32dc531c416e2f5ee0fafd558fe4..a6c53a0f61874e3a058ac81d5a84890e5e291e9d 100644 |
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py |
+++ b/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py |
@@ -236,13 +236,42 @@ class SingleTestRunner(object): |
return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr(), |
pid=driver_output.pid) |
- failures.extend(self._compare_text(expected_driver_output.text, driver_output.text)) |
- failures.extend(self._compare_audio(expected_driver_output.audio, driver_output.audio)) |
- if self._should_run_pixel_test: |
- failures.extend(self._compare_image(expected_driver_output, driver_output)) |
+ is_testharness_test, testharness_failures = self._compare_testharness_test(driver_output, expected_driver_output) |
+ if is_testharness_test: |
+ failures.extend(testharness_failures) |
+ else: |
+ failures.extend(self._compare_text(expected_driver_output.text, driver_output.text)) |
+ failures.extend(self._compare_audio(expected_driver_output.audio, driver_output.audio)) |
+ if self._should_run_pixel_test: |
+ failures.extend(self._compare_image(expected_driver_output, driver_output)) |
return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr(), |
pid=driver_output.pid) |
+ def _compare_testharness_test(self, driver_output, expected_driver_output): |
+ if expected_driver_output.image or expected_driver_output.audio or expected_driver_output.text: |
+ return False, [] |
+ |
+ if driver_output.image or driver_output.audio or self._is_render_tree(driver_output.text): |
+ return False, [] |
+ |
+ failures = [] |
+ found_a_pass = False |
+ text = driver_output.text or '' |
+ lines = text.splitlines() |
+ if not lines or lines[0] != 'This is a testharness.js-based test.': |
+ return False, [] |
+ if lines[-2:] != ['Harness: the test ran to completion.', '']: |
+ return True, [test_failures.FailureTestHarnessAssertion()] |
+ |
+ for line in lines: |
+ if line.startswith('FAIL') or line.startswith('TIMEOUT'): |
+ return True, [test_failures.FailureTestHarnessAssertion()] |
+ |
+ return True, [] |
+ |
+ def _is_render_tree(self, text): |
+ return text and "layer at (0,0) size 800x600" in text |
+ |
def _compare_text(self, expected_text, actual_text): |
failures = [] |
if (expected_text and actual_text and |