Delete image-based rebaselining tool; we have switched to checksums
authorepoger@google.com <epoger@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 2 Aug 2013 20:54:46 +0000 (20:54 +0000)
committerepoger@google.com <epoger@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Fri, 2 Aug 2013 20:54:46 +0000 (20:54 +0000)
R=borenet@google.com

Review URL: https://codereview.chromium.org/21901004

git-svn-id: http://skia.googlecode.com/svn/trunk@10524 2bbb7eff-a529-9590-31e7-b0007b416f81

18 files changed:
tools/rebaseline.py
tools/rebaseline_imagefiles.py [deleted file]
tools/tests/rebaseline/input/fake-gm-expected-dir/README [deleted file]
tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/README [deleted file]
tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/README [deleted file]
tools/tests/rebaseline/output/exercise-bug1403/output-expected/command_line [deleted file]
tools/tests/rebaseline/output/exercise-bug1403/output-expected/return_value [deleted file]
tools/tests/rebaseline/output/exercise-bug1403/output-expected/stdout [deleted file]
tools/tests/rebaseline/output/subset/output-expected/command_line [deleted file]
tools/tests/rebaseline/output/subset/output-expected/return_value [deleted file]
tools/tests/rebaseline/output/subset/output-expected/stdout [deleted file]
tools/tests/rebaseline/output/using-json1-add-new/output-expected/command_line [deleted file]
tools/tests/rebaseline/output/using-json1-add-new/output-expected/return_value [deleted file]
tools/tests/rebaseline/output/using-json1-add-new/output-expected/stdout [deleted file]
tools/tests/rebaseline/output/using-json1/output-expected/command_line [deleted file]
tools/tests/rebaseline/output/using-json1/output-expected/return_value [deleted file]
tools/tests/rebaseline/output/using-json1/output-expected/stdout [deleted file]
tools/tests/run.sh

index bf0e1cb1b30fd6cf790aad2c96ed366547f369b4..b80ab9fb2954d1a31b5c0907afe8827f0c7889c0 100755 (executable)
@@ -9,8 +9,6 @@ found in the LICENSE file.
 
 '''
 Rebaselines the given GM tests, on all bots and all configurations.
-
-TODO(epoger): Fix indentation in this file (2-space indents, not 4-space).
 '''
 
 # System-level imports
@@ -21,9 +19,6 @@ import subprocess
 import sys
 import urllib2
 
-# Imports from local directory
-import rebaseline_imagefiles
-
 # Imports from within Skia
 #
 # We need to add the 'gm' directory, so that we can import gm_json.py within
@@ -38,7 +33,7 @@ import rebaseline_imagefiles
 GM_DIRECTORY = os.path.realpath(
     os.path.join(os.path.dirname(os.path.dirname(__file__)), 'gm'))
 if GM_DIRECTORY not in sys.path:
-    sys.path.append(GM_DIRECTORY)
+  sys.path.append(GM_DIRECTORY)
 import gm_json
 
 # Mapping of expectations/gm subdir (under
@@ -73,209 +68,207 @@ SUBDIR_MAPPING = {
 
 
 class _InternalException(Exception):
-    pass
+  pass
 
 # Object that handles exceptions, either raising them immediately or collecting
 # them to display later on.
 class ExceptionHandler(object):
 
-    # params:
-    #  keep_going_on_failure: if False, report failures and quit right away;
-    #                         if True, collect failures until
-    #                         ReportAllFailures() is called
-    def __init__(self, keep_going_on_failure=False):
-        self._keep_going_on_failure = keep_going_on_failure
-        self._failures_encountered = []
-        self._exiting = False
-
-    # Exit the program with the given status value.
-    def _Exit(self, status=1):
-        self._exiting = True
-        sys.exit(status)
-
-    # We have encountered an exception; either collect the info and keep going,
-    # or exit the program right away.
-    def RaiseExceptionOrContinue(self, e):
-        # If we are already quitting the program, propagate any exceptions
-        # so that the proper exit status will be communicated to the shell.
-        if self._exiting:
-            raise e
-
-        if self._keep_going_on_failure:
-            print >> sys.stderr, 'WARNING: swallowing exception %s' % e
-            self._failures_encountered.append(e)
-        else:
-            print >> sys.stderr, e
-            print >> sys.stderr, (
-                'Halting at first exception; to keep going, re-run ' +
-                'with the --keep-going-on-failure option set.')
-            self._Exit()
+  # params:
+  #  keep_going_on_failure: if False, report failures and quit right away;
+  #                         if True, collect failures until
+  #                         ReportAllFailures() is called
+  def __init__(self, keep_going_on_failure=False):
+    self._keep_going_on_failure = keep_going_on_failure
+    self._failures_encountered = []
+    self._exiting = False
+
+  # Exit the program with the given status value.
+  def _Exit(self, status=1):
+    self._exiting = True
+    sys.exit(status)
+
+  # We have encountered an exception; either collect the info and keep going,
+  # or exit the program right away.
+  def RaiseExceptionOrContinue(self, e):
+    # If we are already quitting the program, propagate any exceptions
+    # so that the proper exit status will be communicated to the shell.
+    if self._exiting:
+      raise e
+
+    if self._keep_going_on_failure:
+      print >> sys.stderr, 'WARNING: swallowing exception %s' % e
+      self._failures_encountered.append(e)
+    else:
+      print >> sys.stderr, e
+      print >> sys.stderr, (
+          'Halting at first exception; to keep going, re-run ' +
+          'with the --keep-going-on-failure option set.')
+      self._Exit()
 
-    def ReportAllFailures(self):
-        if self._failures_encountered:
-            print >> sys.stderr, ('Encountered %d failures (see above).' %
-                                  len(self._failures_encountered))
-            self._Exit()
+  def ReportAllFailures(self):
+    if self._failures_encountered:
+      print >> sys.stderr, ('Encountered %d failures (see above).' %
+                            len(self._failures_encountered))
+      self._Exit()
 
 
 # Object that rebaselines a JSON expectations file (not individual image files).
 class JsonRebaseliner(object):
 
-    # params:
-    #  expectations_root: root directory of all expectations JSON files
-    #  expectations_input_filename: filename (under expectations_root) of JSON
-    #                               expectations file to read; typically
-    #                               "expected-results.json"
-    #  expectations_output_filename: filename (under expectations_root) to
-    #                                which updated expectations should be
-    #                                written; typically the same as
-    #                                expectations_input_filename, to overwrite
-    #                                the old content
-    #  actuals_base_url: base URL from which to read actual-result JSON files
-    #  actuals_filename: filename (under actuals_base_url) from which to read a
-    #                    summary of results; typically "actual-results.json"
-    #  exception_handler: reference to rebaseline.ExceptionHandler object
-    #  tests: list of tests to rebaseline, or None if we should rebaseline
-    #         whatever files the JSON results summary file tells us to
-    #  configs: which configs to run for each test, or None if we should
-    #           rebaseline whatever configs the JSON results summary file tells
-    #           us to
-    #  add_new: if True, add expectations for tests which don't have any yet
-    def __init__(self, expectations_root, expectations_input_filename,
-                 expectations_output_filename, actuals_base_url,
-                 actuals_filename, exception_handler,
-                 tests=None, configs=None, add_new=False):
-        self._expectations_root = expectations_root
-        self._expectations_input_filename = expectations_input_filename
-        self._expectations_output_filename = expectations_output_filename
-        self._tests = tests
-        self._configs = configs
-        self._actuals_base_url = actuals_base_url
-        self._actuals_filename = actuals_filename
-        self._exception_handler = exception_handler
-        self._add_new = add_new
-        self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
-        self._using_svn = os.path.isdir(os.path.join(expectations_root, '.svn'))
-
-    # Executes subprocess.call(cmd).
-    # Raises an Exception if the command fails.
-    def _Call(self, cmd):
-        if subprocess.call(cmd) != 0:
-            raise _InternalException('error running command: ' + ' '.join(cmd))
-
-    # Returns the full contents of filepath, as a single string.
-    # If filepath looks like a URL, try to read it that way instead of as
-    # a path on local storage.
-    #
-    # Raises _InternalException if there is a problem.
-    def _GetFileContents(self, filepath):
-        if filepath.startswith('http:') or filepath.startswith('https:'):
-            try:
-                return urllib2.urlopen(filepath).read()
-            except urllib2.HTTPError as e:
-                raise _InternalException('unable to read URL %s: %s' % (
-                    filepath, e))
-        else:
-            return open(filepath, 'r').read()
-
-    # Returns a dictionary of actual results from actual-results.json file.
-    #
-    # The dictionary returned has this format:
-    # {
-    #  u'imageblur_565.png': [u'bitmap-64bitMD5', 3359963596899141322],
-    #  u'imageblur_8888.png': [u'bitmap-64bitMD5', 4217923806027861152],
-    #  u'shadertext3_8888.png': [u'bitmap-64bitMD5', 3713708307125704716]
-    # }
-    #
-    # If the JSON actual result summary file cannot be loaded, logs a warning
-    # message and returns None.
-    # If the JSON actual result summary file can be loaded, but we have
-    # trouble parsing it, raises an Exception.
-    #
-    # params:
-    #  json_url: URL pointing to a JSON actual result summary file
-    #  sections: a list of section names to include in the results, e.g.
-    #            [gm_json.JSONKEY_ACTUALRESULTS_FAILED,
-    #             gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON] ;
-    #            if None, then include ALL sections.
-    def _GetActualResults(self, json_url, sections=None):
-        try:
-            json_contents = self._GetFileContents(json_url)
-        except _InternalException:
-            print >> sys.stderr, (
-                'could not read json_url %s ; skipping this platform.' %
-                json_url)
-            return None
-        json_dict = gm_json.LoadFromString(json_contents)
-        results_to_return = {}
-        actual_results = json_dict[gm_json.JSONKEY_ACTUALRESULTS]
-        if not sections:
-            sections = actual_results.keys()
-        for section in sections:
-            section_results = actual_results[section]
-            if section_results:
-                results_to_return.update(section_results)
-        return results_to_return
-
-    # Rebaseline all tests/types we specified in the constructor,
-    # within this expectations/gm subdir.
-    #
-    # params:
-    #  subdir : e.g. 'base-shuttle-win7-intel-float'
-    #  builder : e.g. 'Test-Win7-ShuttleA-HD2000-x86-Release'
-    def RebaselineSubdir(self, subdir, builder):
-        # Read in the actual result summary, and extract all the tests whose
-        # results we need to update.
-        actuals_url = '/'.join([self._actuals_base_url,
-                                subdir, builder, subdir,
-                                self._actuals_filename])
-        # In most cases, we won't need to re-record results that are already
-        # succeeding, but including the SUCCEEDED results will allow us to
-        # re-record expectations if they somehow get out of sync.
-        sections = [gm_json.JSONKEY_ACTUALRESULTS_FAILED,
-                    gm_json.JSONKEY_ACTUALRESULTS_SUCCEEDED]
-        if self._add_new:
-            sections.append(gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON)
-        results_to_update = self._GetActualResults(json_url=actuals_url,
-                                                   sections=sections)
-
-        # Read in current expectations.
-        expectations_input_filepath = os.path.join(
-            self._expectations_root, subdir, self._expectations_input_filename)
-        expectations_dict = gm_json.LoadFromFile(expectations_input_filepath)
-        expected_results = expectations_dict[gm_json.JSONKEY_EXPECTEDRESULTS]
-
-        # Update the expectations in memory, skipping any tests/configs that
-        # the caller asked to exclude.
-        skipped_images = []
-        if results_to_update:
-            for (image_name, image_results) in results_to_update.iteritems():
-                (test, config) = \
-                    self._image_filename_re.match(image_name).groups()
-                if self._tests:
-                    if test not in self._tests:
-                        skipped_images.append(image_name)
-                        continue
-                if self._configs:
-                    if config not in self._configs:
-                        skipped_images.append(image_name)
-                        continue
-                if not expected_results.get(image_name):
-                    expected_results[image_name] = {}
-                expected_results[image_name] \
-                    [gm_json.JSONKEY_EXPECTEDRESULTS_ALLOWEDDIGESTS] = \
+  # params:
+  #  expectations_root: root directory of all expectations JSON files
+  #  expectations_input_filename: filename (under expectations_root) of JSON
+  #                               expectations file to read; typically
+  #                               "expected-results.json"
+  #  expectations_output_filename: filename (under expectations_root) to
+  #                                which updated expectations should be
+  #                                written; typically the same as
+  #                                expectations_input_filename, to overwrite
+  #                                the old content
+  #  actuals_base_url: base URL from which to read actual-result JSON files
+  #  actuals_filename: filename (under actuals_base_url) from which to read a
+  #                    summary of results; typically "actual-results.json"
+  #  exception_handler: reference to rebaseline.ExceptionHandler object
+  #  tests: list of tests to rebaseline, or None if we should rebaseline
+  #         whatever files the JSON results summary file tells us to
+  #  configs: which configs to run for each test, or None if we should
+  #           rebaseline whatever configs the JSON results summary file tells
+  #           us to
+  #  add_new: if True, add expectations for tests which don't have any yet
+  def __init__(self, expectations_root, expectations_input_filename,
+               expectations_output_filename, actuals_base_url,
+               actuals_filename, exception_handler,
+               tests=None, configs=None, add_new=False):
+    self._expectations_root = expectations_root
+    self._expectations_input_filename = expectations_input_filename
+    self._expectations_output_filename = expectations_output_filename
+    self._tests = tests
+    self._configs = configs
+    self._actuals_base_url = actuals_base_url
+    self._actuals_filename = actuals_filename
+    self._exception_handler = exception_handler
+    self._add_new = add_new
+    self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
+    self._using_svn = os.path.isdir(os.path.join(expectations_root, '.svn'))
+
+  # Executes subprocess.call(cmd).
+  # Raises an Exception if the command fails.
+  def _Call(self, cmd):
+    if subprocess.call(cmd) != 0:
+      raise _InternalException('error running command: ' + ' '.join(cmd))
+
+  # Returns the full contents of filepath, as a single string.
+  # If filepath looks like a URL, try to read it that way instead of as
+  # a path on local storage.
+  #
+  # Raises _InternalException if there is a problem.
+  def _GetFileContents(self, filepath):
+    if filepath.startswith('http:') or filepath.startswith('https:'):
+      try:
+        return urllib2.urlopen(filepath).read()
+      except urllib2.HTTPError as e:
+        raise _InternalException('unable to read URL %s: %s' % (
+            filepath, e))
+    else:
+      return open(filepath, 'r').read()
+
+  # Returns a dictionary of actual results from actual-results.json file.
+  #
+  # The dictionary returned has this format:
+  # {
+  #  u'imageblur_565.png': [u'bitmap-64bitMD5', 3359963596899141322],
+  #  u'imageblur_8888.png': [u'bitmap-64bitMD5', 4217923806027861152],
+  #  u'shadertext3_8888.png': [u'bitmap-64bitMD5', 3713708307125704716]
+  # }
+  #
+  # If the JSON actual result summary file cannot be loaded, logs a warning
+  # message and returns None.
+  # If the JSON actual result summary file can be loaded, but we have
+  # trouble parsing it, raises an Exception.
+  #
+  # params:
+  #  json_url: URL pointing to a JSON actual result summary file
+  #  sections: a list of section names to include in the results, e.g.
+  #            [gm_json.JSONKEY_ACTUALRESULTS_FAILED,
+  #             gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON] ;
+  #            if None, then include ALL sections.
+  def _GetActualResults(self, json_url, sections=None):
+    try:
+      json_contents = self._GetFileContents(json_url)
+    except _InternalException:
+      print >> sys.stderr, (
+          'could not read json_url %s ; skipping this platform.' %
+          json_url)
+      return None
+    json_dict = gm_json.LoadFromString(json_contents)
+    results_to_return = {}
+    actual_results = json_dict[gm_json.JSONKEY_ACTUALRESULTS]
+    if not sections:
+      sections = actual_results.keys()
+    for section in sections:
+      section_results = actual_results[section]
+      if section_results:
+        results_to_return.update(section_results)
+    return results_to_return
+
+  # Rebaseline all tests/types we specified in the constructor,
+  # within this expectations/gm subdir.
+  #
+  # params:
+  #  subdir : e.g. 'base-shuttle-win7-intel-float'
+  #  builder : e.g. 'Test-Win7-ShuttleA-HD2000-x86-Release'
+  def RebaselineSubdir(self, subdir, builder):
+    # Read in the actual result summary, and extract all the tests whose
+    # results we need to update.
+    actuals_url = '/'.join([self._actuals_base_url,
+                            subdir, builder, subdir,
+                            self._actuals_filename])
+    # In most cases, we won't need to re-record results that are already
+    # succeeding, but including the SUCCEEDED results will allow us to
+    # re-record expectations if they somehow get out of sync.
+    sections = [gm_json.JSONKEY_ACTUALRESULTS_FAILED,
+                gm_json.JSONKEY_ACTUALRESULTS_SUCCEEDED]
+    if self._add_new:
+      sections.append(gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON)
+    results_to_update = self._GetActualResults(json_url=actuals_url,
+                                               sections=sections)
+
+    # Read in current expectations.
+    expectations_input_filepath = os.path.join(
+        self._expectations_root, subdir, self._expectations_input_filename)
+    expectations_dict = gm_json.LoadFromFile(expectations_input_filepath)
+    expected_results = expectations_dict[gm_json.JSONKEY_EXPECTEDRESULTS]
+
+    # Update the expectations in memory, skipping any tests/configs that
+    # the caller asked to exclude.
+    skipped_images = []
+    if results_to_update:
+      for (image_name, image_results) in results_to_update.iteritems():
+        (test, config) = self._image_filename_re.match(image_name).groups()
+        if self._tests:
+          if test not in self._tests:
+            skipped_images.append(image_name)
+            continue
+        if self._configs:
+          if config not in self._configs:
+            skipped_images.append(image_name)
+            continue
+        if not expected_results.get(image_name):
+          expected_results[image_name] = {}
+        expected_results[image_name][gm_json.JSONKEY_EXPECTEDRESULTS_ALLOWEDDIGESTS] = \
                         [image_results]
 
-        # Write out updated expectations.
-        expectations_output_filepath = os.path.join(
-            self._expectations_root, subdir, self._expectations_output_filename)
-        gm_json.WriteToFile(expectations_dict, expectations_output_filepath)
+    # Write out updated expectations.
+    expectations_output_filepath = os.path.join(
+        self._expectations_root, subdir, self._expectations_output_filename)
+    gm_json.WriteToFile(expectations_dict, expectations_output_filepath)
 
-        # Mark the JSON file as plaintext, so text-style diffs can be applied.
-        # Fixes https://code.google.com/p/skia/issues/detail?id=1442
-        if self._using_svn:
-            self._Call(['svn', 'propset', '--quiet', 'svn:mime-type',
-                        'text/x-json', expectations_output_filepath])
+    # Mark the JSON file as plaintext, so text-style diffs can be applied.
+    # Fixes https://code.google.com/p/skia/issues/detail?id=1442
+    if self._using_svn:
+      self._Call(['svn', 'propset', '--quiet', 'svn:mime-type',
+                  'text/x-json', expectations_output_filepath])
 
 # main...
 
@@ -301,12 +294,6 @@ parser.add_argument('--configs', metavar='CONFIG', nargs='+',
                     '"--configs 565 8888", as a filter over the full set of ' +
                     'results in ACTUALS_FILENAME; if unspecified, rebaseline ' +
                     '*all* configs that are available.')
-# TODO(epoger): The --dry-run argument will no longer be needed once we
-# are only rebaselining JSON files.
-parser.add_argument('--dry-run', action='store_true',
-                    help='instead of actually downloading files or adding ' +
-                    'files to checkout, display a list of operations that ' +
-                    'we would normally perform')
 parser.add_argument('--expectations-filename',
                     help='filename (under EXPECTATIONS_ROOT) to read ' +
                     'current expectations from, and to write new ' +
@@ -342,58 +329,44 @@ args = parser.parse_args()
 exception_handler = ExceptionHandler(
     keep_going_on_failure=args.keep_going_on_failure)
 if args.subdirs:
-    subdirs = args.subdirs
-    missing_json_is_fatal = True
+  subdirs = args.subdirs
+  missing_json_is_fatal = True
 else:
-    subdirs = sorted(SUBDIR_MAPPING.keys())
-    missing_json_is_fatal = False
+  subdirs = sorted(SUBDIR_MAPPING.keys())
+  missing_json_is_fatal = False
 for subdir in subdirs:
-    if not subdir in SUBDIR_MAPPING.keys():
-        raise Exception(('unrecognized platform subdir "%s"; ' +
-                         'should be one of %s') % (
-                             subdir, SUBDIR_MAPPING.keys()))
-    builder = SUBDIR_MAPPING[subdir]
-
-    # We instantiate different Rebaseliner objects depending
-    # on whether we are rebaselining an expected-results.json file, or
-    # individual image files.  Different expectations/gm subdirectories may move
-    # from individual image files to JSON-format expectations at different
-    # times, so we need to make this determination per subdirectory.
-    #
-    # See https://goto.google.com/ChecksumTransitionDetail
-    expectations_json_file = os.path.join(args.expectations_root, subdir,
-                                          args.expectations_filename)
-    if os.path.isfile(expectations_json_file):
-        rebaseliner = JsonRebaseliner(
-            expectations_root=args.expectations_root,
-            expectations_input_filename=args.expectations_filename,
-            expectations_output_filename=(args.expectations_filename_output or
-                                          args.expectations_filename),
-            tests=args.tests, configs=args.configs,
-            actuals_base_url=args.actuals_base_url,
-            actuals_filename=args.actuals_filename,
-            exception_handler=exception_handler,
-            add_new=args.add_new)
-    else:
-        # TODO(epoger): When we get rid of the ImageRebaseliner implementation,
-        # we should raise an Exception in this case (no JSON expectations file
-        # found to update), to prevent a recurrence of
-        # https://code.google.com/p/skia/issues/detail?id=1403 ('rebaseline.py
-        # script fails with misleading output when run outside of gm-expected
-        # dir')
-        rebaseliner = rebaseline_imagefiles.ImageRebaseliner(
-            expectations_root=args.expectations_root,
-            tests=args.tests, configs=args.configs,
-            dry_run=args.dry_run,
-            json_base_url=args.actuals_base_url,
-            json_filename=args.actuals_filename,
-            exception_handler=exception_handler,
-            add_new=args.add_new,
-            missing_json_is_fatal=missing_json_is_fatal)
-
+  if not subdir in SUBDIR_MAPPING.keys():
+    raise Exception(('unrecognized platform subdir "%s"; ' +
+                     'should be one of %s') % (
+                         subdir, SUBDIR_MAPPING.keys()))
+  builder = SUBDIR_MAPPING[subdir]
+
+  # We instantiate different Rebaseliner objects depending
+  # on whether we are rebaselining an expected-results.json file, or
+  # individual image files.  Different expectations/gm subdirectories may move
+  # from individual image files to JSON-format expectations at different
+  # times, so we need to make this determination per subdirectory.
+  #
+  # See https://goto.google.com/ChecksumTransitionDetail
+  expectations_json_file = os.path.join(args.expectations_root, subdir,
+                                        args.expectations_filename)
+  if os.path.isfile(expectations_json_file):
+    rebaseliner = JsonRebaseliner(
+        expectations_root=args.expectations_root,
+        expectations_input_filename=args.expectations_filename,
+        expectations_output_filename=(args.expectations_filename_output or
+                                      args.expectations_filename),
+        tests=args.tests, configs=args.configs,
+        actuals_base_url=args.actuals_base_url,
+        actuals_filename=args.actuals_filename,
+        exception_handler=exception_handler,
+        add_new=args.add_new)
     try:
-        rebaseliner.RebaselineSubdir(subdir=subdir, builder=builder)
+      rebaseliner.RebaselineSubdir(subdir=subdir, builder=builder)
     except BaseException as e:
-        exception_handler.RaiseExceptionOrContinue(e)
+      exception_handler.RaiseExceptionOrContinue(e)
+  else:
+    exception_handler.RaiseExceptionOrContinue(_InternalException(
+        'expectations_json_file %s not found' % expectations_json_file))
 
 exception_handler.ReportAllFailures()
diff --git a/tools/rebaseline_imagefiles.py b/tools/rebaseline_imagefiles.py
deleted file mode 100755 (executable)
index 4662407..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-#!/usr/bin/python
-
-'''
-Copyright 2013 Google Inc.
-
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
-'''
-
-'''
-Rebaselines GM test results as individual image files
-(the "old way", before https://goto.google.com/ChecksumTransitionDetail ).
-
-Once we have switched our expectations to JSON form for all platforms,
-we can delete this file.
-
-There is a lot of code duplicated between here and rebaseline.py, but
-that's fine because we will delete this file soon.
-
-TODO(epoger): Fix indentation in this file (2-space indents, not 4-space).
-'''
-
-# System-level imports
-import os
-import re
-import subprocess
-import sys
-import urllib2
-
-# Imports from within Skia
-#
-# We need to add the 'gm' directory, so that we can import gm_json.py within
-# that directory.  That script allows us to parse the actual-results.json file
-# written out by the GM tool.
-# Make sure that the 'gm' dir is in the PYTHONPATH, but add it at the *end*
-# so any dirs that are already in the PYTHONPATH will be preferred.
-#
-# This assumes that the 'gm' directory has been checked out as a sibling of
-# the 'tools' directory containing this script, which will be the case if
-# 'trunk' was checked out as a single unit.
-GM_DIRECTORY = os.path.realpath(
-    os.path.join(os.path.dirname(os.path.dirname(__file__)), 'gm'))
-if GM_DIRECTORY not in sys.path:
-    sys.path.append(GM_DIRECTORY)
-import gm_json
-
-
-class CommandFailedException(Exception):
-    pass
-
-class ImageRebaseliner(object):
-
-    # params:
-    #  expectations_root: root directory of all expectations
-    #  json_base_url: base URL from which to read json_filename
-    #  json_filename: filename (under json_base_url) from which to read a
-    #                 summary of results; typically "actual-results.json"
-    #  exception_handler: reference to rebaseline.ExceptionHandler object
-    #  tests: list of tests to rebaseline, or None if we should rebaseline
-    #         whatever files the JSON results summary file tells us to
-    #  configs: which configs to run for each test, or None if we should
-    #           rebaseline whatever configs the JSON results summary file tells
-    #           us to
-    #  dry_run: if True, instead of actually downloading files or adding
-    #           files to checkout, display a list of operations that
-    #           we would normally perform
-    #  add_new: if True, add expectations for tests which don't have any yet
-    #  missing_json_is_fatal: whether to halt execution if we cannot read a
-    #                         JSON actual result summary file
-    def __init__(self, expectations_root, json_base_url, json_filename,
-                 exception_handler, tests=None, configs=None, dry_run=False,
-                 add_new=False, missing_json_is_fatal=False):
-        self._expectations_root = expectations_root
-        self._tests = tests
-        self._configs = configs
-        self._json_base_url = json_base_url
-        self._json_filename = json_filename
-        self._exception_handler = exception_handler
-        self._dry_run = dry_run
-        self._add_new = add_new
-        self._missing_json_is_fatal = missing_json_is_fatal
-        self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
-        self._is_svn_checkout = (
-            os.path.exists(os.path.join(expectations_root, '.svn')) or
-            os.path.exists(os.path.join(expectations_root, os.pardir, '.svn')))
-        self._is_git_checkout = (
-            os.path.exists(os.path.join(expectations_root, '.git')) or
-            os.path.exists(os.path.join(expectations_root, os.pardir, '.git')))
-
-    # If dry_run is False, execute subprocess.call(cmd).
-    # If dry_run is True, print the command we would have otherwise run.
-    # Raises a CommandFailedException if the command fails.
-    def _Call(self, cmd):
-        if self._dry_run:
-            print '%s' % ' '.join(cmd)
-            return
-        if subprocess.call(cmd) != 0:
-            raise CommandFailedException('error running command: ' +
-                                         ' '.join(cmd))
-
-    # Download a single actual result from GoogleStorage.
-    # Raises an exception if it fails.
-    def _DownloadFromGoogleStorage(self, infilename, outfilename, all_results):
-        test_name = self._image_filename_re.match(infilename).group(1)
-        if not test_name:
-            raise Exception('unable to find test_name for infilename %s' %
-                            infilename)
-        try:
-            hash_type, hash_value = all_results[infilename]
-        except KeyError:
-            raise Exception('unable to find filename %s in all_results dict' %
-                            infilename)
-        except ValueError as e:
-            raise Exception(
-                'ValueError reading filename %s from all_results dict: %s' % (
-                    infilename, e))
-        url = gm_json.CreateGmActualUrl(
-            test_name=test_name, hash_type=hash_type, hash_digest=hash_value)
-        try:
-            self._DownloadFile(source_url=url, dest_filename=outfilename)
-        except CommandFailedException:
-            raise Exception('Couldn\'t fetch gs_url %s as outfile %s' % (
-                url, outfilename))
-
-    # Download a single file, raising a CommandFailedException if it fails.
-    def _DownloadFile(self, source_url, dest_filename):
-        # Download into a temporary file and then rename it afterwards,
-        # so that we don't corrupt the existing file if it fails midway thru.
-        temp_filename = os.path.join(os.path.dirname(dest_filename),
-                                     '.temp-' + os.path.basename(dest_filename))
-
-        # TODO(epoger): Replace calls to "curl"/"mv" (which will only work on
-        # Unix) with a Python HTTP library (which should work cross-platform)
-        self._Call([ 'curl', '--fail', '--silent', source_url,
-                     '--output', temp_filename ])
-        self._Call([ 'mv', temp_filename, dest_filename ])
-
-    # Returns the full contents of a URL, as a single string.
-    #
-    # Unlike standard URL handling, we allow relative "file:" URLs;
-    # for example, "file:one/two" resolves to the file ./one/two
-    # (relative to current working dir)
-    def _GetContentsOfUrl(self, url):
-        file_prefix = 'file:'
-        if url.startswith(file_prefix):
-            filename = url[len(file_prefix):]
-            return open(filename, 'r').read()
-        else:
-            return urllib2.urlopen(url).read()
-
-    # Returns a dictionary of actual results from actual-results.json file.
-    #
-    # The dictionary returned has this format:
-    # {
-    #  u'imageblur_565.png': [u'bitmap-64bitMD5', 3359963596899141322],
-    #  u'imageblur_8888.png': [u'bitmap-64bitMD5', 4217923806027861152],
-    #  u'shadertext3_8888.png': [u'bitmap-64bitMD5', 3713708307125704716]
-    # }
-    #
-    # If the JSON actual result summary file cannot be loaded, the behavior
-    # depends on self._missing_json_is_fatal:
-    # - if true: execution will halt with an exception
-    # - if false: we will log an error message but return an empty dictionary
-    #
-    # params:
-    #  json_url: URL pointing to a JSON actual result summary file
-    #  sections: a list of section names to include in the results, e.g.
-    #            [gm_json.JSONKEY_ACTUALRESULTS_FAILED,
-    #             gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON] ;
-    #            if None, then include ALL sections.
-    def _GetActualResults(self, json_url, sections=None):
-        try:
-            json_contents = self._GetContentsOfUrl(json_url)
-        except (urllib2.HTTPError, IOError):
-            message = 'unable to load JSON summary URL %s' % json_url
-            if self._missing_json_is_fatal:
-                raise ValueError(message)
-            else:
-                print '# %s' % message
-                return {}
-
-        json_dict = gm_json.LoadFromString(json_contents)
-        results_to_return = {}
-        actual_results = json_dict[gm_json.JSONKEY_ACTUALRESULTS]
-        if not sections:
-            sections = actual_results.keys()
-        for section in sections:
-            section_results = actual_results[section]
-            if section_results:
-                results_to_return.update(section_results)
-        return results_to_return
-
-    # Returns a list of files that require rebaselining.
-    #
-    # Note that this returns a list of FILES, like this:
-    #  ['imageblur_565.png', 'xfermodes_pdf.png']
-    # rather than a list of TESTS, like this:
-    #  ['imageblur', 'xfermodes']
-    #
-    # params:
-    #  json_url: URL pointing to a JSON actual result summary file
-    #  add_new: if True, then return files listed in any of these sections:
-    #            - JSONKEY_ACTUALRESULTS_FAILED
-    #            - JSONKEY_ACTUALRESULTS_NOCOMPARISON
-    #           if False, then return files listed in these sections:
-    #            - JSONKEY_ACTUALRESULTS_FAILED
-    #
-    def _GetFilesToRebaseline(self, json_url, add_new):
-        if self._dry_run:
-            print ''
-            print '#'
-        print ('# Getting files to rebaseline from JSON summary URL %s ...'
-               % json_url)
-        sections = [gm_json.JSONKEY_ACTUALRESULTS_FAILED]
-        if add_new:
-            sections.append(gm_json.JSONKEY_ACTUALRESULTS_NOCOMPARISON)
-        results_to_rebaseline = self._GetActualResults(json_url=json_url,
-                                                       sections=sections)
-        files_to_rebaseline = results_to_rebaseline.keys()
-        files_to_rebaseline.sort()
-        print '# ... found files_to_rebaseline %s' % files_to_rebaseline
-        if self._dry_run:
-            print '#'
-        return files_to_rebaseline
-
-    # Rebaseline a single file.
-    def _RebaselineOneFile(self, expectations_subdir, builder_name,
-                           infilename, outfilename, all_results):
-        if self._dry_run:
-            print ''
-        print '# ' + infilename
-
-        # Download this result image from Google Storage.
-        # If it fails, an exception will be raised.
-        self._DownloadFromGoogleStorage(infilename=infilename,
-                                        outfilename=outfilename,
-                                        all_results=all_results)
-
-        # Add this file to version control (if appropriate).
-        if self._add_new:
-            if self._is_svn_checkout:
-                cmd = [ 'svn', 'add', '--quiet', outfilename ]
-                self._Call(cmd)
-                cmd = [ 'svn', 'propset', '--quiet', 'svn:mime-type',
-                        'image/png', outfilename ];
-                self._Call(cmd)
-            elif self._is_git_checkout:
-                cmd = [ 'git', 'add', outfilename ]
-                self._Call(cmd)
-
-    # Rebaseline all tests/types we specified in the constructor,
-    # within this gm-expectations subdir.
-    #
-    # params:
-    #  subdir : e.g. 'base-shuttle-win7-intel-float'
-    #  builder : e.g. 'Test-Win7-ShuttleA-HD2000-x86-Release'
-    def RebaselineSubdir(self, subdir, builder):
-        if not os.path.isdir(os.path.join(self._expectations_root, subdir)):
-            self._exception_handler.RaiseExceptionOrContinue(Exception((
-                'Could not find "%s" subdir within expectations_root "%s".  ' +
-                'Are you sure --expectations-root is pointing at a valid ' +
-                'gm-expected directory?') % (subdir, self._expectations_root)))
-            return
-
-        json_url = '/'.join([self._json_base_url,
-                             subdir, builder, subdir,
-                             self._json_filename])
-        all_results = self._GetActualResults(json_url=json_url)
-        filenames = self._GetFilesToRebaseline(json_url=json_url,
-                                               add_new=self._add_new)
-        skipped_files = []
-        for filename in filenames:
-            (test, config) = self._image_filename_re.match(filename).groups()
-            if self._tests:
-                if test not in self._tests:
-                    skipped_files.append(filename)
-                    continue
-            if self._configs:
-                if config not in self._configs:
-                    skipped_files.append(filename)
-                    continue
-            outfilename = os.path.join(self._expectations_root, subdir,
-                                       filename);
-            try:
-                self._RebaselineOneFile(expectations_subdir=subdir,
-                                        builder_name=builder,
-                                        infilename=filename,
-                                        outfilename=outfilename,
-                                        all_results=all_results)
-            except BaseException as e:
-                self._exception_handler.RaiseExceptionOrContinue(e)
diff --git a/tools/tests/rebaseline/input/fake-gm-expected-dir/README b/tools/tests/rebaseline/input/fake-gm-expected-dir/README
deleted file mode 100644 (file)
index 3958c8c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-This directory pretends to be a checkout of gm-expected, with platform subdirs as expected.
diff --git a/tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/README b/tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/README
deleted file mode 100644 (file)
index f2ef7ab..0000000
+++ /dev/null
@@ -1 +0,0 @@
-pretend gm-expected directory for a single platform
diff --git a/tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/README b/tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/README
deleted file mode 100644 (file)
index f2ef7ab..0000000
+++ /dev/null
@@ -1 +0,0 @@
-pretend gm-expected directory for a single platform
diff --git a/tools/tests/rebaseline/output/exercise-bug1403/output-expected/command_line b/tools/tests/rebaseline/output/exercise-bug1403/output-expected/command_line
deleted file mode 100644 (file)
index 2b717a5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-python tools/rebaseline.py --dry-run --expectations-root tools/tests/rebaseline/input --actuals-base-url file:tools/tests/rebaseline/input/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float
diff --git a/tools/tests/rebaseline/output/exercise-bug1403/output-expected/return_value b/tools/tests/rebaseline/output/exercise-bug1403/output-expected/return_value
deleted file mode 100644 (file)
index d00491f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1
diff --git a/tools/tests/rebaseline/output/exercise-bug1403/output-expected/stdout b/tools/tests/rebaseline/output/exercise-bug1403/output-expected/stdout
deleted file mode 100644 (file)
index 04d9764..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Could not find "base-android-galaxy-nexus" subdir within expectations_root "tools/tests/rebaseline/input".  Are you sure --expectations-root is pointing at a valid gm-expected directory?
-Halting at first exception; to keep going, re-run with the --keep-going-on-failure option set.
diff --git a/tools/tests/rebaseline/output/subset/output-expected/command_line b/tools/tests/rebaseline/output/subset/output-expected/command_line
deleted file mode 100644 (file)
index 463a6d6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-python tools/rebaseline.py --dry-run --expectations-root tools/tests/rebaseline/input/fake-gm-expected-dir --actuals-base-url file:tools/tests/rebaseline/input/json1 --tests nonexistenttest1 imageblur nonexistenttest2 --configs nonexistentconfig1 8888 nonexistentconfig2 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float
diff --git a/tools/tests/rebaseline/output/subset/output-expected/return_value b/tools/tests/rebaseline/output/subset/output-expected/return_value
deleted file mode 100644 (file)
index 573541a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/tools/tests/rebaseline/output/subset/output-expected/stdout b/tools/tests/rebaseline/output/subset/output-expected/stdout
deleted file mode 100644 (file)
index 0ac803c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/actual-results.json ...
-# ... found files_to_rebaseline [u'imageblur_565.png', u'imageblur_8888.png', u'shadertext3_8888.png']
-#
-
-# imageblur_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/imageblur/4217923806027861152.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_8888.png
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-shuttle-win7-intel-float/Test-Win7-ShuttleA-HD2000-x86-Release/base-shuttle-win7-intel-float/actual-results.json ...
-# ... found files_to_rebaseline []
-#
diff --git a/tools/tests/rebaseline/output/using-json1-add-new/output-expected/command_line b/tools/tests/rebaseline/output/using-json1-add-new/output-expected/command_line
deleted file mode 100644 (file)
index 7315a3d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-python tools/rebaseline.py --dry-run --expectations-root tools/tests/rebaseline/input/fake-gm-expected-dir --actuals-base-url file:tools/tests/rebaseline/input/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float --add-new
diff --git a/tools/tests/rebaseline/output/using-json1-add-new/output-expected/return_value b/tools/tests/rebaseline/output/using-json1-add-new/output-expected/return_value
deleted file mode 100644 (file)
index 573541a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/tools/tests/rebaseline/output/using-json1-add-new/output-expected/stdout b/tools/tests/rebaseline/output/using-json1-add-new/output-expected/stdout
deleted file mode 100644 (file)
index 59b2dc7..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/actual-results.json ...
-# ... found files_to_rebaseline [u'3x3bitmaprect_565.png', u'3x3bitmaprect_8888.png', u'imageblur_565.png', u'imageblur_8888.png', u'shadertext3_8888.png', u'xfermodeimagefilter_pdf.png']
-#
-
-# 3x3bitmaprect_565.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/3x3bitmaprect/16998423976396106083.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-3x3bitmaprect_565.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-3x3bitmaprect_565.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_565.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_565.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_565.png
-
-# 3x3bitmaprect_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/3x3bitmaprect/2054956815327187963.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-3x3bitmaprect_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-3x3bitmaprect_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_8888.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_8888.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/3x3bitmaprect_8888.png
-
-# imageblur_565.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/imageblur/3359963596899141322.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_565.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_565.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_565.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_565.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_565.png
-
-# imageblur_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/imageblur/4217923806027861152.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_8888.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_8888.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_8888.png
-
-# shadertext3_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/shadertext3/3713708307125704716.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-shadertext3_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-shadertext3_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/shadertext3_8888.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/shadertext3_8888.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/shadertext3_8888.png
-
-# xfermodeimagefilter_pdf.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/xfermodeimagefilter/16502178848783208088.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-xfermodeimagefilter_pdf.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-xfermodeimagefilter_pdf.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/xfermodeimagefilter_pdf.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/xfermodeimagefilter_pdf.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/xfermodeimagefilter_pdf.png
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-shuttle-win7-intel-float/Test-Win7-ShuttleA-HD2000-x86-Release/base-shuttle-win7-intel-float/actual-results.json ...
-# ... found files_to_rebaseline [u'3x3bitmaprect_565.png', u'3x3bitmaprect_8888.png', u'xfermodeimagefilter_pdf.png']
-#
-
-# 3x3bitmaprect_565.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/3x3bitmaprect/16998423976396106083.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-3x3bitmaprect_565.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-3x3bitmaprect_565.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_565.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_565.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_565.png
-
-# 3x3bitmaprect_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/3x3bitmaprect/2054956815327187963.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-3x3bitmaprect_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-3x3bitmaprect_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_8888.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_8888.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/3x3bitmaprect_8888.png
-
-# xfermodeimagefilter_pdf.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/xfermodeimagefilter/16502178848783208088.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-xfermodeimagefilter_pdf.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/.temp-xfermodeimagefilter_pdf.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/xfermodeimagefilter_pdf.png
-svn add --quiet tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/xfermodeimagefilter_pdf.png
-svn propset --quiet svn:mime-type image/png tools/tests/rebaseline/input/fake-gm-expected-dir/base-shuttle-win7-intel-float/xfermodeimagefilter_pdf.png
diff --git a/tools/tests/rebaseline/output/using-json1/output-expected/command_line b/tools/tests/rebaseline/output/using-json1/output-expected/command_line
deleted file mode 100644 (file)
index d798943..0000000
+++ /dev/null
@@ -1 +0,0 @@
-python tools/rebaseline.py --dry-run --expectations-root tools/tests/rebaseline/input/fake-gm-expected-dir --actuals-base-url file:tools/tests/rebaseline/input/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float
diff --git a/tools/tests/rebaseline/output/using-json1/output-expected/return_value b/tools/tests/rebaseline/output/using-json1/output-expected/return_value
deleted file mode 100644 (file)
index 573541a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-0
diff --git a/tools/tests/rebaseline/output/using-json1/output-expected/stdout b/tools/tests/rebaseline/output/using-json1/output-expected/stdout
deleted file mode 100644 (file)
index e7b2906..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-android-galaxy-nexus/Test-Android-GalaxyNexus-SGX540-Arm7-Debug/base-android-galaxy-nexus/actual-results.json ...
-# ... found files_to_rebaseline [u'imageblur_565.png', u'imageblur_8888.png', u'shadertext3_8888.png']
-#
-
-# imageblur_565.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/imageblur/3359963596899141322.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_565.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_565.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_565.png
-
-# imageblur_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/imageblur/4217923806027861152.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-imageblur_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/imageblur_8888.png
-
-# shadertext3_8888.png
-curl --fail --silent http://chromium-skia-gm.commondatastorage.googleapis.com/gm/bitmap-64bitMD5/shadertext3/3713708307125704716.png --output tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-shadertext3_8888.png
-mv tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/.temp-shadertext3_8888.png tools/tests/rebaseline/input/fake-gm-expected-dir/base-android-galaxy-nexus/shadertext3_8888.png
-
-#
-# Getting files to rebaseline from JSON summary URL file:tools/tests/rebaseline/input/json1/base-shuttle-win7-intel-float/Test-Win7-ShuttleA-HD2000-x86-Release/base-shuttle-win7-intel-float/actual-results.json ...
-# ... found files_to_rebaseline []
-#
index 997e5e8d62d1b2045c59ff7e826f282cba91a955..b36c1e2807cb44787d700dc5904be60e79337589 100755 (executable)
@@ -129,30 +129,7 @@ function benchgraph_test {
   compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
 }
 
-# Test rebaseline.py's soon-to-disappear image file rebaselining capability.
-#
-# Run rebaseline.py with arguments in $1, recording its dry-run output.
-# Then compare that dry-run output to the content of $2/output-expected.
-function rebaseline_images_test {
-  if [ $# != 2 ]; then
-    echo "rebaseline_test requires exactly 2 parameters, got $#"
-    exit 1
-  fi
-  ARGS="$1"
-  ACTUAL_OUTPUT_DIR="$2/output-actual"
-  EXPECTED_OUTPUT_DIR="$2/output-expected"
-
-  rm -rf $ACTUAL_OUTPUT_DIR
-  mkdir -p $ACTUAL_OUTPUT_DIR
-  COMMAND="python tools/rebaseline.py --dry-run $ARGS"
-  echo "$COMMAND" >$ACTUAL_OUTPUT_DIR/command_line
-  $COMMAND &>$ACTUAL_OUTPUT_DIR/stdout
-  echo $? >$ACTUAL_OUTPUT_DIR/return_value
-
-  compare_directories $EXPECTED_OUTPUT_DIR $ACTUAL_OUTPUT_DIR
-}
-
-# Test rebaseline.py's new JSON-format expectations rebaselining capability.
+# Test rebaseline.py's JSON-format expectations rebaselining capability.
 #
 # Copy expected-result.json files from $1 into a dir where they can be modified.
 # Run rebaseline.py with arguments in $2, recording its output.
@@ -265,14 +242,6 @@ fi
 
 REBASELINE_INPUT=tools/tests/rebaseline/input
 REBASELINE_OUTPUT=tools/tests/rebaseline/output
-
-# These test the old image-file expectations.
-rebaseline_images_test "--expectations-root $REBASELINE_INPUT/fake-gm-expected-dir --actuals-base-url file:$REBASELINE_INPUT/json1 --tests nonexistenttest1 imageblur nonexistenttest2 --configs nonexistentconfig1 8888 nonexistentconfig2 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/subset"
-rebaseline_images_test "--expectations-root $REBASELINE_INPUT/fake-gm-expected-dir --actuals-base-url file:$REBASELINE_INPUT/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/using-json1"
-rebaseline_images_test "--expectations-root $REBASELINE_INPUT/fake-gm-expected-dir --actuals-base-url file:$REBASELINE_INPUT/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float --add-new" "$REBASELINE_OUTPUT/using-json1-add-new"
-rebaseline_images_test "--expectations-root $REBASELINE_INPUT --actuals-base-url file:$REBASELINE_INPUT/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/exercise-bug1403"
-
-# These test the new JSON-format expectations.
 rebaseline_test "$REBASELINE_INPUT/json1" "--actuals-base-url $REBASELINE_INPUT/json1 --subdirs base-android-galaxy-nexus base-shuttle-win7-intel-float" "$REBASELINE_OUTPUT/using-json1-expectations"
 
 #