calculate coverage for all packages referenced by the package

This commit is contained in:
Wenkai Yin 2016-08-31 16:26:44 +08:00
parent 511b9aec5b
commit 8be2255f0b
1 changed files with 30 additions and 7 deletions

View File

@ -1,12 +1,35 @@
#!/bin/bash
set -e
echo "mode: set" >>profile.cov
for dir in $(go list ./... | grep -v -E 'vendor|tests')
deps=""
# listDeps lists packages referenced by package in $1,
# excluding golang standard library and packages in
# direcotry vendor
function listDeps(){
pkg=$1
deps=$pkg
ds=$(echo $(go list -f '{{.Imports}}' $pkg) | sed 's/[][]//g')
for d in $ds
do
if echo $d | grep -q "github.com/vmware/harbor" && echo $d | grep -qv "vendor"
then
deps="$deps,$d"
fi
done
}
packages=$(go list ./... | grep -v -E 'vendor|tests')
for package in $packages
do
go test -cover -coverprofile=profile.tmp $dir
if [ -f profile.tmp ]
then
cat profile.tmp | tail -n +2 >> profile.cov
rm profile.tmp
fi
listDeps $package
go test -cover -coverprofile=profile.tmp -coverpkg "$deps" $package
if [ -f profile.tmp ]
then
cat profile.tmp | tail -n +2 >> profile.cov
rm profile.tmp
fi
done