Title: [99651] trunk/Tools
Revision
99651
Author
hay...@chromium.org
Date
2011-11-08 21:44:47 -0800 (Tue, 08 Nov 2011)

Log Message

[NRWT] Make single_test_runner aware of reference filename of test_input.
https://bugs.webkit.org/show_bug.cgi?id=71567

Reviewed by Ryosuke Niwa.

Make single_test_runner honor a reference filename of given test_input so that
we can use any file as reference html, instead of depending on implicit naming convention.
The typical use case is to support w3c reftests.

No tests since no functional changes until there is a client.
Test should be easily written with future clients.

* Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
* Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
* Scripts/webkitpy/layout_tests/models/test_failures.py:
* Scripts/webkitpy/layout_tests/models/test_input.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (99650 => 99651)


--- trunk/Tools/ChangeLog	2011-11-09 04:20:52 UTC (rev 99650)
+++ trunk/Tools/ChangeLog	2011-11-09 05:44:47 UTC (rev 99651)
@@ -1,3 +1,22 @@
+2011-11-08  Hayato Ito  <hay...@chromium.org>
+
+        [NRWT] Make single_test_runner aware of reference filename of test_input.
+        https://bugs.webkit.org/show_bug.cgi?id=71567
+
+        Reviewed by Ryosuke Niwa.
+
+        Make single_test_runner honor a reference filename of given test_input so that
+        we can use any file as reference html, instead of depending on implicit naming convention.
+        The typical use case is to support w3c reftests.
+
+        No tests since no functional changes until there is a client.
+        Test should be easily written with future clients.
+
+        * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
+        * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
+        * Scripts/webkitpy/layout_tests/models/test_failures.py:
+        * Scripts/webkitpy/layout_tests/models/test_input.py:
+
 2011-11-08  Lucas Forschler  <lforsch...@apple.com>
 
         https://bugs.webkit.org/show_bug.cgi?id=71839

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py (99650 => 99651)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py	2011-11-09 04:20:52 UTC (rev 99650)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py	2011-11-09 05:44:47 UTC (rev 99651)
@@ -61,6 +61,12 @@
         self._reference_filename = None
 
         fs = port._filesystem
+        if test_input.ref_file:
+            self._is_reftest = True
+            self._reference_filename = fs.join(self._port.layout_tests_dir(), test_input.ref_file)
+            self._is_mismatch_reftest = test_input.is_mismatch_reftest
+            return
+
         reftest_expected_filename = port.reftest_expected_filename(self._test_name)
         if fs.exists(reftest_expected_filename):
             self._is_reftest = True
@@ -304,7 +310,7 @@
 
         if self._is_mismatch_reftest:
             if driver_output1.image_hash == driver_output2.image_hash:
-                failures.append(test_failures.FailureReftestMismatchDidNotOccur())
+                failures.append(test_failures.FailureReftestMismatchDidNotOccur(self._reference_filename))
         elif driver_output1.image_hash != driver_output2.image_hash:
-            failures.append(test_failures.FailureReftestMismatch())
+            failures.append(test_failures.FailureReftestMismatch(self._reference_filename))
         return TestResult(self._test_name, failures, total_test_time, has_stderr)

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py (99650 => 99651)


--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py	2011-11-09 04:20:52 UTC (rev 99650)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py	2011-11-09 05:44:47 UTC (rev 99651)
@@ -73,10 +73,10 @@
             image_diff = port.diff_image(driver_output.image, expected_driver_output.image)[0]
             if image_diff:
                 writer.write_image_diff_files(image_diff)
-            writer.copy_file(port.reftest_expected_filename(test_name), '-expected.html')
+            writer.copy_file(failure.reference_filename)
         elif isinstance(failure, test_failures.FailureReftestMismatchDidNotOccur):
             writer.write_image_files(driver_output.image, expected_image=None)
-            writer.copy_file(port.reftest_expected_mismatch_filename(test_name), '-expected-mismatch.html')
+            writer.copy_file(failure.reference_filename)
         else:
             assert isinstance(failure, (test_failures.FailureTimeout,))
 
@@ -264,9 +264,9 @@
         # FIXME: This seems like a text file, not a binary file.
         self._port._filesystem.write_binary_file(diffs_html_filename, html)
 
-    def copy_file(self, src_filepath, dst_extension):
+    def copy_file(self, src_filepath):
         fs = self._port._filesystem
         assert fs.exists(src_filepath), 'src_filepath: %s' % src_filepath
-        dst_filename = self.output_filename(dst_extension)
+        dst_filepath = fs.join(self._root_output_dir, self._port.relative_test_filename(src_filepath))
         self._make_output_directory()
-        fs.copyfile(src_filepath, dst_filename)
+        fs.copyfile(src_filepath, dst_filepath)

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py (99650 => 99651)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py	2011-11-09 04:20:52 UTC (rev 99650)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py	2011-11-09 05:44:47 UTC (rev 99651)
@@ -186,6 +186,9 @@
 class FailureReftestMismatch(TestFailure):
     """The result didn't match the reference rendering."""
 
+    def __init__(self, reference_filename=None):
+        self.reference_filename = reference_filename
+
     @staticmethod
     def message():
         return "Mismatch with reference"
@@ -194,6 +197,9 @@
 class FailureReftestMismatchDidNotOccur(TestFailure):
     """Unexpected match between the result and the reference rendering."""
 
+    def __init__(self, reference_filename=None):
+        self.reference_filename = reference_filename
+
     @staticmethod
     def message():
         return "Mismatch with the reference did not occur"

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py (99650 => 99651)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py	2011-11-09 04:20:52 UTC (rev 99650)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py	2011-11-09 05:44:47 UTC (rev 99651)
@@ -32,14 +32,23 @@
 class TestInput:
     """Groups information about a test for easy passing of data."""
 
-    def __init__(self, test_name, timeout):
+    # To save footprints since most TestInput instances don't have to have these fields.
+    ref_file = None
+    is_mismatch_reftest = None
+
+    def __init__(self, test_name, timeout, ref_file=None, is_mismatch_reftest=False):
         """Holds the input parameters for a test.
         Args:
           test: name of test (not an absolute path!)
           timeout: Timeout in msecs the driver should use while running the test
+          ref_file: name of reference_filename (not an absolute path!)
+          is_mismatch_test: true when the test is a mismatch reftest.
           """
         self.test_name = test_name
         self.timeout = timeout
+        if ref_file:
+            self.ref_file = ref_file
+            self.is_mismatch_reftest = is_mismatch_reftest
 
     def __repr__(self):
         return "TestInput('%s', %d)" % (self.test_name, self.timeout)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to