[tor-commits] [tor/master] Add my script to dump per-file or per-function coverage

nickm at torproject.org nickm at torproject.org
Thu Jul 16 15:55:48 UTC 2015


commit 90701c1de45ad96b9e4d08938613e754c34f0c3d
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Jul 16 11:55:44 2015 -0400

    Add my script to dump per-file or per-function coverage
---
 scripts/test/cov-display |   72 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/scripts/test/cov-display b/scripts/test/cov-display
new file mode 100755
index 0000000..6c3bbd5
--- /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)



More information about the tor-commits mailing list