-#!/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
return tests
-def diff_textfiles(f1, f2):
+def diff_text(f1, f2):
t1 = open(f1).readlines()
t2 = open(f2).readlines()
diff = []
return diff
-def compare_binfiles(f1, f2):
+def compare_binary(f1, f2):
h1 = md5()
h1.update(open(f1, 'rb').read())
h2 = md5()
# 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
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
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)