| 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 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 # - if false: we will log an error message but return an empty list so we | 152 # - if false: we will log an error message but return an empty list so we |
| 153 # go on to the next platform | 153 # go on to the next platform |
| 154 # | 154 # |
| 155 # params: | 155 # params: |
| 156 # json_url: URL pointing to a JSON actual result summary file | 156 # json_url: URL pointing to a JSON actual result summary file |
| 157 # | 157 # |
| 158 # TODO(epoger): add a parameter indicating whether "no-comparison" | 158 # TODO(epoger): add a parameter indicating whether "no-comparison" |
| 159 # results (those for which we don't have any expectations yet) | 159 # results (those for which we don't have any expectations yet) |
| 160 # should be rebaselined. For now, we only return failed expectations. | 160 # should be rebaselined. For now, we only return failed expectations. |
| 161 def _GetFilesToRebaseline(self, json_url): | 161 def _GetFilesToRebaseline(self, json_url): |
| 162 if self._dry_run: |
| 163 print '' |
| 164 print '#' |
| 162 print ('# Getting files to rebaseline from JSON summary URL %s ...' | 165 print ('# Getting files to rebaseline from JSON summary URL %s ...' |
| 163 % json_url) | 166 % json_url) |
| 164 try: | 167 try: |
| 165 json_contents = self._GetContentsOfUrl(json_url) | 168 json_contents = self._GetContentsOfUrl(json_url) |
| 166 except urllib2.HTTPError: | 169 except urllib2.HTTPError: |
| 167 message = 'unable to load JSON summary URL %s' % json_url | 170 message = 'unable to load JSON summary URL %s' % json_url |
| 168 if self._missing_json_is_fatal: | 171 if self._missing_json_is_fatal: |
| 169 raise ValueError(message) | 172 raise ValueError(message) |
| 170 else: | 173 else: |
| 171 print '# %s' % message | 174 print '# %s' % message |
| 172 return [] | 175 return [] |
| 173 | 176 |
| 174 json_dict = gm_json.LoadFromString(json_contents) | 177 json_dict = gm_json.LoadFromString(json_contents) |
| 175 actual_results = json_dict[gm_json.JSONKEY_ACTUALRESULTS] | 178 actual_results = json_dict[gm_json.JSONKEY_ACTUALRESULTS] |
| 176 | 179 |
| 177 files_to_rebaseline = [] | 180 files_to_rebaseline = [] |
| 178 failed_results = actual_results[gm_json.JSONKEY_ACTUALRESULTS_FAILED] | 181 failed_results = actual_results[gm_json.JSONKEY_ACTUALRESULTS_FAILED] |
| 179 if failed_results: | 182 if failed_results: |
| 180 files_to_rebaseline.extend(failed_results.keys()) | 183 files_to_rebaseline.extend(failed_results.keys()) |
| 181 | 184 |
| 182 print '# ... found files_to_rebaseline %s' % files_to_rebaseline | 185 print '# ... found files_to_rebaseline %s' % files_to_rebaseline |
| 186 if self._dry_run: |
| 187 print '#' |
| 183 return files_to_rebaseline | 188 return files_to_rebaseline |
| 184 | 189 |
| 185 # Rebaseline a single file. | 190 # Rebaseline a single file. |
| 186 def _RebaselineOneFile(self, expectations_subdir, builder_name, | 191 def _RebaselineOneFile(self, expectations_subdir, builder_name, |
| 187 infilename, outfilename): | 192 infilename, outfilename): |
| 193 if self._dry_run: |
| 194 print '' |
| 188 print '# ' + infilename | 195 print '# ' + infilename |
| 189 url = ('http://skia-autogen.googlecode.com/svn/gm-actual/' + | 196 url = ('http://skia-autogen.googlecode.com/svn/gm-actual/' + |
| 190 expectations_subdir + '/' + builder_name + '/' + | 197 expectations_subdir + '/' + builder_name + '/' + |
| 191 expectations_subdir + '/' + infilename) | 198 expectations_subdir + '/' + infilename) |
| 192 | 199 |
| 193 # Try to download this file, but if that fails, keep going... | 200 # Try to download this file, but if that fails, keep going... |
| 194 # | 201 # |
| 195 # This not treated as a fatal failure because not all | 202 # This not treated as a fatal failure because not all |
| 196 # platforms generate all configs (e.g., Android does not | 203 # platforms generate all configs (e.g., Android does not |
| 197 # generate PDF). | 204 # generate PDF). |
| (...skipping 29 matching lines...) Expand all Loading... |
| 227 # test: a single test to rebaseline | 234 # test: a single test to rebaseline |
| 228 def _RebaselineOneTest(self, expectations_subdir, builder_name, test): | 235 def _RebaselineOneTest(self, expectations_subdir, builder_name, test): |
| 229 if self._configs: | 236 if self._configs: |
| 230 configs = self._configs | 237 configs = self._configs |
| 231 else: | 238 else: |
| 232 if (expectations_subdir == 'base-shuttle-win7-intel-angle'): | 239 if (expectations_subdir == 'base-shuttle-win7-intel-angle'): |
| 233 configs = [ 'angle', 'anglemsaa16' ] | 240 configs = [ 'angle', 'anglemsaa16' ] |
| 234 else: | 241 else: |
| 235 configs = [ '565', '8888', 'gpu', 'pdf', 'mesa', 'msaa16', | 242 configs = [ '565', '8888', 'gpu', 'pdf', 'mesa', 'msaa16', |
| 236 'msaa4' ] | 243 'msaa4' ] |
| 244 if self._dry_run: |
| 245 print '' |
| 237 print '# ' + expectations_subdir + ':' | 246 print '# ' + expectations_subdir + ':' |
| 238 for config in configs: | 247 for config in configs: |
| 239 infilename = test + '_' + config + '.png' | 248 infilename = test + '_' + config + '.png' |
| 240 outfilename = os.path.join(expectations_subdir, infilename); | 249 outfilename = os.path.join(expectations_subdir, infilename); |
| 241 self._RebaselineOneFile(expectations_subdir=expectations_subdir, | 250 self._RebaselineOneFile(expectations_subdir=expectations_subdir, |
| 242 builder_name=builder_name, | 251 builder_name=builder_name, |
| 243 infilename=infilename, | 252 infilename=infilename, |
| 244 outfilename=outfilename) | 253 outfilename=outfilename) |
| 245 | 254 |
| 246 # Rebaseline all platforms/tests/types we specified in the constructor. | 255 # Rebaseline all platforms/tests/types we specified in the constructor. |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 help='which tests to rebaseline, e.g. ' + | 305 help='which tests to rebaseline, e.g. ' + |
| 297 '"--tests aaclip bigmatrix"; if unspecified, then all ' + | 306 '"--tests aaclip bigmatrix"; if unspecified, then all ' + |
| 298 'failing tests (according to the actual-results.json ' + | 307 'failing tests (according to the actual-results.json ' + |
| 299 'file) will be rebaselined.') | 308 'file) will be rebaselined.') |
| 300 args = parser.parse_args() | 309 args = parser.parse_args() |
| 301 rebaseliner = Rebaseliner(tests=args.tests, configs=args.configs, | 310 rebaseliner = Rebaseliner(tests=args.tests, configs=args.configs, |
| 302 subdirs=args.subdirs, dry_run=args.dry_run, | 311 subdirs=args.subdirs, dry_run=args.dry_run, |
| 303 json_base_url=args.json_base_url, | 312 json_base_url=args.json_base_url, |
| 304 json_filename=args.json_filename) | 313 json_filename=args.json_filename) |
| 305 rebaseliner.RebaselineAll() | 314 rebaseliner.RebaselineAll() |
| OLD | NEW |