- 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)