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