tor/scripts/test/coverage
2018-11-15 19:35:56 +02:00

47 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
# Copyright 2013 The Tor Project, Inc.
# See LICENSE for licensing information.
# coverage -- run gcov on the appropriate set of object files to extract
# coverage information.
dst=$1
for fn in src/core/*/*.c src/feature/*/*.c src/app/*/*.c src/lib/*/*.c; do
BN=$(basename "$fn")
DN=$(dirname "$fn")
F=$(echo "$BN" | sed -e 's/\.c$//;')
GC="${BN}.gcov"
# 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
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 [ -d "$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