| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 ''' | 3 ''' |
| 4 Copyright 2012 Google Inc. | 4 Copyright 2012 Google Inc. |
| 5 | 5 |
| 6 Use of this source code is governed by a BSD-style license that can be | 6 Use of this source code is governed by a BSD-style license that can be |
| 7 found in the LICENSE file. | 7 found in the LICENSE file. |
| 8 ''' | 8 ''' |
| 9 | 9 |
| 10 ''' | 10 ''' |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 # params: | 80 # params: |
| 81 # expectations_root: root directory of all expectations JSON files | 81 # expectations_root: root directory of all expectations JSON files |
| 82 # expectations_filename: filename (under expectations_root) of JSON | 82 # expectations_filename: filename (under expectations_root) of JSON |
| 83 # expectations file; typically | 83 # expectations file; typically |
| 84 # "expected-results.json" | 84 # "expected-results.json" |
| 85 # actuals_base_url: base URL from which to read actual-result JSON files | 85 # actuals_base_url: base URL from which to read actual-result JSON files |
| 86 # actuals_filename: filename (under actuals_base_url) from which to read a | 86 # actuals_filename: filename (under actuals_base_url) from which to read a |
| 87 # summary of results; typically "actual-results.json" | 87 # summary of results; typically "actual-results.json" |
| 88 # tests: list of tests to rebaseline, or None if we should rebaseline | 88 # tests: list of tests to rebaseline, or None if we should rebaseline |
| 89 # whatever files the JSON results summary file tells us to | 89 # whatever files the JSON results summary file tells us to |
| 90 # configs: which configs to run for each test; this should only be | 90 # configs: which configs to run for each test, or None if we should |
| 91 # specified if the list of tests was also specified (otherwise, | 91 # rebaseline whatever configs the JSON results summary file tells |
| 92 # the JSON file will give us test names and configs) | 92 # us to |
| 93 # add_new: if True, add expectations for tests which don't have any yet | 93 # add_new: if True, add expectations for tests which don't have any yet |
| 94 def __init__(self, expectations_root, expectations_filename, | 94 def __init__(self, expectations_root, expectations_filename, |
| 95 actuals_base_url, actuals_filename, | 95 actuals_base_url, actuals_filename, |
| 96 tests=None, configs=None, add_new=False): | 96 tests=None, configs=None, add_new=False): |
| 97 if configs and not tests: | |
| 98 raise ValueError('configs should only be specified if tests ' + | |
| 99 'were specified also') | |
| 100 self._expectations_root = expectations_root | 97 self._expectations_root = expectations_root |
| 101 self._expectations_filename = expectations_filename | 98 self._expectations_filename = expectations_filename |
| 102 self._tests = tests | 99 self._tests = tests |
| 103 self._configs = configs | 100 self._configs = configs |
| 104 self._actuals_base_url = actuals_base_url | 101 self._actuals_base_url = actuals_base_url |
| 105 self._actuals_filename = actuals_filename | 102 self._actuals_filename = actuals_filename |
| 106 self._add_new = add_new | 103 self._add_new = add_new |
| 107 self._testname_pattern = re.compile('(\S+)_(\S+).png') | 104 self._testname_pattern = re.compile('(\S+)_(\S+).png') |
| 108 | 105 |
| 109 # Returns the full contents of filepath, as a single string. | 106 # Returns the full contents of filepath, as a single string. |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 'of ACTUALS_BASE_URL) to read a summary of results from; ' + | 205 'of ACTUALS_BASE_URL) to read a summary of results from; ' + |
| 209 'defaults to %(default)s', | 206 'defaults to %(default)s', |
| 210 default='actual-results.json') | 207 default='actual-results.json') |
| 211 # TODO(epoger): Add test that exercises --add-new argument. | 208 # TODO(epoger): Add test that exercises --add-new argument. |
| 212 parser.add_argument('--add-new', action='store_true', | 209 parser.add_argument('--add-new', action='store_true', |
| 213 help='in addition to the standard behavior of ' + | 210 help='in addition to the standard behavior of ' + |
| 214 'updating expectations for failing tests, add ' + | 211 'updating expectations for failing tests, add ' + |
| 215 'expectations for tests which don\'t have expectations ' + | 212 'expectations for tests which don\'t have expectations ' + |
| 216 'yet.') | 213 'yet.') |
| 217 # TODO(epoger): Add test that exercises --configs argument. | 214 # TODO(epoger): Add test that exercises --configs argument. |
| 218 # TODO(epoger): Once we are only rebaselining JSON files, update the helpstring | |
| 219 # to indicate that this is a *filter* over the config names that | |
| 220 # actual-results.json tells us need to be rebaselined. | |
| 221 # You don't need to specify tests also, etc. | |
| 222 parser.add_argument('--configs', metavar='CONFIG', nargs='+', | 215 parser.add_argument('--configs', metavar='CONFIG', nargs='+', |
| 223 help='which configurations to rebaseline, e.g. ' + | 216 help='which configurations to rebaseline, e.g. ' + |
| 224 '"--configs 565 8888"; if unspecified, run a default ' + | 217 '"--configs 565 8888", as a filter over the full set of ' + |
| 225 'set of configs. This should ONLY be specified if ' + | 218 'results in ACTUALS_FILENAME; if unspecified, rebaseline ' + |
| 226 '--tests has also been specified.') | 219 '*all* configs that are available.') |
| 227 # TODO(epoger): The --dry-run argument will no longer be needed once we | 220 # TODO(epoger): The --dry-run argument will no longer be needed once we |
| 228 # are only rebaselining JSON files. | 221 # are only rebaselining JSON files. |
| 229 parser.add_argument('--dry-run', action='store_true', | 222 parser.add_argument('--dry-run', action='store_true', |
| 230 help='instead of actually downloading files or adding ' + | 223 help='instead of actually downloading files or adding ' + |
| 231 'files to checkout, display a list of operations that ' + | 224 'files to checkout, display a list of operations that ' + |
| 232 'we would normally perform') | 225 'we would normally perform') |
| 233 parser.add_argument('--expectations-filename', | 226 parser.add_argument('--expectations-filename', |
| 234 help='filename (under EXPECTATIONS_ROOT) to read ' + | 227 help='filename (under EXPECTATIONS_ROOT) to read ' + |
| 235 'current expectations from, and to write new ' + | 228 'current expectations from, and to write new ' + |
| 236 'expectations into; defaults to %(default)s', | 229 'expectations into; defaults to %(default)s', |
| 237 default='expected-results.json') | 230 default='expected-results.json') |
| 238 parser.add_argument('--expectations-root', | 231 parser.add_argument('--expectations-root', |
| 239 help='root of expectations directory to update-- should ' + | 232 help='root of expectations directory to update-- should ' + |
| 240 'contain one or more base-* subdirectories. Defaults to ' + | 233 'contain one or more base-* subdirectories. Defaults to ' + |
| 241 '%(default)s', | 234 '%(default)s', |
| 242 default='.') | 235 default='.') |
| 243 parser.add_argument('--subdirs', metavar='SUBDIR', nargs='+', | 236 parser.add_argument('--subdirs', metavar='SUBDIR', nargs='+', |
| 244 help='which platform subdirectories to rebaseline; ' + | 237 help='which platform subdirectories to rebaseline; ' + |
| 245 'if unspecified, rebaseline all subdirs, same as ' + | 238 'if unspecified, rebaseline all subdirs, same as ' + |
| 246 '"--subdirs %s"' % ' '.join(sorted(SUBDIR_MAPPING.keys()))) | 239 '"--subdirs %s"' % ' '.join(sorted(SUBDIR_MAPPING.keys()))) |
| 247 # TODO(epoger): Add test that exercises --tests argument. | 240 # TODO(epoger): Add test that exercises --tests argument. |
| 248 # TODO(epoger): Once we are only rebaselining JSON files, update the helpstring | |
| 249 # to indicate that this is a *filter* over the test names that | |
| 250 # actual-results.json tells us need to be rebaselined. | |
| 251 parser.add_argument('--tests', metavar='TEST', nargs='+', | 241 parser.add_argument('--tests', metavar='TEST', nargs='+', |
| 252 help='which tests to rebaseline, e.g. ' + | 242 help='which tests to rebaseline, e.g. ' + |
| 253 '"--tests aaclip bigmatrix"; if unspecified, then all ' + | 243 '"--tests aaclip bigmatrix", as a filter over the full ' + |
| 254 'failing tests (according to the actual-results.json ' + | 244 'set of results in ACTUALS_FILENAME; if unspecified, ' + |
| 255 'file) will be rebaselined.') | 245 'rebaseline *all* tests that are available.') |
| 256 args = parser.parse_args() | 246 args = parser.parse_args() |
| 257 if args.subdirs: | 247 if args.subdirs: |
| 258 subdirs = args.subdirs | 248 subdirs = args.subdirs |
| 259 missing_json_is_fatal = True | 249 missing_json_is_fatal = True |
| 260 else: | 250 else: |
| 261 subdirs = sorted(SUBDIR_MAPPING.keys()) | 251 subdirs = sorted(SUBDIR_MAPPING.keys()) |
| 262 missing_json_is_fatal = False | 252 missing_json_is_fatal = False |
| 263 for subdir in subdirs: | 253 for subdir in subdirs: |
| 264 if not subdir in SUBDIR_MAPPING.keys(): | 254 if not subdir in SUBDIR_MAPPING.keys(): |
| 265 raise Exception(('unrecognized platform subdir "%s"; ' + | 255 raise Exception(('unrecognized platform subdir "%s"; ' + |
| (...skipping 21 matching lines...) Expand all Loading... |
| 287 else: | 277 else: |
| 288 rebaseliner = rebaseline_imagefiles.ImageRebaseliner( | 278 rebaseliner = rebaseline_imagefiles.ImageRebaseliner( |
| 289 expectations_root=args.expectations_root, | 279 expectations_root=args.expectations_root, |
| 290 tests=args.tests, configs=args.configs, | 280 tests=args.tests, configs=args.configs, |
| 291 dry_run=args.dry_run, | 281 dry_run=args.dry_run, |
| 292 json_base_url=args.actuals_base_url, | 282 json_base_url=args.actuals_base_url, |
| 293 json_filename=args.actuals_filename, | 283 json_filename=args.actuals_filename, |
| 294 add_new=args.add_new, | 284 add_new=args.add_new, |
| 295 missing_json_is_fatal=missing_json_is_fatal) | 285 missing_json_is_fatal=missing_json_is_fatal) |
| 296 rebaseliner.RebaselineSubdir(subdir=subdir, builder=builder) | 286 rebaseliner.RebaselineSubdir(subdir=subdir, builder=builder) |
| OLD | NEW |