[tor-commits] [tor/master] Make contrib/coverage smarter about check file-existence edge cases

nickm at torproject.org nickm at torproject.org
Tue Jul 16 13:54:04 UTC 2013


commit e5d3efd892f63744be8867fb69e2eb1cb5236438
Author: Andrea Shepard <andrea at torproject.org>
Date:   Tue Jul 16 06:40:08 2013 -0700

    Make contrib/coverage smarter about check file-existence edge cases
---
 contrib/coverage |   32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/contrib/coverage b/contrib/coverage
index 8d97166..f4ae475 100755
--- a/contrib/coverage
+++ b/contrib/coverage
@@ -12,9 +12,35 @@ for fn in src/or/*.c src/common/*.c; do
     DN=`dirname $fn`
     F=`echo $BN | sed -e 's/\.c$//;'`
     GC="${BN}.gcov"
-    gcov -o $DN/src_*$F.o $fn
-    if [ -n $dst ]
+    # Figure out the object file names
+    ONS=`echo ${DN}/src_*-${F}.o`
+    ONS_WILDCARD_LITERAL="${DN}/src_*-${F}.o"
+    # If the wildcard didn't expand, no files
+    if [ "$ONS" != "${ONS_WILDCARD_LITERAL}" ]
     then
-      mv $GC $dst/$GC
+      for on in $ONS; do
+        # We should have a gcno file
+        GCNO=`echo $on | sed -e 's/\.o$/\.gcno/;'`
+        if [ -e $GCNO ]
+        then
+          # No need to test for gcda, since gcov assumes no execution
+          # if it's absent
+          rm -f $GC
+          gcov -o $on $fn
+          if [ -e $GC ]
+          then
+            if [ -n $dst ]
+            then
+              mv $GC $dst/$GC
+            fi
+          else
+            echo "gcov -o $on $fn didn't make a .gcov file"
+          fi
+        else
+          echo "Couldn't find gcno file for $on"
+        fi
+      done
+    else
+      echo "No object file found matching source file $fn"
     fi
 done





More information about the tor-commits mailing list