summaryrefslogtreecommitdiff
path: root/tests/checkdiffs.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/checkdiffs.py')
-rwxr-xr-xtests/checkdiffs.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/checkdiffs.py b/tests/checkdiffs.py
new file mode 100755
index 0000000..4d11888
--- /dev/null
+++ b/tests/checkdiffs.py
@@ -0,0 +1,81 @@
+#! /usr/bin/env python2
+
+import sys
+import os
+import subprocess
+import hashlib
+
+import expected
+import static_pdfs
+
+source_pdfs = static_pdfs.pdffiles[0]
+source_pdfs = dict((os.path.basename(x), x) for x in source_pdfs)
+
+result_dir = expected.result_dir
+
+for subdir in sorted(os.listdir(result_dir)):
+ dstd = os.path.join(result_dir, subdir)
+ if not os.path.isdir(dstd):
+ continue
+ for pdffile in sorted(os.listdir(dstd)):
+ testname = '%s/%s' % (subdir, pdffile)
+ srcf = source_pdfs.get(pdffile)
+ dstf = os.path.join(dstd, pdffile)
+ if pdffile not in source_pdfs:
+ print('\n Skipping %s -- source not found' % testname)
+ continue
+
+ with open(dstf, 'rb') as f:
+ data = f.read()
+ hash = hashlib.md5(data).hexdigest()
+ skipset = set((hash, 'skip', 'xfail', 'fail', '!' + hash))
+ if expected.results[testname] & skipset:
+ print('\n Skipping %s -- marked done' % testname)
+ continue
+ if os.path.exists('foobar.pdf'):
+ os.remove('foobar.pdf')
+ builtdiff = False
+ while 1:
+ sys.stdout.write('''
+ Test case %s
+
+ c = compare using imagemagick and okular
+ f = display foobar.pdf (result from comparison)
+ o = display results with okular
+ a = display results with acrobat
+
+ s = mark 'skip' and go to next PDF
+ g = mark as good and go to next PDF
+ b = mark as bad and go to next PDF
+ n = next pdf without marking
+ q = quit
+--> ''' % testname)
+ sel = raw_input()
+ if sel == 'q':
+ raise SystemExit(0)
+ if sel == 'n':
+ break
+ if sel == 'c':
+ subprocess.call(('compare', '-verbose', srcf, dstf,
+ 'foobar.pdf'))
+ builtdiff = True
+ continue
+ if sel == 'f':
+ subprocess.call(('okular', 'foobar.pdf'))
+ continue
+ if sel == 'o':
+ subprocess.call(('okular', srcf, dstf))
+ continue
+ if sel == 'a':
+ if builtdiff:
+ subprocess.call(('acroread', srcf, dstf, 'foobar.pdf'))
+ else:
+ subprocess.call(('acroread', srcf, dstf))
+ continue
+
+ if sel in 'sgb':
+ results = (hash if sel == 'g' else
+ ' skip' if sel == 's' else '!'+hash)
+ with open(expected.expectedf, 'a') as f:
+ f.write('%s %s\n' % (testname, results))
+ break