Changeset 78014 in webkit
- Timestamp:
- Feb 8, 2011 9:33:04 PM (13 years ago)
- Location:
- trunk/Tools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r78012 r78014 1 2011-02-08 Hayato Ito <hayato@chromium.org> 2 3 Reviewed by Tony Chang. 4 5 [NRWT] Pull up rebaseline code from compare_output() function defined 6 in text_diff.py and image_diff.py into a SingleTestRunner. 7 8 This patch is a first step for eliminating test_type/* classes. 9 10 https://bugs.webkit.org/show_bug.cgi?id=53071 11 12 * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: 13 * Scripts/webkitpy/layout_tests/test_types/image_diff.py: 14 * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: 15 * Scripts/webkitpy/layout_tests/test_types/text_diff.py: 16 1 17 2011-02-07 Ojan Vafai <ojan@chromium.org> 2 18 -
trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py
r77998 r78014 184 184 185 185 def _run(self, driver, test_input): 186 if self._options.new_baseline or self._options.reset_results: 187 return self._run_rebaseline(driver, test_input) 188 return self._run_compare_test(driver, test_input) 189 190 def _run_compare_test(self, driver, test_input): 186 191 driver_output = self._driver.run_test(self._driver_input(test_input)) 187 192 return self._process_output(driver_output) 188 193 189 def _process_output(self, driver_output): 190 """Receives the output from a DumpRenderTree process, subjects it to a 191 number of tests, and returns a list of failure types the test produced. 194 def _run_rebaseline(self, driver, test_input): 195 driver_output = self._driver.run_test(self._driver_input(test_input)) 196 failures = self._handle_error(driver_output) 197 # FIXME: It the test crashed or timed out, it might be bettter to avoid 198 # to write new baselines. 199 self._save_baselines(driver_output) 200 return TestResult(self._filename, failures, driver_output.test_time) 201 202 def _save_baselines(self, driver_output): 203 # Although all test_shell/DumpRenderTree output should be utf-8, 204 # we do not ever decode it inside run-webkit-tests. For some tests 205 # DumpRenderTree may not output utf-8 text (e.g. webarchives). 206 self._save_baseline_data(driver_output.text, ".txt", encoding=None, 207 generate_new_baseline=self._options.new_baseline) 208 if self._options.pixel_tests and driver_output.image_hash: 209 self._save_baseline_data(driver_output.image, ".png", encoding=None, 210 generate_new_baseline=self._options.new_baseline) 211 self._save_baseline_data(driver_output.image_hash, ".checksum", 212 encoding="ascii", 213 generate_new_baseline=self._options.new_baseline) 214 215 def _save_baseline_data(self, data, modifier, encoding, 216 generate_new_baseline=True): 217 """Saves a new baseline file into the port's baseline directory. 218 219 The file will be named simply "<test>-expected<modifier>", suitable for 220 use as the expected results in a later run. 221 192 222 Args: 193 driver_output: a DriverOutput object containing the output from the driver 194 195 Returns: a TestResult object 223 data: result to be saved as the new baseline 224 modifier: type of the result file, e.g. ".txt" or ".png" 225 encoding: file encoding (none, "utf-8", etc.) 226 generate_new_baseline: whether to enerate a new, platform-specific 227 baseline, or update the existing one 196 228 """ 229 230 port = self._port 231 fs = port._filesystem 232 if generate_new_baseline: 233 relative_dir = fs.dirname(self._testname) 234 baseline_path = port.baseline_path() 235 output_dir = fs.join(baseline_path, relative_dir) 236 output_file = fs.basename(fs.splitext(self._filename)[0] + 237 "-expected" + modifier) 238 fs.maybe_make_directory(output_dir) 239 output_path = fs.join(output_dir, output_file) 240 _log.debug('writing new baseline result "%s"' % (output_path)) 241 else: 242 output_path = port.expected_filename(self._filename, modifier) 243 _log.debug('resetting baseline result "%s"' % output_path) 244 245 port.update_baseline(output_path, data, encoding) 246 247 def _handle_error(self, driver_output): 197 248 failures = [] 198 249 fs = self._port._filesystem 199 250 if driver_output.timeout: 251 failures.append(test_failures.FailureTimeout()) 200 252 if driver_output.crash: 201 253 failures.append(test_failures.FailureCrash()) 202 if driver_output.timeout:203 failures.append(test_failures.FailureTimeout())204 205 if driver_output.crash:206 254 _log.debug("%s Stacktrace for %s:\n%s" % (self._worker_name, self._testname, 207 255 driver_output.error)) … … 213 261 _log.debug("%s %s output stderr lines:\n%s" % (self._worker_name, self._testname, 214 262 driver_output.error)) 215 263 return failures 264 265 def _run_test(self): 266 driver_output = self._driver.run_test(self._driver_input()) 267 return self._process_output(driver_output) 268 269 def _process_output(self, driver_output): 270 """Receives the output from a DumpRenderTree process, subjects it to a 271 number of tests, and returns a list of failure types the test produced. 272 Args: 273 driver_output: a DriverOutput object containing the output from the driver 274 275 Returns: a TestResult object 276 """ 277 fs = self._port._filesystem 278 failures = self._handle_error(driver_output) 216 279 expected_driver_output = self._expected_driver_output() 217 280 -
trunk/Tools/Scripts/webkitpy/layout_tests/test_types/image_diff.py
r77606 r78014 50 50 class ImageDiff(test_type_base.TestTypeBase): 51 51 52 def _save_baseline_files(self, filename, image, image_hash,53 generate_new_baseline):54 """Saves new baselines for the PNG and checksum.55 56 Args:57 filename: test filename58 image: a image output59 image_hash: a checksum of the image60 generate_new_baseline: whether to generate a new, platform-specific61 baseline, or update the existing one62 """63 self._save_baseline_data(filename, image, ".png", encoding=None,64 generate_new_baseline=generate_new_baseline)65 self._save_baseline_data(filename, image_hash, ".checksum",66 encoding="ascii",67 generate_new_baseline=generate_new_baseline)68 69 52 def _copy_image(self, filename, actual_image, expected_image): 70 53 self.write_output_files(filename, '.png', … … 95 78 # If we didn't produce a hash file, this test must be text-only. 96 79 if actual_driver_output.image_hash is None: 97 return failures98 99 # If we're generating a new baseline, we pass.100 if options.new_baseline or options.reset_results:101 self._save_baseline_files(filename, actual_driver_output.image,102 actual_driver_output.image_hash,103 options.new_baseline)104 80 return failures 105 81 -
trunk/Tools/Scripts/webkitpy/layout_tests/test_types/test_type_base.py
r77606 r78014 70 70 self._port.relative_test_filename(filename)) 71 71 fs.maybe_make_directory(fs.dirname(output_filename)) 72 73 def _save_baseline_data(self, filename, data, modifier, encoding,74 generate_new_baseline=True):75 """Saves a new baseline file into the port's baseline directory.76 77 The file will be named simply "<test>-expected<modifier>", suitable for78 use as the expected results in a later run.79 80 Args:81 filename: path to the test file82 data: result to be saved as the new baseline83 modifier: type of the result file, e.g. ".txt" or ".png"84 encoding: file encoding (none, "utf-8", etc.)85 generate_new_baseline: whether to enerate a new, platform-specific86 baseline, or update the existing one87 """88 89 port = self._port90 fs = self._port._filesystem91 if generate_new_baseline:92 relative_dir = fs.dirname(port.relative_test_filename(filename))93 baseline_path = port.baseline_path()94 output_dir = fs.join(baseline_path, relative_dir)95 output_file = fs.basename(fs.splitext(filename)[0] +96 self.FILENAME_SUFFIX_EXPECTED + modifier)97 fs.maybe_make_directory(output_dir)98 output_path = fs.join(output_dir, output_file)99 _log.debug('writing new baseline result "%s"' % (output_path))100 else:101 output_path = port.expected_filename(filename, modifier)102 _log.debug('resetting baseline result "%s"' % output_path)103 104 port.update_baseline(output_path, data, encoding)105 72 106 73 def output_filename(self, filename, modifier): -
trunk/Tools/Scripts/webkitpy/layout_tests/test_types/text_diff.py
r77606 r78014 60 60 failures = [] 61 61 62 # If we're generating a new baseline, we pass.63 if options.new_baseline or options.reset_results:64 # Although all DumpRenderTree output should be utf-8, we do not65 # ever decode it inside run-webkit-tests. For some tests66 # DumpRenderTree may not output utf-8 text (e.g. webarchives).67 self._save_baseline_data(filename, actual_driver_output.text,68 ".txt", encoding=None,69 generate_new_baseline=options.new_baseline)70 return failures71 72 62 # Normalize text to diff 73 63 actual_text = self._get_normalized_output_text(actual_driver_output.text)
Note: See TracChangeset
for help on using the changeset viewer.