diff options
author | Derick Huth <derickhuth@gmail.com> | 2016-02-10 11:13:08 -0700 |
---|---|---|
committer | Derick Huth <derickhuth@gmail.com> | 2016-02-10 11:13:08 -0700 |
commit | 1dd03ee01bff2a70e758ce984476527f3ff42c68 (patch) | |
tree | 9731867c7019ec9b6ee111c8fa9f92a92119b5ec /test-chill/coverage.py | |
parent | 4631ad76927d433da5d55c3c373a1dfd0f74c9d4 (diff) | |
parent | d68532f2f3ba332199f84818cb047d69a3f33588 (diff) | |
download | chill-1dd03ee01bff2a70e758ce984476527f3ff42c68.tar.gz chill-1dd03ee01bff2a70e758ce984476527f3ff42c68.tar.bz2 chill-1dd03ee01bff2a70e758ce984476527f3ff42c68.zip |
Merge pull request #8 from dhuth/master
w/ python test suite
Diffstat (limited to 'test-chill/coverage.py')
-rw-r--r-- | test-chill/coverage.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/test-chill/coverage.py b/test-chill/coverage.py new file mode 100644 index 0000000..8ff5af8 --- /dev/null +++ b/test-chill/coverage.py @@ -0,0 +1,64 @@ +import argparse +import pickle + + +def loadcov(filename = 'coverage.pickle'): + with open(filename) as f: + return pickle.load(f) + + +def lines(covset, filename): + for line in covset.coverage_by_file[filename].lines: + yield line.lineno, line.count(), line.code + + +def nonexecuted(covset, filename): + return filter(lambda line: line[1] == 0, lines(covset, filename)) + + +def commented(covset, filename): + return filter(lambda line: line[1] is None, lines(covset, filename)) + + +def linerange(lineiter, minline, maxline): + return filter(lambda line: line[0] >= minline and line[0] <= maxline, lineiter) + + +def print_nonexec(argsns, cov): + if argsns.filename is None: + covlist = list((k, len(list(nonexecuted(cov, k)))) for k in cov.filenames) + covlist = sorted(covlist, key=lambda i: i[1]) + for i in reversed(range(len(covlist))): + print('{}: {}'.format(covlist[i][0].ljust(24), covlist[i][1])) + else: + minline, maxline = map(int,argsns.linerange) + for lineno, count, code in linerange(nonexecuted(cov, argsns.filename), minline, maxline): + print('{}: {}'.format(str(lineno).rjust(5), code)) + + +def print_full_nonexec(argsns, cov): + for filename in cov.filenames: + with open('coverage_report/' + filename + '.txt', 'w') as f: + minline, maxline = map(int,argsns.linerange) + for lineno, count, code in linerange(nonexecuted(cov, filename), minline, maxline): + f.write('{}: {}\n'.format(str(lineno).rjust(5),code)) + + +def make_argparser(): + arg_parser = argparse.ArgumentParser('coverage.py') + cmd_parser_set = arg_parser.add_subparsers() + nonexec_cmd = cmd_parser_set.add_parser('nonexec') + nonexec_cmd.add_argument('-f', dest='filename', default=None) + nonexec_cmd.add_argument('-r', dest='linerange', nargs=2, default=(0, 120000), metavar='STARTLINE ENDLINE') + nonexec_cmd.set_defaults(func=print_nonexec) + full_nonexec_cmd = cmd_parser_set.add_parser('full_nonexec') + full_nonexec_cmd.add_argument('-r', dest='linerange', nargs=2, default=(0, 120000), metavar='STARTLINE ENDLINE') + full_nonexec_cmd.set_defaults(func=print_full_nonexec) + return arg_parser + + +if __name__ == '__main__': + argsns = make_argparser().parse_args() + cov = loadcov() + argsns.func(argsns, cov) + |