[tor-commits] [tor/master] Update cov-diff to handle new gcov, and remove timestamps

nickm at torproject.org nickm at torproject.org
Tue May 22 12:42:10 UTC 2018


commit db94d7fed246e617fe953751a8f506f9b57c2fda
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon May 14 18:04:10 2018 -0400

    Update cov-diff to handle new gcov, and remove timestamps
    
    The new gcov sometimes emits *s if there is a line containing
    multiple basic blocks, and some are not executed.  (The gcov
    documentation says something weird about this point, so I'm trying
    to interpret it into the compilerese that I'm familiar with.)
    That's bug 26101.
    
    Also, when we're looking for unique variations in our coverage, we
    would like cov-diff to suppress timestamps on the diffs.  That's bug
    26102.
    
    Both of these are bugfixes on 0.2.5.1-alpha when the cov-diff script
    was introduced.
    
    My apologies for the perl.
---
 changes/bug26101_26102 | 5 +++++
 scripts/test/cov-diff  | 6 +++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/changes/bug26101_26102 b/changes/bug26101_26102
new file mode 100644
index 000000000..bc3bc84b2
--- /dev/null
+++ b/changes/bug26101_26102
@@ -0,0 +1,5 @@
+  o Minor bugfixes (test coverage tools):
+    - Update our "cov-diff" script to handle output from the latest
+      version of gcov, and to remove extraneous timestamp information
+      from its output. Fixes bugs 26101 and 26102; bugfix on
+      0.2.5.1-alpha.
\ No newline at end of file
diff --git a/scripts/test/cov-diff b/scripts/test/cov-diff
index ed8874d2d..6179dff63 100755
--- a/scripts/test/cov-diff
+++ b/scripts/test/cov-diff
@@ -10,12 +10,12 @@ DIRB="$2"
 for B in $DIRB/*; do
   A=$DIRA/`basename $B`
   if [ -f $A ]; then
-      perl -pe 's/^\s*\!*\d+:/        1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$A" > "$A.tmp"
+      perl -pe 's/^\s*\!*\d+(\*?):/        1$1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$A" > "$A.tmp"
   else
       cat /dev/null > "$A.tmp"
   fi
-  perl -pe 's/^\s*\!*\d+:/        1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$B" > "$B.tmp"
-  diff -u "$A.tmp" "$B.tmp"
+  perl -pe 's/^\s*\!*\d+(\*?):/        1$1:/; s/^([^:]+:)[\d\s]+:/$1/; s/^ *-:(Runs|Programs):.*//;' "$B" > "$B.tmp"
+  diff -u "$A.tmp" "$B.tmp" |perl -pe 's/^((?:\+\+\+|---)(?:.*tmp))\s+.*/$1/;'
   rm "$A.tmp" "$B.tmp"
 done
 





More information about the tor-commits mailing list