sys.exit()
-def check_testcase(tc):
+def check_tclist(tc):
if 'pdlist' not in tc or not tc['pdlist']:
return("No protocol decoders")
if 'input' not in tc or not tc['input']:
tclist = []
else:
tclist = [target_tc]
- for t in tclist:
- error = check_testcase(t)
- if error:
- ERR("Error in %s: %s" % (path, error))
- return []
+ for t in tclist:
+ error = check_tclist(t)
+ if error:
+ ERR("Error in %s: %s" % (path, error))
+ return []
return tclist
fd, outfile = mkstemp()
os.close(fd)
opargs.extend(['-f', outfile])
- DBG("Running %s %s" % (cmd, ' '.join(args + opargs)))
- stdout, stderr = Popen(args + opargs, stdout=PIPE, stderr=PIPE).communicate()
+ DBG("Running %s" % (' '.join(args + opargs)))
+ p = Popen(args + opargs, stdout=PIPE, stderr=PIPE)
+ stdout, stderr = p.communicate()
if stdout:
results[-1]['statistics'] = stdout.decode('utf-8').strip()
if stderr:
results[-1]['error'] = stderr.decode('utf-8').strip()
errors += 1
- match = "%s/%s/test/%s" % (decoders_dir, op['pd'], op['match'])
- diff = diff_files(match, outfile)
- if diff:
- results[-1]['diff'] = diff
+ elif p.returncode != 0:
+ # runtc indicated an error, but didn't output a
+ # message on stderr about it
+ results[-1]['error'] = "Unknown error: runtc %d" % p.returncode
+ # Only bother with the diff if it all worked.
+ if 'error' not in results[-1]:
+ match = "%s/%s/test/%s" % (decoders_dir, op['pd'], op['match'])
+ diff = diff_files(match, outfile)
+ if diff:
+ results[-1]['diff'] = diff
except Exception as e:
results[-1]['error'] = str(e)
finally:
opt_all = opt_run = opt_show = opt_list = False
report_dir = None
-opts, args = getopt(sys.argv[1:], "dvarslR:")
+opts, args = getopt(sys.argv[1:], "dvarslRS:")
for opt, arg in opts:
if opt == '-d':
DEBUG = True
opt_list = True
elif opt == '-R':
report_dir = arg
+ elif opt == '-S':
+ dumps_dir = arg
if opt_run and opt_show:
usage("Use either -s or -r, not both.")
usage("Specify either -a or tests.")
if opt_run:
+ 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)
ret = errors
elif opt_show: