Diff
Modified: trunk/Tools/ChangeLog (90538 => 90539)
--- trunk/Tools/ChangeLog 2011-07-07 04:42:54 UTC (rev 90538)
+++ trunk/Tools/ChangeLog 2011-07-07 05:24:07 UTC (rev 90539)
@@ -1,5 +1,20 @@
2011-07-06 Adam Barth <[email protected]>
+ Wean resultsjsonparser off unexpected_results.json
+ https://bugs.webkit.org/show_bug.cgi?id=64061
+
+ Reviewed by Eric Seidel.
+
+ We're about to delete unexpected_results.json, so we need to remove all
+ the users.
+
+ * Scripts/webkitpy/common/config/ports.py:
+ * Scripts/webkitpy/common/net/resultsjsonparser.py:
+ * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
+ * Scripts/webkitpy/layout_tests/models/test_expectations.py:
+
+2011-07-06 Adam Barth <[email protected]>
+
Cleanup result_summary.py
https://bugs.webkit.org/show_bug.cgi?id=64057
Modified: trunk/Tools/Scripts/webkitpy/common/config/ports.py (90538 => 90539)
--- trunk/Tools/Scripts/webkitpy/common/config/ports.py 2011-07-07 04:42:54 UTC (rev 90538)
+++ trunk/Tools/Scripts/webkitpy/common/config/ports.py 2011-07-07 05:24:07 UTC (rev 90539)
@@ -284,4 +284,4 @@
@classmethod
def layout_tests_results_path(cls):
- return os.path.join(cls.results_directory, "unexpected_results.json")
+ return os.path.join(cls.results_directory, "full_results.json")
Modified: trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py (90538 => 90539)
--- trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py 2011-07-07 04:42:54 UTC (rev 90538)
+++ trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py 2011-07-07 05:24:07 UTC (rev 90539)
@@ -33,6 +33,7 @@
# python 2.5 compatibility
import webkitpy.thirdparty.simplejson as json
+from webkitpy.common.memoized import memoized
# FIXME: common should never import from new-run-webkit-tests, one of these files needs to move.
from webkitpy.layout_tests.layout_package import json_results_generator
from webkitpy.layout_tests.models import test_expectations, test_results, test_failures
@@ -63,16 +64,36 @@
self._test_name = test_name
self._result_dict = result_dict
+ def did_pass_or_run_as_expected(self):
+ return self.did_pass() or self.did_run_as_expected()
+
def did_pass(self):
- return test_expectations.PASS in self._actual_as_expectations()
+ return test_expectations.PASS in self._actual_as_tokens()
- def _actual_as_expectations(self):
+ def did_run_as_expected(self):
+ actual_results = self._actual_as_tokens()
+ expected_results = self._expected_as_tokens()
+ for actual_result in actual_results:
+ if not test_expectations.result_was_expected(actual_result, expected_results, False, False):
+ return False
+ return True
+
+ def _tokenize(self, results_string):
+ tokens = map(test_expectations.TestExpectations.expectation_from_string, results_string.split(' '))
+ if None in tokens:
+ log("Unrecognized result in %s" % results_string)
+ return tokens
+
+ @memoized
+ def _actual_as_tokens(self):
actual_results = self._result_dict['actual']
- expectations = map(test_expectations.TestExpectations.expectation_from_string, actual_results.split(' '))
- if None in expectations:
- log("Unrecognized actual result in %s" % actual_results)
- return expectations
+ return self._tokenize(actual_results)
+ @memoized
+ def _expected_as_tokens(self):
+ actual_results = self._result_dict['expected']
+ return self._tokenize(actual_results)
+
def _failure_types_from_actual_result(self, actual):
# FIXME: There doesn't seem to be a full list of all possible values of
# 'actual' anywhere. However JSONLayoutResultsGenerator.FAILURE_TO_CHAR
@@ -100,7 +121,7 @@
def _failures(self):
if self.did_pass():
return []
- return sum(map(self._failure_types_from_actual_result, self._actual_as_expectations()), [])
+ return sum(map(self._failure_types_from_actual_result, self._actual_as_tokens()), [])
def test_result(self):
# FIXME: Optionally pull in the test runtime from times_ms.json.
@@ -108,9 +129,6 @@
class ResultsJSONParser(object):
- """Parse unexpected_results.json files from new-run-webkit-tests
- This will not parse the old results.json format."""
-
@classmethod
def parse_results_json(cls, json_string):
if not json_results_generator.has_json_wrapper(json_string):
@@ -124,5 +142,5 @@
# FIXME: What's the short sexy python way to filter None?
# I would use [foo.bar() for foo in foos if foo.bar()] but bar() is expensive.
- non_passing_results = [result.test_result() for result in json_results if not result.did_pass()]
- return filter(lambda a: a, non_passing_results)
+ unexpected_failures = [result.test_result() for result in json_results if not result.did_pass_or_run_as_expected()]
+ return filter(lambda a: a, unexpected_failures)
Modified: trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py (90538 => 90539)
--- trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py 2011-07-07 04:42:54 UTC (rev 90538)
+++ trunk/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py 2011-07-07 05:24:07 UTC (rev 90539)
@@ -51,6 +51,10 @@
"expected": "PASS",
"actual": "PASS TEXT"
},
+ "prototype-chocolate.html": {
+ "expected": "TEXT",
+ "actual": "TEXT"
+ },
"prototype-strawberry.html": {
"expected": "PASS",
"actual": "TEXT PASS"
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py (90538 => 90539)
--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py 2011-07-07 04:42:54 UTC (rev 90538)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py 2011-07-07 05:24:07 UTC (rev 90539)
@@ -51,8 +51,7 @@
(NO_CHANGE, REMOVE_TEST, REMOVE_PLATFORM, ADD_PLATFORMS_EXCEPT_THIS) = range(4)
-def result_was_expected(result, expected_results, test_needs_rebaselining,
- test_is_skipped):
+def result_was_expected(result, expected_results, test_needs_rebaselining, test_is_skipped):
"""Returns whether we got a result we were expecting.
Args:
result: actual result of a test execution
@@ -195,8 +194,7 @@
MISSING: ('no expected result found',
'no expected results found')}
- EXPECTATION_ORDER = (PASS, CRASH, TIMEOUT, MISSING, IMAGE_PLUS_TEXT,
- TEXT, IMAGE, AUDIO, FAIL, SKIP)
+ EXPECTATION_ORDER = (PASS, CRASH, TIMEOUT, MISSING, IMAGE_PLUS_TEXT, TEXT, IMAGE, AUDIO, FAIL, SKIP)
BUILD_TYPES = ('debug', 'release')