X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=tests%2Fpdtest;h=55718be0a8e344713cd7bb3276d59b95e3f5b6bf;hb=83df730dd21ce52670a593455cfe5e732989a90d;hp=57a8b54caf0d73957ef45463e7a2cd49c275ca6e;hpb=6a15597a7b3f901b566b7bfc8c484a14e0fb6a11;p=libsigrokdecode.git diff --git a/tests/pdtest b/tests/pdtest index 57a8b54..55718be 100755 --- a/tests/pdtest +++ b/tests/pdtest @@ -20,6 +20,7 @@ import os import sys +import re from getopt import getopt from tempfile import mkstemp from subprocess import Popen, PIPE @@ -376,6 +377,12 @@ def run_tests(tests, fix=False): if coverage: results[-1]['coverage_report'] = coverage os.unlink(outfile) + if op['type'] == 'exception' and 'error' in results[-1]: + # filter out the exception we were looking for + reg = "^Error: srd: %s:" % op['match'] + if re.match(reg, results[-1]['error']): + # found it, not an error + results[-1].pop('error') if VERBOSE: if 'diff' in results[-1]: INFO("Output mismatch") @@ -402,14 +409,29 @@ def run_tests(tests, fix=False): 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