]> sigrok.org Git - libsigrokdecode.git/blobdiff - tests/pdtest
pdtest: Small fix.
[libsigrokdecode.git] / tests / pdtest
index 2a90f2c2e965f4e84d0b5037dccbad2b7be559b0..158b3e03900bb895fd7fca21e360639f16a5559b 100755 (executable)
@@ -1,4 +1,22 @@
-#!/usr/bin/env /usr/bin/python3
+#!/usr/bin/env python3
+##
+## This file is part of the libsigrokdecode project.
+##
+## Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
+##
+## This program is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program.  If not, see <http://www.gnu.org/licenses/>.
+##
 
 import os
 import sys
@@ -205,7 +223,7 @@ def get_tests(testnames):
     return tests
 
 
-def diff_textfiles(f1, f2):
+def diff_text(f1, f2):
     t1 = open(f1).readlines()
     t2 = open(f2).readlines()
     diff = []
@@ -217,7 +235,7 @@ def diff_textfiles(f1, f2):
     return diff
 
 
-def compare_binfiles(f1, f2):
+def compare_binary(f1, f2):
     h1 = md5()
     h1.update(open(f1, 'rb').read())
     h2 = md5()
@@ -275,21 +293,22 @@ def run_tests(tests, fix=False):
                         # message on stderr about it
                         results[-1]['error'] = "Unknown error: runtc %d" % p.returncode
                     if 'error' not in results[-1]:
-                        match = os.path.join(decoders_dir, op['pd'], 'test', op['match'])
+                        matchfile = os.path.join(decoders_dir, op['pd'], 'test', op['match'])
+                        DBG("Comparing with %s" % matchfile)
                         try:
                             diff = diff_error = None
-                            if op['type'] == 'annotation':
-                                diff = diff_textfiles(match, outfile)
+                            if op['type'] in ('annotation', 'python'):
+                                diff = diff_text(matchfile, outfile)
                             elif op['type'] == 'binary':
-                                diff = compare_binfiles(match, outfile)
+                                diff = compare_binary(matchfile, outfile)
                             else:
                                 diff = ["Unsupported output type '%s'." % op['type']]
                         except Exception as e:
                             diff_error = e
                         if fix:
                             if diff or diff_error:
-                                copy(outfile, match)
-                                DBG("Wrote %s" % match)
+                                copy(outfile, matchfile)
+                                DBG("Wrote %s" % matchfile)
                         else:
                             if diff:
                                 results[-1]['diff'] = diff
@@ -388,7 +407,7 @@ if len(sys.argv) == 1:
 
 opt_all = opt_run = opt_show = opt_list = opt_fix = False
 report_dir = None
-opts, args = getopt(sys.argv[1:], "dvarslfRS:")
+opts, args = getopt(sys.argv[1:], "dvarslfR:S:")
 for opt, arg in opts:
     if opt == '-d':
         DEBUG += 1
@@ -429,7 +448,7 @@ try:
         if not os.path.isdir(dumps_dir):
             ERR("Could not find sigrok-dumps repository at %s" % dumps_dir)
             sys.exit(1)
-        results, errors = run_tests(testlist)
+        results, errors = run_tests(testlist, fix=opt_fix)
         ret = errors
     elif opt_show:
         show_tests(testlist)