12a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com''' 22a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comCompares the rendererings of serialized SkPictures to expected images. 32a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 42a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comLaunch with --help to see more information. 52a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 62a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 72a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comCopyright 2012 Google Inc. 82a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 92a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comUse of this source code is governed by a BSD-style license that can be 102a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comfound in the LICENSE file. 112a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com''' 122a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com# common Python modules 132a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport os 142a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport optparse 152a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport sys 162a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport shutil 172a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport tempfile 182a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comimport test_rendering 192a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 202a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comUSAGE_STRING = 'Usage: %s input... expectedDir' 212a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comHELP_STRING = ''' 222a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 232a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comTakes input SkPicture files and renders them as PDF files, and then compares 242a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comthose resulting PDF files against PDF files found in expectedDir. 252a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 262a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comEach instance of "input" can be either a file (name must end in .skp), or a 272a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comdirectory (in which case this script will process all .skp files within the 282a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comdirectory). 292a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com''' 302a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 312a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 322a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comdef Main(args): 332a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com """Allow other scripts to call this script with fake command-line args. 342a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 352a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com @param The commandline argument list 362a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com """ 372a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com parser = optparse.OptionParser(USAGE_STRING % '%prog' + HELP_STRING) 382a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com parser.add_option('--render_dir', dest='render_dir', 392a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com help = ('specify the location to output the rendered ' 402a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 'files. Default is a temp directory.')) 412a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com parser.add_option('--diff_dir', dest='diff_dir', 422a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com help = ('specify the location to output the diff files. ' 432a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 'Default is a temp directory.')) 442a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 452a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com options, arguments = parser.parse_args(args) 462a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 472a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com if (len(arguments) < 3): 482a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com print("Expected at least one input and one ouput folder.") 492a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com parser.print_help() 502a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com sys.exit(-1) 512a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 522a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com inputs = arguments[1:-1] 532a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com expected_dir = arguments[-1] 542a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 552a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com test_rendering.TestRenderSkps(inputs, expected_dir, options.render_dir, 562a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com options.diff_dir, 'render_pdfs', '') 572a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 582a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.comif __name__ == '__main__': 592a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com Main(sys.argv) 602a827e81b3334f33b0f8ff05b6a39a11d532568fedisonn@google.com 61