41 lines
734 B
Bash
41 lines
734 B
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
COVER=cover
|
||
|
ROOT_PKG=go.uber.org/atomic
|
||
|
|
||
|
if [[ -d "$COVER" ]]; then
|
||
|
rm -rf "$COVER"
|
||
|
fi
|
||
|
mkdir -p "$COVER"
|
||
|
|
||
|
i=0
|
||
|
for pkg in "$@"; do
|
||
|
i=$((i + 1))
|
||
|
|
||
|
extracoverpkg=""
|
||
|
if [[ -f "$GOPATH/src/$pkg/.extra-coverpkg" ]]; then
|
||
|
extracoverpkg=$( \
|
||
|
sed -e "s|^|$pkg/|g" < "$GOPATH/src/$pkg/.extra-coverpkg" \
|
||
|
| tr '\n' ',')
|
||
|
fi
|
||
|
|
||
|
coverpkg=$(go list -json "$pkg" | jq -r '
|
||
|
.Deps
|
||
|
| map(select(startswith("'"$ROOT_PKG"'")))
|
||
|
| map(select(contains("/vendor/") | not))
|
||
|
| . + ["'"$pkg"'"]
|
||
|
| join(",")
|
||
|
')
|
||
|
if [[ -n "$extracoverpkg" ]]; then
|
||
|
coverpkg="$extracoverpkg$coverpkg"
|
||
|
fi
|
||
|
|
||
|
go test \
|
||
|
-coverprofile "$COVER/cover.${i}.out" -coverpkg "$coverpkg" \
|
||
|
-v "$pkg"
|
||
|
done
|
||
|
|
||
|
gocovmerge "$COVER"/*.out > cover.out
|