]> sigrok.org Git - libsigrokdecode.git/blobdiff - tests/pdtest
pdtest/runtc: Add support for binary output types.
[libsigrokdecode.git] / tests / pdtest
index 608cd8a464012f3e6bfded10c6c1601f60ad0ca8..2a90f2c2e965f4e84d0b5037dccbad2b7be559b0 100755 (executable)
@@ -6,6 +6,8 @@ from getopt import getopt
 from tempfile import mkstemp
 from subprocess import Popen, PIPE
 from difflib import Differ
+from hashlib import md5
+from shutil import copy
 
 DEBUG = 0
 VERBOSE = False
@@ -203,7 +205,7 @@ def get_tests(testnames):
     return tests
 
 
-def diff_files(f1, f2):
+def diff_textfiles(f1, f2):
     t1 = open(f1).readlines()
     t2 = open(f2).readlines()
     diff = []
@@ -215,6 +217,19 @@ def diff_files(f1, f2):
     return diff
 
 
+def compare_binfiles(f1, f2):
+    h1 = md5()
+    h1.update(open(f1, 'rb').read())
+    h2 = md5()
+    h2.update(open(f2, 'rb').read())
+    if h1.digest() == h2.digest():
+        result = None
+    else:
+        result = ["Binary output does not match."]
+
+    return result
+
+
 def run_tests(tests, fix=False):
     errors = 0
     results = []
@@ -265,6 +280,8 @@ def run_tests(tests, fix=False):
                             diff = diff_error = None
                             if op['type'] == 'annotation':
                                 diff = diff_textfiles(match, outfile)
+                            elif op['type'] == 'binary':
+                                diff = compare_binfiles(match, outfile)
                             else:
                                 diff = ["Unsupported output type '%s'." % op['type']]
                         except Exception as e: