You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
7 years ago
|
#!/bin/bash
|
||
|
|
||
|
# $Id: coverage.sh 5539 2008-03-30 09:05:39Z wiemann $
|
||
|
# Author: Lea Wiemann <LeWiemann@gmail.com>
|
||
|
# Copyright: This script has been placed in the public domain.
|
||
|
|
||
|
# Usage: ./coverage.sh [project, [module]]
|
||
|
|
||
|
set -e
|
||
|
# Resolve all symlinks in current path.
|
||
|
cd -P .
|
||
|
proj="${PWD##*/}"
|
||
|
if test "$proj" == test; then
|
||
|
cd ..
|
||
|
proj="${PWD##*/}"
|
||
|
fi
|
||
|
if test "$1"; then
|
||
|
proj="$1"
|
||
|
fi
|
||
|
module="${2:-alltests.py}"
|
||
|
module="${module#test/}"
|
||
|
echo "Performing code coverage test for project \"$proj\", test module \"$module\"..."
|
||
|
echo
|
||
|
echo "Please be patient; coverage tracking slows test execution down by more"
|
||
|
echo "than factor 10."
|
||
|
echo
|
||
|
cd test
|
||
|
rm -rf cover
|
||
|
mkdir -p cover
|
||
|
python -u -m trace --count --coverdir=cover --missing "$module"
|
||
|
cd ..
|
||
|
echo
|
||
|
echo
|
||
|
echo Uncovered lines
|
||
|
echo ===============
|
||
|
echo
|
||
|
(
|
||
|
find "$proj/" -name \*.py | while read i; do
|
||
|
i="${i%.py}"
|
||
|
test -f test/cover/"${i//\//.}".cover -o "${i##*/}" == Template || echo "${i//\//.}" "`cat "$i.py" | wc -l`"
|
||
|
done
|
||
|
cd test/cover
|
||
|
find . \( -name . -o ! -name "$proj".\* -exec rm {} \; \)
|
||
|
for i in *.cover; do
|
||
|
sed 's/^>>>>>> \(.*"""\)/ \1/' < "$i" > "${i%.cover}"
|
||
|
rm "$i"
|
||
|
done
|
||
|
for i in *; do echo -n "$i "; grep -c '^>>>>>> ' "$i" || true; done
|
||
|
) | grep -v ' 0$' | sort -nk 2
|