rebaseline.py: if expectations dir contains JSON format results, update those instead of image files
Part of Step 3 in https://goto.google.com/ChecksumTransitionDetail
R=senorblanco@chromium.org
Review URL: https://codereview.chromium.org/18348018
git-svn-id: http://skia.googlecode.com/svn/trunk@9910 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/gm_json.py b/gm/gm_json.py
index cd41984..35b954e 100644
--- a/gm/gm_json.py
+++ b/gm/gm_json.py
@@ -15,18 +15,38 @@
import json
+# Key strings used in GM results JSON files (both expected-results.json and
+# actual-results.json).
+#
# These constants must be kept in sync with the kJsonKey_ constants in
# gm_expectations.cpp !
+
JSONKEY_ACTUALRESULTS = 'actual-results'
+# Tests whose results failed to match expectations.
JSONKEY_ACTUALRESULTS_FAILED = 'failed'
+# Tests whose results failed to match expectations, but IGNOREFAILURE causes
+# us to take them less seriously.
JSONKEY_ACTUALRESULTS_FAILUREIGNORED = 'failure-ignored'
+# Tests for which we do not have any expectations. They may be new tests that
+# we haven't had a chance to check in expectations for yet, or we may have
+# consciously decided to leave them without expectations because we are unhappy
+# with the results (although we should try to move away from that, and instead
+# check in expectations with the IGNOREFAILURE flag set).
JSONKEY_ACTUALRESULTS_NOCOMPARISON = 'no-comparison'
+# Tests whose results matched their expectations.
JSONKEY_ACTUALRESULTS_SUCCEEDED = 'succeeded'
JSONKEY_EXPECTEDRESULTS = 'expected-results'
+# One or more [HashType/DigestValue] pairs representing valid results for this
+# test. Typically, there will just be one pair, but we allow for multiple
+# expectations, and the test will pass if any one of them is matched.
JSONKEY_EXPECTEDRESULTS_ALLOWEDDIGESTS = 'allowed-digests'
+# If IGNOREFAILURE is set to True, a failure of this test will be reported
+# within the FAILUREIGNORED section (thus NOT causing the buildbots to go red)
+# rather than the FAILED section (which WOULD cause the buildbots to go red).
JSONKEY_EXPECTEDRESULTS_IGNOREFAILURE = 'ignore-failure'
+# Allowed hash types for test expectations.
JSONKEY_HASHTYPE_BITMAP_64BITMD5 = 'bitmap-64bitMD5'
def LoadFromString(file_contents):
@@ -45,3 +65,8 @@
above."""
file_contents = open(file_path, 'r').read()
return LoadFromString(file_contents)
+
+def WriteToFile(json_dict, file_path):
+ """Writes the JSON summary in json_dict out to file_path."""
+ with open(file_path, 'w') as outfile:
+ json.dump(json_dict, outfile, sort_keys=True, indent=2)