Title: [90539] trunk/Tools
Revision
90539
Author
[email protected]
Date
2011-07-06 22:24:07 -0700 (Wed, 06 Jul 2011)

Log Message

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:

Modified Paths

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')
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to