OLD | NEW |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 """ | 3 """ |
4 Copyright 2013 Google Inc. | 4 Copyright 2013 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 Repackage expected/actual GM results as needed by our HTML rebaseline viewer. | 9 Repackage expected/actual GM results as needed by our HTML rebaseline viewer. |
10 """ | 10 """ |
11 | 11 |
12 # System-level imports | 12 # System-level imports |
13 import argparse | |
rmistry
2013/12/23 15:07:55
I should start using argparse too, looks like optp
epoger
2013/12/23 22:45:44
Yeah, although the problem is that argparse is not
| |
13 import fnmatch | 14 import fnmatch |
14 import json | 15 import json |
15 import logging | 16 import logging |
16 import os | 17 import os |
17 import re | 18 import re |
18 import sys | 19 import sys |
19 import time | 20 import time |
20 | 21 |
21 # Imports from within Skia | 22 # Imports from within Skia |
22 # | 23 # |
23 # We need to add the 'gm' directory, so that we can import gm_json.py within | 24 # We need to add the 'gm' directory, so that we can import gm_json.py within |
24 # that directory. That script allows us to parse the actual-results.json file | 25 # that directory. That script allows us to parse the actual-results.json file |
25 # written out by the GM tool. | 26 # written out by the GM tool. |
26 # Make sure that the 'gm' dir is in the PYTHONPATH, but add it at the *end* | 27 # Make sure that the 'gm' dir is in the PYTHONPATH, but add it at the *end* |
27 # so any dirs that are already in the PYTHONPATH will be preferred. | 28 # so any dirs that are already in the PYTHONPATH will be preferred. |
28 GM_DIRECTORY = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) | 29 PARENT_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) |
30 GM_DIRECTORY = os.path.dirname(PARENT_DIRECTORY) | |
29 if GM_DIRECTORY not in sys.path: | 31 if GM_DIRECTORY not in sys.path: |
30 sys.path.append(GM_DIRECTORY) | 32 sys.path.append(GM_DIRECTORY) |
31 import gm_json | 33 import gm_json |
32 import imagediffdb | 34 import imagediffdb |
33 | 35 |
34 IMAGE_FILENAME_RE = re.compile(gm_json.IMAGE_FILENAME_PATTERN) | 36 IMAGE_FILENAME_RE = re.compile(gm_json.IMAGE_FILENAME_PATTERN) |
35 IMAGE_FILENAME_FORMATTER = '%s_%s.png' # pass in (testname, config) | 37 IMAGE_FILENAME_FORMATTER = '%s_%s.png' # pass in (testname, config) |
36 | 38 |
37 FIELDS_PASSED_THRU_VERBATIM = [ | 39 FIELDS_PASSED_THRU_VERBATIM = [ |
38 gm_json.JSONKEY_EXPECTEDRESULTS_BUGS, | 40 gm_json.JSONKEY_EXPECTEDRESULTS_BUGS, |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
489 category_dict: category dict-of-dicts to modify | 491 category_dict: category dict-of-dicts to modify |
490 category_name: category name, as a string | 492 category_name: category name, as a string |
491 category_values: list of values we want to make sure are represented | 493 category_values: list of values we want to make sure are represented |
492 for this category | 494 for this category |
493 """ | 495 """ |
494 if not category_dict.get(category_name): | 496 if not category_dict.get(category_name): |
495 category_dict[category_name] = {} | 497 category_dict[category_name] = {} |
496 for category_value in category_values: | 498 for category_value in category_values: |
497 if not category_dict[category_name].get(category_value): | 499 if not category_dict[category_name].get(category_value): |
498 category_dict[category_name][category_value] = 0 | 500 category_dict[category_name][category_value] = 0 |
501 | |
502 | |
503 def main(): | |
504 logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s', | |
505 datefmt='%m/%d/%Y %H:%M:%S', | |
506 level=logging.INFO) | |
507 parser = argparse.ArgumentParser() | |
508 parser.add_argument( | |
509 '--actuals', required=True, | |
510 help='Directory containing all actual-result JSON files') | |
511 parser.add_argument( | |
512 '--expectations', required=True, | |
513 help='Directory containing all expected-result JSON files') | |
514 parser.add_argument( | |
515 '--outfile', required=True, | |
516 help='File to write result summary into, in JSON format') | |
517 parser.add_argument( | |
518 '--workdir', default='.workdir', | |
519 help='Directory within which to download images and generate diffs') | |
520 args = parser.parse_args() | |
521 results = Results(actuals_root=args.actuals, | |
522 expected_root=args.expectations, | |
523 generated_images_root=args.workdir) | |
524 gm_json.WriteToFile(results.get_results_of_type(RESULTS_ALL), args.outfile) | |
525 | |
526 | |
527 if __name__ == '__main__': | |
528 main() | |
OLD | NEW |