''' Compares the rendererings of serialized SkPictures to expected images. Launch with --help to see more information. Copyright 2012 Google Inc. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. ''' # common Python modules import os import optparse import sys import shutil import tempfile # modules declared within this same directory import test_rendering USAGE_STRING = 'Usage: %s input... expectedDir' HELP_STRING = ''' Takes input SkPicture files and renders them as PNG files, and then compares those resulting PNG files against PNG files found in expectedDir. Each instance of "input" can be either a file (name must end in .skp), or a directory (in which case this script will process all .skp files within the directory). ''' def ModeParse(option, opt_str, value, parser): """Parses the --mode option of the commandline. The --mode option will either take in three parameters (if tile or pow2tile) or a single parameter (otherwise). """ result = [value] if value == "tile": if (len(parser.rargs) < 2): raise optparse.OptionValueError(("--mode tile mising width" " and/or height parameters")) result.extend(parser.rargs[:2]) del parser.rargs[:2] elif value == "pow2tile": if (len(parser.rargs) < 2): raise optparse.OptionValueError(("--mode pow2tile mising minWidth" " and/or height parameters")) result.extend(parser.rargs[:2]) del parser.rargs[:2] setattr(parser.values, option.dest, result) def Main(args): """Allow other scripts to call this script with fake command-line args. @param The commandline argument list """ parser = optparse.OptionParser(USAGE_STRING % '%prog' + HELP_STRING) parser.add_option('--render_dir', dest='render_dir', help = ("specify the location to output the rendered files." " Default is a temp directory.")) parser.add_option('--diff_dir', dest='diff_dir', help = ("specify the location to output the diff files." " Default is a temp directory.")) parser.add_option('--mode', dest='mode', type='string', action="callback", callback=ModeParse, help = ("specify how rendering is to be done.")) parser.add_option('--device', dest='device', help = ("specify the device to render to.")) options, arguments = parser.parse_args(args) if (len(arguments) < 3): print("Expected at least one input and one ouput folder.") parser.print_help() sys.exit(-1) inputs = arguments[1:-1] expected_dir = arguments[-1] extra_args = '' if (options.mode is not None): extra_args += ' --mode %s' % ' '.join(options.mode) if (options.device is not None): extra_args += ' --device %s' % options.device test_rendering.TestRenderSkps(inputs, expected_dir, options.render_dir, options.diff_dir, 'render_pictures', extra_args) if __name__ == '__main__': Main(sys.argv)