summaryrefslogtreecommitdiff
path: root/test-chill/coverage.py
diff options
context:
space:
mode:
authorDerick Huth <derickhuth@gmail.com>2016-02-10 11:13:08 -0700
committerDerick Huth <derickhuth@gmail.com>2016-02-10 11:13:08 -0700
commit1dd03ee01bff2a70e758ce984476527f3ff42c68 (patch)
tree9731867c7019ec9b6ee111c8fa9f92a92119b5ec /test-chill/coverage.py
parent4631ad76927d433da5d55c3c373a1dfd0f74c9d4 (diff)
parentd68532f2f3ba332199f84818cb047d69a3f33588 (diff)
downloadchill-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.py64
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)
+