Changeset 126188 in webkit


Ignore:
Timestamp:
Aug 21, 2012 2:36:15 PM (12 years ago)
Author:
dpranke@chromium.org
Message:

_compare_image() swaps actual and expected images by mistake
https://bugs.webkit.org/show_bug.cgi?id=94567

Reviewed by Ojan Vafai.

Re-work the code so that we consistently pass (expected, actual)
across all of the compare/diff routines.

  • Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:

(SingleTestRunner._run_compare_test):
(SingleTestRunner._compare_output):
(SingleTestRunner._compare_text):
(SingleTestRunner._compare_audio):
(SingleTestRunner._compare_image):
(SingleTestRunner._run_reftest):
(SingleTestRunner._compare_output_with_reference):

  • Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:

(write_test_result):

Location:
trunk/Tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r126185 r126188  
     12012-08-21  Dirk Pranke  <dpranke@chromium.org>
     2
     3        _compare_image() swaps actual and expected images by mistake
     4        https://bugs.webkit.org/show_bug.cgi?id=94567
     5
     6        Reviewed by Ojan Vafai.
     7
     8        Re-work the code so that we consistently pass (expected, actual)
     9        across all of the compare/diff routines.
     10
     11        * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
     12        (SingleTestRunner._run_compare_test):
     13        (SingleTestRunner._compare_output):
     14        (SingleTestRunner._compare_text):
     15        (SingleTestRunner._compare_audio):
     16        (SingleTestRunner._compare_image):
     17        (SingleTestRunner._run_reftest):
     18        (SingleTestRunner._compare_output_with_reference):
     19        * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
     20        (write_test_result):
     21
    1222012-08-21  Adam Barth  <abarth@webkit.org>
    223
  • trunk/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py

    r126070 r126188  
    111111            driver_output.strip_metrics()
    112112
    113         test_result = self._compare_output(driver_output, expected_driver_output)
     113        test_result = self._compare_output(expected_driver_output, driver_output)
    114114        if self._options.new_test_results:
    115115            self._add_missing_baselines(test_result, driver_output)
     
    210210        return failures
    211211
    212     def _compare_output(self, driver_output, expected_driver_output):
     212    def _compare_output(self, expected_driver_output, driver_output):
    213213        failures = []
    214214        failures.extend(self._handle_error(driver_output))
     
    219219            return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr())
    220220
    221         failures.extend(self._compare_text(driver_output.text, expected_driver_output.text))
    222         failures.extend(self._compare_audio(driver_output.audio, expected_driver_output.audio))
     221        failures.extend(self._compare_text(expected_driver_output.text, driver_output.text))
     222        failures.extend(self._compare_audio(expected_driver_output.audio, driver_output.audio))
    223223        if self._should_run_pixel_test:
    224             failures.extend(self._compare_image(driver_output, expected_driver_output))
     224            failures.extend(self._compare_image(expected_driver_output, driver_output))
    225225        return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr())
    226226
    227     def _compare_text(self, actual_text, expected_text):
     227    def _compare_text(self, expected_text, actual_text):
    228228        failures = []
    229229        if (expected_text and actual_text and
    230230            # Assuming expected_text is already normalized.
    231             self._port.do_text_results_differ(self._get_normalized_output_text(actual_text), expected_text)):
     231            self._port.do_text_results_differ(expected_text, self._get_normalized_output_text(actual_text))):
    232232            failures.append(test_failures.FailureTextMismatch())
    233233        elif actual_text and not expected_text:
     
    235235        return failures
    236236
    237     def _compare_audio(self, actual_audio, expected_audio):
     237    def _compare_audio(self, expected_audio, actual_audio):
    238238        failures = []
    239239        if (expected_audio and actual_audio and
    240             self._port.do_audio_results_differ(actual_audio, expected_audio)):
     240            self._port.do_audio_results_differ(expected_audio, actual_audio)):
    241241            failures.append(test_failures.FailureAudioMismatch())
    242242        elif actual_audio and not expected_audio:
     
    255255    # FIXME: This function also creates the image diff. Maybe that work should
    256256    # be handled elsewhere?
    257     def _compare_image(self, driver_output, expected_driver_output):
     257    def _compare_image(self, expected_driver_output, driver_output):
    258258        failures = []
    259259        # If we didn't produce a hash file, this test must be text-only.
     
    265265            failures.append(test_failures.FailureMissingImageHash())
    266266        elif driver_output.image_hash != expected_driver_output.image_hash:
    267             diff_result = self._port.diff_image(driver_output.image, expected_driver_output.image)
     267            diff_result = self._port.diff_image(expected_driver_output.image, driver_output.image)
    268268            err_str = diff_result[2]
    269269            # FIXME: see https://bugs.webkit.org/show_bug.cgi?id=94277 and
     
    299299            reference_test_name = self._port.relative_test_filename(reference_filename)
    300300            reference_output = self._driver.run_test(DriverInput(reference_test_name, self._timeout, test_output.image_hash, should_run_pixel_test=True), self._stop_when_done)
    301             test_result = self._compare_output_with_reference(test_output, reference_output, reference_filename, expectation == '!=')
     301            test_result = self._compare_output_with_reference(reference_output, test_output, reference_filename, expectation == '!=')
    302302
    303303            if (expectation == '!=' and test_result.failures) or (expectation == '==' and not test_result.failures):
     
    309309        return TestResult(self._test_name, test_result.failures, total_test_time + test_result.test_run_time, test_result.has_stderr)
    310310
    311     def _compare_output_with_reference(self, driver_output1, driver_output2, reference_filename, mismatch):
    312         total_test_time = driver_output1.test_time + driver_output2.test_time
    313         has_stderr = driver_output1.has_stderr() or driver_output2.has_stderr()
    314         failures = []
    315         failures.extend(self._handle_error(driver_output1))
     311    def _compare_output_with_reference(self, reference_driver_output, actual_driver_output, reference_filename, mismatch):
     312        total_test_time = reference_driver_output.test_time + actual_driver_output.test_time
     313        has_stderr = reference_driver_output.has_stderr() or actual_driver_output.has_stderr()
     314        failures = []
     315        failures.extend(self._handle_error(actual_driver_output))
    316316        if failures:
    317317            # Don't continue any more if we already have crash or timeout.
    318318            return TestResult(self._test_name, failures, total_test_time, has_stderr)
    319         failures.extend(self._handle_error(driver_output2, reference_filename=reference_filename))
     319        failures.extend(self._handle_error(reference_driver_output, reference_filename=reference_filename))
    320320        if failures:
    321321            return TestResult(self._test_name, failures, total_test_time, has_stderr)
     
    325325            return TestResult(self._test_name, failures, total_test_time, has_stderr)
    326326
    327         if not driver_output1.image_hash and not driver_output2.image_hash:
     327        if not reference_driver_output.image_hash and not actual_driver_output.image_hash:
    328328            failures.append(test_failures.FailureReftestNoImagesGenerated(reference_filename))
    329329        elif mismatch:
    330             if driver_output1.image_hash == driver_output2.image_hash:
     330            if reference_driver_output.image_hash == actual_driver_output.image_hash:
    331331                failures.append(test_failures.FailureReftestMismatchDidNotOccur(reference_filename))
    332         elif driver_output1.image_hash != driver_output2.image_hash:
     332        elif reference_driver_output.image_hash != actual_driver_output.image_hash:
    333333            failures.append(test_failures.FailureReftestMismatch(reference_filename))
    334334
    335335        # recompute in case we added to stderr during diff_image
    336         has_stderr = driver_output1.has_stderr() or driver_output2.has_stderr()
     336        has_stderr = reference_driver_output.has_stderr() or actual_driver_output.has_stderr()
    337337
    338338        return TestResult(self._test_name, failures, total_test_time, has_stderr)
  • trunk/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py

    r124958 r126188  
    7070            # FIXME: We should always have 2 images here.
    7171            if driver_output.image and expected_driver_output.image:
    72                 diff_image, diff_percent, err_str = port.diff_image(driver_output.image, expected_driver_output.image, tolerance=0)
     72                diff_image, diff_percent, err_str = port.diff_image(expected_driver_output.image, driver_output.image, tolerance=0)
    7373                if diff_image:
    7474                    writer.write_image_diff_files(diff_image)
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py

    r124958 r126188  
    217217
    218218        executable = self._path_to_image_diff()
     219        # Note that although we are handed 'old', 'new', image_diff wants 'new', 'old'.
    219220        comand = [executable, '--diff', native_actual_filename, native_expected_filename, native_diff_filename]
    220221
  • trunk/Tools/Scripts/webkitpy/layout_tests/port/image_diff.py

    r124958 r126188  
    5858            if not self._process:
    5959                self._start(tolerance)
     60            # Note that although we are handed 'old', 'new', ImageDiff wants 'new', 'old'.
    6061            self._process.write('Content-Length: %d\n%sContent-Length: %d\n%s' % (
    6162                len(actual_contents), actual_contents,
Note: See TracChangeset for help on using the changeset viewer.