pd_cvg = []
for tclist in tests[pd]:
for tc in tclist:
- args = cmd.copy()
+ args = cmd[:]
if DEBUG > 1:
args.append('-d')
# Set up PD stack for this test.
os.unlink(outfile)
if op['type'] == 'exception' and 'error' in results[-1]:
# filter out the exception we were looking for
- reg = "^Error: srd: Protocol decoder instance %s: %s:" % (op['pd'], op['match'])
+ reg = "^Error: srd: %s:" % op['match']
if re.match(reg, results[-1]['error']):
# found it, not an error
results[-1].pop('error')
for cvg in results[-1]['coverage']:
if cvg['scope'] == pd:
pd_cvg.append(cvg)
- if VERBOSE and opt_coverage and len(pd_cvg) > 1:
+ if opt_coverage and len(pd_cvg) > 1:
# report total coverage of this PD, across all the tests
# that were done on it.
total_lines, missed_lines = coverage_sum(pd_cvg)
pd_coverage = 100 - (float(len(missed_lines)) / total_lines * 100)
if VERBOSE:
dots = '.' * (54 - len(pd) - 2)
- INFO("%s total %s %d%%" % (pd, dots, pd_coverage))
+ INFO("%s total %s %d%%" % (pd, dots, pd_coverage))
+ if report_dir:
+ # generate a missing lines list across all the files in
+ # the PD
+ files = {}
+ for entry in missed_lines:
+ filename, line = entry.split(':')
+ if filename not in files:
+ files[filename] = []
+ files[filename].append(line)
+ text = ''
+ for filename in sorted(files.keys()):
+ line_list = ','.join(sorted(files[filename], key=int))
+ text += "%s: %s\n" % (filename, line_list)
+ open(os.path.join(report_dir, pd + "_total"), 'w').write(text)
+
return results, errors