Title: [100587] trunk/Tools
Revision
100587
Author
aba...@webkit.org
Date
2011-11-17 02:09:21 -0800 (Thu, 17 Nov 2011)

Log Message

Move test_result_writer out of layout_package
https://bugs.webkit.org/show_bug.cgi?id=72586

Rubber-stamped by Eric Seidel.

This is part of a series of patches to remove layout_package.

* Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
* Scripts/webkitpy/layout_tests/controllers/test_result_writer.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py.
* Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py: Removed.
* Scripts/webkitpy/tool/commands/rebaseline.py:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Tools/ChangeLog (100586 => 100587)


--- trunk/Tools/ChangeLog	2011-11-17 10:08:40 UTC (rev 100586)
+++ trunk/Tools/ChangeLog	2011-11-17 10:09:21 UTC (rev 100587)
@@ -1,5 +1,19 @@
 2011-11-17  Adam Barth  <aba...@webkit.org>
 
+        Move test_result_writer out of layout_package
+        https://bugs.webkit.org/show_bug.cgi?id=72586
+
+        Rubber-stamped by Eric Seidel.
+
+        This is part of a series of patches to remove layout_package.
+
+        * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
+        * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py.
+        * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py: Removed.
+        * Scripts/webkitpy/tool/commands/rebaseline.py:
+
+2011-11-17  Adam Barth  <aba...@webkit.org>
+
         svn-apply shouldn't magically move files into Source anymore
         https://bugs.webkit.org/show_bug.cgi?id=72579
 

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


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py	2011-11-17 10:08:40 UTC (rev 100586)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py	2011-11-17 10:09:21 UTC (rev 100587)
@@ -31,7 +31,7 @@
 import re
 import time
 
-from webkitpy.layout_tests.layout_package import test_result_writer
+from webkitpy.layout_tests.controllers import test_result_writer
 from webkitpy.layout_tests.port.driver import DriverInput, DriverOutput
 from webkitpy.layout_tests.models import test_expectations
 from webkitpy.layout_tests.models import test_failures

Copied: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py (from rev 100575, trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py) (0 => 100587)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py	                        (rev 0)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py	2011-11-17 10:09:21 UTC (rev 100587)
@@ -0,0 +1,273 @@
+# Copyright (C) 2011 Google Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+import logging
+import os
+
+from webkitpy.common.system.crashlogs import CrashLogs
+from webkitpy.layout_tests.models import test_failures
+
+
+_log = logging.getLogger(__name__)
+
+
+def write_test_result(port, test_name, driver_output,
+                      expected_driver_output, failures):
+    """Write the test result to the result output directory."""
+    root_output_dir = port.results_directory()
+    writer = TestResultWriter(port, root_output_dir, test_name)
+    if driver_output.error:
+        writer.write_stderr(driver_output.error)
+
+    for failure in failures:
+        # FIXME: Instead of this long 'if' block, each failure class might
+        # have a responsibility for writing a test result.
+        if isinstance(failure, (test_failures.FailureMissingResult,
+                                test_failures.FailureTextMismatch)):
+            writer.write_text_files(driver_output.text, expected_driver_output.text)
+            writer.create_text_diff_and_write_result(driver_output.text, expected_driver_output.text)
+        elif isinstance(failure, test_failures.FailureMissingImage):
+            writer.write_image_files(driver_output.image, expected_image=None)
+        elif isinstance(failure, test_failures.FailureMissingImageHash):
+            writer.write_image_files(driver_output.image, expected_driver_output.image)
+        elif isinstance(failure, test_failures.FailureImageHashMismatch):
+            writer.write_image_files(driver_output.image, expected_driver_output.image)
+            writer.write_image_diff_files(driver_output.image_diff)
+        elif isinstance(failure, (test_failures.FailureAudioMismatch,
+                                  test_failures.FailureMissingAudio)):
+            writer.write_audio_files(driver_output.audio, expected_driver_output.audio)
+        elif isinstance(failure, test_failures.FailureCrash):
+            if failure.is_reftest:
+                writer.write_crash_report(expected_driver_output.error)
+            else:
+                writer.write_crash_report(driver_output.error)
+        elif isinstance(failure, test_failures.FailureReftestMismatch):
+            writer.write_image_files(driver_output.image, expected_driver_output.image)
+            # FIXME: This work should be done earlier in the pipeline (e.g., when we compare images for non-ref tests).
+            # FIXME: We should always have 2 images here.
+            if driver_output.image and expected_driver_output.image:
+                image_diff = port.diff_image(driver_output.image, expected_driver_output.image)[0]
+                writer.write_image_diff_files(image_diff)
+            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(failure.reference_filename)
+        else:
+            assert isinstance(failure, (test_failures.FailureTimeout,))
+
+
+class TestResultWriter(object):
+    """A class which handles all writing operations to the result directory."""
+
+    # Filename pieces when writing failures to the test results directory.
+    FILENAME_SUFFIX_ACTUAL = "-actual"
+    FILENAME_SUFFIX_EXPECTED = "-expected"
+    FILENAME_SUFFIX_DIFF = "-diff"
+    FILENAME_SUFFIX_STDERR = "-stderr"
+    FILENAME_SUFFIX_CRASH_LOG = "-crash-log"
+    FILENAME_SUFFIX_WDIFF = "-wdiff.html"
+    FILENAME_SUFFIX_PRETTY_PATCH = "-pretty-diff.html"
+    FILENAME_SUFFIX_IMAGE_DIFF = "-diff.png"
+    FILENAME_SUFFIX_IMAGE_DIFFS_HTML = "-diffs.html"
+
+    def __init__(self, port, root_output_dir, test_name):
+        self._port = port
+        self._root_output_dir = root_output_dir
+        self._test_name = test_name
+
+    def _make_output_directory(self):
+        """Creates the output directory (if needed) for a given test filename."""
+        fs = self._port._filesystem
+        output_filename = fs.join(self._root_output_dir, self._test_name)
+        self._port.maybe_make_directory(fs.dirname(output_filename))
+
+    def output_filename(self, modifier):
+        """Returns a filename inside the output dir that contains modifier.
+
+        For example, if test name is "fast/dom/foo.html" and modifier is "-expected.txt",
+        the return value is "/<path-to-root-output-dir>/fast/dom/foo-expected.txt".
+
+        Args:
+          modifier: a string to replace the extension of filename with
+
+        Return:
+          The absolute path to the output filename
+        """
+        fs = self._port._filesystem
+        output_filename = fs.join(self._root_output_dir, self._test_name)
+        return fs.splitext(output_filename)[0] + modifier
+
+    def _output_testname(self, modifier):
+        fs = self._port._filesystem
+        return fs.splitext(fs.basename(self._test_name))[0] + modifier
+
+    def write_output_files(self, file_type, output, expected):
+        """Writes the test output, the expected output in the results directory.
+
+        The full output filename of the actual, for example, will be
+          <filename>-actual<file_type>
+        For instance,
+          my_test-actual.txt
+
+        Args:
+          file_type: A string describing the test output file type, e.g. ".txt"
+          output: A string containing the test output
+          expected: A string containing the expected test output
+        """
+        self._make_output_directory()
+        actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
+        expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
+
+        fs = self._port._filesystem
+        if output is not None:
+            fs.write_binary_file(actual_filename, output)
+        if expected is not None:
+            fs.write_binary_file(expected_filename, expected)
+
+    def write_stderr(self, error):
+        fs = self._port._filesystem
+        filename = self.output_filename(self.FILENAME_SUFFIX_STDERR + ".txt")
+        fs.maybe_make_directory(fs.dirname(filename))
+        fs.write_binary_file(filename, error)
+
+    def write_crash_report(self, error):
+        fs = self._port._filesystem
+        filename = self.output_filename(self.FILENAME_SUFFIX_CRASH_LOG + ".txt")
+        fs.maybe_make_directory(fs.dirname(filename))
+        # FIXME: We shouldn't be grabbing private members of port.
+        crash_logs = CrashLogs(fs)
+        log = crash_logs.find_newest_log(self._port.driver_name())
+        # CrashLogs doesn't support every platform, so we fall back to
+        # including the stderr output, which is admittedly somewhat redundant.
+        fs.write_text_file(filename, log if log else error)
+
+    def write_text_files(self, actual_text, expected_text):
+        self.write_output_files(".txt", actual_text, expected_text)
+
+    def create_text_diff_and_write_result(self, actual_text, expected_text):
+        # FIXME: This function is actually doing the diffs as well as writing results.
+        # It might be better to extract code which does 'diff' and make it a separate function.
+        if not actual_text or not expected_text:
+            return
+
+        self._make_output_directory()
+        file_type = '.txt'
+        actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
+        expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
+        fs = self._port._filesystem
+        # We treat diff output as binary. Diff output may contain multiple files
+        # in conflicting encodings.
+        diff = self._port.diff_text(expected_text, actual_text, expected_filename, actual_filename)
+        diff_filename = self.output_filename(self.FILENAME_SUFFIX_DIFF + file_type)
+        fs.write_binary_file(diff_filename, diff)
+
+        # Shell out to wdiff to get colored inline diffs.
+        wdiff = self._port.wdiff_text(expected_filename, actual_filename)
+        wdiff_filename = self.output_filename(self.FILENAME_SUFFIX_WDIFF)
+        fs.write_binary_file(wdiff_filename, wdiff)
+
+        # Use WebKit's PrettyPatch.rb to get an HTML diff.
+        pretty_patch = self._port.pretty_patch_text(diff_filename)
+        pretty_patch_filename = self.output_filename(self.FILENAME_SUFFIX_PRETTY_PATCH)
+        fs.write_binary_file(pretty_patch_filename, pretty_patch)
+
+    def write_audio_files(self, actual_audio, expected_audio):
+        self.write_output_files('.wav', actual_audio, expected_audio)
+
+    def write_image_files(self, actual_image, expected_image):
+        self.write_output_files('.png', actual_image, expected_image)
+
+    def write_image_diff_files(self, image_diff):
+        diff_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFF)
+        fs = self._port._filesystem
+        fs.write_binary_file(diff_filename, image_diff)
+
+        diffs_html_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFFS_HTML)
+        # FIXME: old-run-webkit-tests shows the diff percentage as the text contents of the "diff" link.
+        # FIXME: old-run-webkit-tests include a link to the test file.
+        html = """<!DOCTYPE HTML>
+<html>
+<head>
+<title>%(title)s</title>
+<style>.label{font-weight:bold}</style>
+</head>
+<body>
+Difference between images: <a href=""
+<div class=imageText></div>
+<div class=imageContainer data-prefix="%(prefix)s">Loading...</div>
+<script>
+(function() {
+    var preloadedImageCount = 0;
+    function preloadComplete() {
+        ++preloadedImageCount;
+        if (preloadedImageCount < 2)
+            return;
+        toggleImages();
+        setInterval(toggleImages, 2000)
+    }
+
+    function preloadImage(url) {
+        image = new Image();
+        image.addEventListener('load', preloadComplete);
+        image.src = ""
+        return image;
+    }
+
+    function toggleImages() {
+        if (text.textContent == 'Expected Image') {
+            text.textContent = 'Actual Image';
+            container.replaceChild(actualImage, container.firstChild);
+        } else {
+            text.textContent = 'Expected Image';
+            container.replaceChild(expectedImage, container.firstChild);
+        }
+    }
+
+    var text = document.querySelector('.imageText');
+    var container = document.querySelector('.imageContainer');
+    var actualImage = preloadImage(container.getAttribute('data-prefix') + '-actual.png');
+    var expectedImage = preloadImage(container.getAttribute('data-prefix') + '-expected.png');
+})();
+</script>
+</body>
+</html>
+""" % {
+            'title': self._test_name,
+            'diff_filename': self._output_testname(self.FILENAME_SUFFIX_IMAGE_DIFF),
+            'prefix': self._output_testname(''),
+        }
+        # 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):
+        fs = self._port._filesystem
+        assert fs.exists(src_filepath), 'src_filepath: %s' % src_filepath
+        dst_filepath = fs.join(self._root_output_dir, self._port.relative_test_filename(src_filepath))
+        self._make_output_directory()
+        fs.copyfile(src_filepath, dst_filepath)

Deleted: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py (100586 => 100587)


--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py	2011-11-17 10:08:40 UTC (rev 100586)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py	2011-11-17 10:09:21 UTC (rev 100587)
@@ -1,273 +0,0 @@
-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-import logging
-import os
-
-from webkitpy.common.system.crashlogs import CrashLogs
-from webkitpy.layout_tests.models import test_failures
-
-
-_log = logging.getLogger(__name__)
-
-
-def write_test_result(port, test_name, driver_output,
-                      expected_driver_output, failures):
-    """Write the test result to the result output directory."""
-    root_output_dir = port.results_directory()
-    writer = TestResultWriter(port, root_output_dir, test_name)
-    if driver_output.error:
-        writer.write_stderr(driver_output.error)
-
-    for failure in failures:
-        # FIXME: Instead of this long 'if' block, each failure class might
-        # have a responsibility for writing a test result.
-        if isinstance(failure, (test_failures.FailureMissingResult,
-                                test_failures.FailureTextMismatch)):
-            writer.write_text_files(driver_output.text, expected_driver_output.text)
-            writer.create_text_diff_and_write_result(driver_output.text, expected_driver_output.text)
-        elif isinstance(failure, test_failures.FailureMissingImage):
-            writer.write_image_files(driver_output.image, expected_image=None)
-        elif isinstance(failure, test_failures.FailureMissingImageHash):
-            writer.write_image_files(driver_output.image, expected_driver_output.image)
-        elif isinstance(failure, test_failures.FailureImageHashMismatch):
-            writer.write_image_files(driver_output.image, expected_driver_output.image)
-            writer.write_image_diff_files(driver_output.image_diff)
-        elif isinstance(failure, (test_failures.FailureAudioMismatch,
-                                  test_failures.FailureMissingAudio)):
-            writer.write_audio_files(driver_output.audio, expected_driver_output.audio)
-        elif isinstance(failure, test_failures.FailureCrash):
-            if failure.is_reftest:
-                writer.write_crash_report(expected_driver_output.error)
-            else:
-                writer.write_crash_report(driver_output.error)
-        elif isinstance(failure, test_failures.FailureReftestMismatch):
-            writer.write_image_files(driver_output.image, expected_driver_output.image)
-            # FIXME: This work should be done earlier in the pipeline (e.g., when we compare images for non-ref tests).
-            # FIXME: We should always have 2 images here.
-            if driver_output.image and expected_driver_output.image:
-                image_diff = port.diff_image(driver_output.image, expected_driver_output.image)[0]
-                writer.write_image_diff_files(image_diff)
-            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(failure.reference_filename)
-        else:
-            assert isinstance(failure, (test_failures.FailureTimeout,))
-
-
-class TestResultWriter(object):
-    """A class which handles all writing operations to the result directory."""
-
-    # Filename pieces when writing failures to the test results directory.
-    FILENAME_SUFFIX_ACTUAL = "-actual"
-    FILENAME_SUFFIX_EXPECTED = "-expected"
-    FILENAME_SUFFIX_DIFF = "-diff"
-    FILENAME_SUFFIX_STDERR = "-stderr"
-    FILENAME_SUFFIX_CRASH_LOG = "-crash-log"
-    FILENAME_SUFFIX_WDIFF = "-wdiff.html"
-    FILENAME_SUFFIX_PRETTY_PATCH = "-pretty-diff.html"
-    FILENAME_SUFFIX_IMAGE_DIFF = "-diff.png"
-    FILENAME_SUFFIX_IMAGE_DIFFS_HTML = "-diffs.html"
-
-    def __init__(self, port, root_output_dir, test_name):
-        self._port = port
-        self._root_output_dir = root_output_dir
-        self._test_name = test_name
-
-    def _make_output_directory(self):
-        """Creates the output directory (if needed) for a given test filename."""
-        fs = self._port._filesystem
-        output_filename = fs.join(self._root_output_dir, self._test_name)
-        self._port.maybe_make_directory(fs.dirname(output_filename))
-
-    def output_filename(self, modifier):
-        """Returns a filename inside the output dir that contains modifier.
-
-        For example, if test name is "fast/dom/foo.html" and modifier is "-expected.txt",
-        the return value is "/<path-to-root-output-dir>/fast/dom/foo-expected.txt".
-
-        Args:
-          modifier: a string to replace the extension of filename with
-
-        Return:
-          The absolute path to the output filename
-        """
-        fs = self._port._filesystem
-        output_filename = fs.join(self._root_output_dir, self._test_name)
-        return fs.splitext(output_filename)[0] + modifier
-
-    def _output_testname(self, modifier):
-        fs = self._port._filesystem
-        return fs.splitext(fs.basename(self._test_name))[0] + modifier
-
-    def write_output_files(self, file_type, output, expected):
-        """Writes the test output, the expected output in the results directory.
-
-        The full output filename of the actual, for example, will be
-          <filename>-actual<file_type>
-        For instance,
-          my_test-actual.txt
-
-        Args:
-          file_type: A string describing the test output file type, e.g. ".txt"
-          output: A string containing the test output
-          expected: A string containing the expected test output
-        """
-        self._make_output_directory()
-        actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
-        expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
-
-        fs = self._port._filesystem
-        if output is not None:
-            fs.write_binary_file(actual_filename, output)
-        if expected is not None:
-            fs.write_binary_file(expected_filename, expected)
-
-    def write_stderr(self, error):
-        fs = self._port._filesystem
-        filename = self.output_filename(self.FILENAME_SUFFIX_STDERR + ".txt")
-        fs.maybe_make_directory(fs.dirname(filename))
-        fs.write_binary_file(filename, error)
-
-    def write_crash_report(self, error):
-        fs = self._port._filesystem
-        filename = self.output_filename(self.FILENAME_SUFFIX_CRASH_LOG + ".txt")
-        fs.maybe_make_directory(fs.dirname(filename))
-        # FIXME: We shouldn't be grabbing private members of port.
-        crash_logs = CrashLogs(fs)
-        log = crash_logs.find_newest_log(self._port.driver_name())
-        # CrashLogs doesn't support every platform, so we fall back to
-        # including the stderr output, which is admittedly somewhat redundant.
-        fs.write_text_file(filename, log if log else error)
-
-    def write_text_files(self, actual_text, expected_text):
-        self.write_output_files(".txt", actual_text, expected_text)
-
-    def create_text_diff_and_write_result(self, actual_text, expected_text):
-        # FIXME: This function is actually doing the diffs as well as writing results.
-        # It might be better to extract code which does 'diff' and make it a separate function.
-        if not actual_text or not expected_text:
-            return
-
-        self._make_output_directory()
-        file_type = '.txt'
-        actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
-        expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
-        fs = self._port._filesystem
-        # We treat diff output as binary. Diff output may contain multiple files
-        # in conflicting encodings.
-        diff = self._port.diff_text(expected_text, actual_text, expected_filename, actual_filename)
-        diff_filename = self.output_filename(self.FILENAME_SUFFIX_DIFF + file_type)
-        fs.write_binary_file(diff_filename, diff)
-
-        # Shell out to wdiff to get colored inline diffs.
-        wdiff = self._port.wdiff_text(expected_filename, actual_filename)
-        wdiff_filename = self.output_filename(self.FILENAME_SUFFIX_WDIFF)
-        fs.write_binary_file(wdiff_filename, wdiff)
-
-        # Use WebKit's PrettyPatch.rb to get an HTML diff.
-        pretty_patch = self._port.pretty_patch_text(diff_filename)
-        pretty_patch_filename = self.output_filename(self.FILENAME_SUFFIX_PRETTY_PATCH)
-        fs.write_binary_file(pretty_patch_filename, pretty_patch)
-
-    def write_audio_files(self, actual_audio, expected_audio):
-        self.write_output_files('.wav', actual_audio, expected_audio)
-
-    def write_image_files(self, actual_image, expected_image):
-        self.write_output_files('.png', actual_image, expected_image)
-
-    def write_image_diff_files(self, image_diff):
-        diff_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFF)
-        fs = self._port._filesystem
-        fs.write_binary_file(diff_filename, image_diff)
-
-        diffs_html_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFFS_HTML)
-        # FIXME: old-run-webkit-tests shows the diff percentage as the text contents of the "diff" link.
-        # FIXME: old-run-webkit-tests include a link to the test file.
-        html = """<!DOCTYPE HTML>
-<html>
-<head>
-<title>%(title)s</title>
-<style>.label{font-weight:bold}</style>
-</head>
-<body>
-Difference between images: <a href=""
-<div class=imageText></div>
-<div class=imageContainer data-prefix="%(prefix)s">Loading...</div>
-<script>
-(function() {
-    var preloadedImageCount = 0;
-    function preloadComplete() {
-        ++preloadedImageCount;
-        if (preloadedImageCount < 2)
-            return;
-        toggleImages();
-        setInterval(toggleImages, 2000)
-    }
-
-    function preloadImage(url) {
-        image = new Image();
-        image.addEventListener('load', preloadComplete);
-        image.src = ""
-        return image;
-    }
-
-    function toggleImages() {
-        if (text.textContent == 'Expected Image') {
-            text.textContent = 'Actual Image';
-            container.replaceChild(actualImage, container.firstChild);
-        } else {
-            text.textContent = 'Expected Image';
-            container.replaceChild(expectedImage, container.firstChild);
-        }
-    }
-
-    var text = document.querySelector('.imageText');
-    var container = document.querySelector('.imageContainer');
-    var actualImage = preloadImage(container.getAttribute('data-prefix') + '-actual.png');
-    var expectedImage = preloadImage(container.getAttribute('data-prefix') + '-expected.png');
-})();
-</script>
-</body>
-</html>
-""" % {
-            'title': self._test_name,
-            'diff_filename': self._output_testname(self.FILENAME_SUFFIX_IMAGE_DIFF),
-            'prefix': self._output_testname(''),
-        }
-        # 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):
-        fs = self._port._filesystem
-        assert fs.exists(src_filepath), 'src_filepath: %s' % src_filepath
-        dst_filepath = fs.join(self._root_output_dir, self._port.relative_test_filename(src_filepath))
-        self._make_output_directory()
-        fs.copyfile(src_filepath, dst_filepath)

Modified: trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py (100586 => 100587)


--- trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py	2011-11-17 10:08:40 UTC (rev 100586)
+++ trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py	2011-11-17 10:09:21 UTC (rev 100587)
@@ -37,7 +37,7 @@
 from webkitpy.common.net.layouttestresults import LayoutTestResults
 from webkitpy.common.system.executive import ScriptError
 from webkitpy.common.system.user import User
-from webkitpy.layout_tests.layout_package.test_result_writer import TestResultWriter
+from webkitpy.layout_tests.controllers.test_result_writer import TestResultWriter
 from webkitpy.layout_tests.models import test_failures
 from webkitpy.layout_tests.models.test_expectations import TestExpectations
 from webkitpy.layout_tests.port import builders
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to