Tools/ChangeLog

 12011-06-27 Adam Barth <abarth@webkit.org>
 2
 3 Reviewed by NOBODY (OOPS!).
 4
 5 new-run-webkit-tests does not report stderr output
 6 https://bugs.webkit.org/show_bug.cgi?id=37739
 7
 8 Almost all the infrastructure appears to be in place to report stderr
 9 in results.html. We just need to wire up a bool to tell results.html
 10 to create the hyperlink.
 11
 12 * Scripts/webkitpy/layout_tests/layout_package/manager.py:
 13 * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
 14 * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
 15 * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
 16 * Scripts/webkitpy/layout_tests/port/base.py:
 17
1182011-06-27 Eric Seidel <eric@webkit.org>
219
320 Reviewed by Adam Barth.
89809

Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py

@@def summarize_results(port_obj, expectat
132132 continue
133133
134134 test_dict = {}
135  if False:
 135 if result.has_stderr:
136136 test_dict['has_stderr'] = True
137137
138138 if result_type == test_expectations.PASS:
89797

Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py

@@class SingleTestRunner:
140140 # FIXME: It the test crashed or timed out, it might be bettter to avoid
141141 # to write new baselines.
142142 self._save_baselines(driver_output)
143  return TestResult(self._filename, failures, driver_output.test_time)
 143 return TestResult(self._filename, failures, driver_output.test_time, driver_output.has_stderr())
144144
145145 def _save_baselines(self, driver_output):
146146 # Although all test_shell/DumpRenderTree output should be utf-8,

@@class SingleTestRunner:
220220 if driver_output.crash:
221221 # Don't continue any more if we already have a crash.
222222 # In case of timeouts, we continue since we still want to see the text and image output.
223  return TestResult(self._filename, failures, driver_output.test_time)
 223 return TestResult(self._filename, failures, driver_output.test_time, driver_output.has_stderr())
224224
225225 failures.extend(self._compare_text(driver_output.text, expected_driver_output.text))
226226 failures.extend(self._compare_audio(driver_output.audio, expected_driver_output.audio))
227227 if self._options.pixel_tests:
228228 failures.extend(self._compare_image(driver_output, expected_driver_output))
229  return TestResult(self._filename, failures, driver_output.test_time)
 229 return TestResult(self._filename, failures, driver_output.test_time, driver_output.has_stderr())
230230
231231 def _compare_text(self, actual_text, expected_text):
232232 failures = []

@@class SingleTestRunner:
281281
282282 def _compare_output_with_reference(self, driver_output1, driver_output2):
283283 total_test_time = driver_output1.test_time + driver_output2.test_time
 284 has_stderr = driver_output1.has_stderr() or driver_output2.has_stderr()
284285 failures = []
285286 failures.extend(self._handle_error(driver_output1))
286287 if failures:
287288 # Don't continue any more if we already have crash or timeout.
288  return TestResult(self._filename, failures, total_test_time)
 289 return TestResult(self._filename, failures, total_test_time, has_stderr)
289290 failures.extend(self._handle_error(driver_output2, reference_filename=self._reference_filename))
290291 if failures:
291  return TestResult(self._filename, failures, total_test_time)
 292 return TestResult(self._filename, failures, total_test_time, has_stderr)
292293
293294 if self._is_mismatch_reftest:
294295 if driver_output1.image_hash == driver_output2.image_hash:
295296 failures.append(test_failures.FailureReftestMismatchDidNotOccur())
296297 elif driver_output1.image_hash != driver_output2.image_hash:
297298 failures.append(test_failures.FailureReftestMismatch())
298  return TestResult(self._filename, failures, total_test_time)
 299 return TestResult(self._filename, failures, total_test_time, has_stderr)
89797

Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py

@@class TestResultWriter(object):
9999 FILENAME_SUFFIX_ACTUAL = "-actual"
100100 FILENAME_SUFFIX_EXPECTED = "-expected"
101101 FILENAME_SUFFIX_DIFF = "-diff"
 102 FILENAME_SUFFIX_STDERR = "-stderr"
102103 FILENAME_SUFFIX_WDIFF = "-wdiff.html"
103104 FILENAME_SUFFIX_PRETTY_PATCH = "-pretty-diff.html"
104105 FILENAME_SUFFIX_IMAGE_DIFF = "-diff.png"

@@class TestResultWriter(object):
161162
162163 def write_stderr(self, error):
163164 fs = self._port._filesystem
164  filename = self.output_filename("-stderr.txt")
 165 filename = self.output_filename(self.FILENAME_SUFFIX_STDERR + ".txt")
165166 fs.maybe_make_directory(fs.dirname(filename))
166167 fs.write_binary_file(filename, error)
167168
89797

Tools/Scripts/webkitpy/layout_tests/layout_package/test_results.py

@@class TestResult(object):
3838 def loads(str):
3939 return cPickle.loads(str)
4040
41  def __init__(self, filename, failures=None, test_run_time=None):
 41 def __init__(self, filename, failures=None, test_run_time=None, has_stderr=False):
4242 # FIXME: s/filename/name to be consistent with the rest of layout_package.
4343 self.filename = filename
4444 self.failures = failures or []
4545 self.test_run_time = test_run_time or 0
 46 self.has_stderr = has_stderr
4647 # FIXME: Setting this in the constructor makes this class hard to mutate.
4748 self.type = test_failures.determine_result_type(failures)
4849
89797

Tools/Scripts/webkitpy/layout_tests/port/base.py

@@class DriverOutput(object):
962962 self.timeout = timeout
963963 self.error = error
964964
 965 def has_stderr(self):
 966 return bool(self.error)
 967
965968
966969class Driver:
967970 """Abstract interface for the DumpRenderTree interface."""
89798