Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: tools/rebaseline.py

Issue 26666004: Add ability to rebaseline skimage to rebaseline.py (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Respond to comments Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gm/gm_json.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/rebaseline.py
diff --git a/tools/rebaseline.py b/tools/rebaseline.py
index 275d84ebed1ff56a9e21ff022ffb9bcef1d7497b..194cd55ca96ed9719dbe6ab0db1e233796647ecb 100755
--- a/tools/rebaseline.py
+++ b/tools/rebaseline.py
@@ -159,9 +159,11 @@ class JsonRebaseliner(object):
# 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
+ # Ignored if 'skip_pattern_matching' is set to True
# configs: which configs to run for each test, or None if we should
# rebaseline whatever configs the JSON results summary file tells
# us to
+ # Ignored if 'skip_pattern_matching' is set to True
# add_new: if True, add expectations for tests which don't have any yet
# bugs: optional list of bug numbers which pertain to these expectations
# notes: free-form text notes to add to all updated expectations
@@ -172,12 +174,14 @@ class JsonRebaseliner(object):
# TODO(epoger): Add that capability to a review tool.
# mark_ignore_failure: if True, mark failures of a given test as being
# ignored.
+ # skip_pattern_matching: if True, do not attempt to skip tests/configs
+ # matching input parameters 'tests'/'configs'.
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, bugs=None, notes=None,
mark_unreviewed=None, mark_ignore_failure=False,
- from_trybot=False):
+ from_trybot=False, skip_pattern_matching=False):
epoger 2013/10/10 19:51:39 Please add from_trybot to the docstring (I know yo
scroggo 2013/10/10 20:18:58 Done.
self._expectations_root = expectations_root
self._expectations_input_filename = expectations_input_filename
self._expectations_output_filename = expectations_output_filename
@@ -191,7 +195,15 @@ class JsonRebaseliner(object):
self._notes = notes
self._mark_unreviewed = mark_unreviewed
self._mark_ignore_failure = mark_ignore_failure;
- self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
+ # TODO(scroggo): This is a hack. Since the filenames will not match
+ # the pattern in skimage, we skip the pattern matching entirely.
+ if skip_pattern_matching:
epoger 2013/10/10 19:51:39 Maybe, instead of adding the new parameter that ca
scroggo 2013/10/10 20:18:58 Done. I like this much better!
+ self._image_filename_re = None
+ if tests or configs:
+ raise _InternalException('"skip_pattern_matching" is incompatible with '
+ '"tests" and "configs"')
+ else:
+ self._image_filename_re = re.compile(gm_json.IMAGE_FILENAME_PATTERN)
self._using_svn = os.path.isdir(os.path.join(expectations_root, '.svn'))
self._from_trybot = from_trybot
@@ -293,15 +305,16 @@ class JsonRebaseliner(object):
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 self._image_filename_re:
+ (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]\
@@ -334,7 +347,6 @@ class JsonRebaseliner(object):
if self._using_svn:
self._Call(['svn', 'propset', '--quiet', 'svn:mime-type',
'text/x-json', expectations_output_filepath])
-
# main...
parser = argparse.ArgumentParser(
@@ -344,8 +356,10 @@ parser = argparse.ArgumentParser(
parser.add_argument('--actuals-base-url',
help=('base URL from which to read files containing JSON '
'summaries of actual GM results; defaults to '
- '%(default)s. To get a specific revision (useful for'
- 'trybots) replace "svn" with "svn-history/r123".'),
+ '%(default)s. To get a specific revision (useful for '
+ 'trybots) replace "svn" with "svn-history/r123". '
+ 'If SKIMAGE is True, defaults to ' +
+ gm_json.SKIMAGE_ACTUALS_BASE_URL),
default='http://skia-autogen.googlecode.com/svn/gm-actual')
parser.add_argument('--actuals-filename',
help=('filename (within builder-specific subdirectories '
@@ -370,7 +384,8 @@ parser.add_argument('--configs', metavar='CONFIG', nargs='+',
help=('which configurations to rebaseline, e.g. '
'"--configs 565 8888", as a filter over the full set '
'of results in ACTUALS_FILENAME; if unspecified, '
- 'rebaseline *all* configs that are available.'))
+ 'rebaseline *all* configs that are available. '
+ 'Ignored if SKIMAGE is True.'))
parser.add_argument('--expectations-filename',
help=('filename (under EXPECTATIONS_ROOT) to read '
'current expectations from, and to write new '
@@ -386,7 +401,8 @@ parser.add_argument('--expectations-filename-output',
parser.add_argument('--expectations-root',
help=('root of expectations directory to update-- should '
'contain one or more builder subdirectories. '
- 'Defaults to %(default)s'),
+ 'Defaults to %(default)s. If SKIMAGE is set, '
+ ' defaults to ' + gm_json.SKIMAGE_EXPECTATIONS_ROOT),
default=os.path.join('expectations', 'gm'))
parser.add_argument('--keep-going-on-failure', action='store_true',
help=('instead of halting at the first error encountered, '
@@ -402,7 +418,7 @@ parser.add_argument('--tests', metavar='TEST', nargs='+',
'"--tests aaclip bigmatrix", as a filter over the '
'full set of results in ACTUALS_FILENAME; if '
'unspecified, rebaseline *all* tests that are '
- 'available.'))
+ 'available. Ignored if SKIMAGE is True.'))
parser.add_argument('--unreviewed', action='store_true',
help=('mark all expectations modified by this run as '
'"%s": False' %
@@ -414,6 +430,11 @@ parser.add_argument('--ignore-failure', action='store_true',
parser.add_argument('--from-trybot', action='store_true',
help=('pull the actual-results.json file from the '
'corresponding trybot, rather than the main builder'))
+parser.add_argument('--skimage', action='store_true',
+ help=('Rebaseline skimage results instead of gm. Defaults '
+ 'to False. If True, TESTS and CONFIGS are ignored, '
+ 'and ACTUALS_BASE_URL and EXPECTATIONS_ROOT are set '
+ 'to alternate defaults, specific to skimage.'))
args = parser.parse_args()
exception_handler = ExceptionHandler(
keep_going_on_failure=args.keep_going_on_failure)
@@ -423,6 +444,12 @@ if args.builders:
else:
builders = sorted(TEST_BUILDERS)
missing_json_is_fatal = False
+if args.skimage:
+ # Use a different default if --skimage is specified.
+ if args.actuals_base_url == parser.get_default('actuals_base_url'):
+ args.actuals_base_url = gm_json.SKIMAGE_ACTUALS_BASE_URL
+ if args.expectations_root == parser.get_default('expectations_root'):
+ args.expectations_root = gm_json.SKIMAGE_EXPECTATIONS_ROOT
for builder in builders:
if not builder in TEST_BUILDERS:
raise Exception(('unrecognized builder "%s"; ' +
@@ -444,7 +471,8 @@ for builder in builders:
add_new=args.add_new, bugs=args.bugs, notes=args.notes,
mark_unreviewed=args.unreviewed,
mark_ignore_failure=args.ignore_failure,
- from_trybot=args.from_trybot)
+ from_trybot=args.from_trybot,
+ skip_pattern_matching=args.skimage)
try:
rebaseliner.RebaselineSubdir(builder=builder)
except:
« no previous file with comments | « gm/gm_json.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698