| #!/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 |