Home | History | Annotate | Download | only in tools
      1 #!/usr/bin/env python
      2 # Copyright 2015 The PDFium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import os
      7 import subprocess
      8 import sys
      9 
     10 class PNGDiffer():
     11   ACTUAL_TEMPLATE = '.pdf.%d.png'
     12   EXPECTED_TEMPLATE = '_expected' + ACTUAL_TEMPLATE
     13   PLATFORM_EXPECTED_TEMPLATE = '_expected_%s' + ACTUAL_TEMPLATE
     14 
     15   def __init__(self, finder):
     16     self.pdfium_diff_path = finder.ExecutablePath('pdfium_diff')
     17     self.os_name = finder.os_name
     18 
     19   def HasDifferences(self, input_filename, source_dir, working_dir):
     20     input_root, _ = os.path.splitext(input_filename)
     21     actual_path_template = os.path.join(
     22         working_dir, input_root + self.ACTUAL_TEMPLATE)
     23     expected_path_template = os.path.join(
     24         source_dir, input_root + self.EXPECTED_TEMPLATE)
     25     platform_expected_path_template = os.path.join(
     26         source_dir, input_root + self.PLATFORM_EXPECTED_TEMPLATE)
     27     i = 0
     28     try:
     29       while True:
     30         actual_path = actual_path_template % i
     31         expected_path = expected_path_template % i
     32         platform_expected_path = (
     33             platform_expected_path_template % (self.os_name, i))
     34         if os.path.exists(platform_expected_path):
     35           expected_path = platform_expected_path
     36         elif not os.path.exists(expected_path):
     37           if i == 0:
     38             print "WARNING: no expected results files for " + input_filename
     39           break
     40         print "Checking " + actual_path
     41         sys.stdout.flush()
     42         subprocess.check_call(
     43             [self.pdfium_diff_path, expected_path, actual_path])
     44         i += 1
     45     except subprocess.CalledProcessError as e:
     46       print "FAILURE: " + input_filename + "; " + str(e)
     47       return True
     48     return False
     49