summaryrefslogtreecommitdiff
path: root/scripts/test
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2015-07-16 11:55:44 -0400
committerNick Mathewson <nickm@torproject.org>2015-07-16 11:55:44 -0400
commit90701c1de45ad96b9e4d08938613e754c34f0c3d (patch)
tree0f4359047b721ad032e0872b7a50433b29a9d7f1 /scripts/test
parentedaf68173549fe520e273d8e921bd9a00101d174 (diff)
downloadtor-90701c1de45ad96b9e4d08938613e754c34f0c3d.tar.gz
tor-90701c1de45ad96b9e4d08938613e754c34f0c3d.zip
Add my script to dump per-file or per-function coverage
Diffstat (limited to 'scripts/test')
-rwxr-xr-xscripts/test/cov-display72
1 files changed, 72 insertions, 0 deletions
diff --git a/scripts/test/cov-display b/scripts/test/cov-display
new file mode 100755
index 0000000000..6c3bbd5511
--- /dev/null
+++ b/scripts/test/cov-display
@@ -0,0 +1,72 @@
+#!/usr/bin/python
+import sys, re
+
+none0, some0 = 0,0
+branchTaken0, branchNot0 = 0,0
+
+BRANCH = False
+FUNC = False
+
+if sys.argv[1] == '-b':
+ BRANCH = True
+ del sys.argv[1]
+
+if sys.argv[1] == '-f':
+ FUNC = True
+ del sys.argv[1]
+
+def show(name, none, some):
+ if some+none == 0:
+ none = 1
+ print name, none, some, "%.02f"%(100*(float(some)/(some+none)))
+
+for fn in sys.argv[1:]:
+ none = some = branchTaken = branchNot = 0
+ inFunc = ""
+ for line in open(fn, 'r'):
+ m = re.match(r'^[^:]*:([^:]*):(.*)', line)
+ if m:
+ body = m.group(2).rstrip()
+ lineno = m.group(1).strip()
+ else:
+ body = ""
+ lineno = "?"
+ m = re.match(r'^([A-Za-z_][A-Za-z0-9_]*)(?:, *)?\(', body)
+ if m:
+ inFunc = "%s:%s %s" %(fn,lineno,m.group(1))
+ elif body == "}":
+ if FUNC and inFunc:
+ show(inFunc, none, some)
+ none = some = 0
+ inFunc = None
+ if re.match(r'^ *###', line):
+ none += 1
+ elif re.match(r'^ *\d', line):
+ some += 1
+ else:
+ m = re.match(r'^branch.*taken (\d+)%', line)
+ if m:
+ if int(m.group(1)) == 0:
+ branchNot += 1
+ else:
+ branchTaken += 1
+
+ none0 += none
+ some0 += some
+ branchTaken0 += branchTaken
+ branchNot0 += branchNot
+ if FUNC:
+ pass
+ elif BRANCH:
+ if branchTaken or branchNot:
+ show(fn, branchNot, branchTaken)
+ else:
+ if some or none:
+ show(fn, none, some)
+
+if BRANCH:
+ if branchTaken0 or branchNot0:
+ show("TOTAL", branchNot0, branchTaken0)
+else:
+ if some0 or none0:
+ show("TOTAL", none0, some0)