2 changed files with 54 additions and 2 deletions
@ -0,0 +1,52 @@ |
|||
#!/bin/sh |
|||
# Generate test coverage statistics for Go packages. |
|||
# |
|||
# Works around the fact that `go test -coverprofile` currently does not work |
|||
# with multiple packages, see https://code.google.com/p/go/issues/detail?id=6909 |
|||
# |
|||
# Usage: script/coverage [--html|--coveralls] |
|||
# |
|||
# --html Additionally create HTML report and open it in browser |
|||
# --coveralls Push coverage statistics to coveralls.io |
|||
# |
|||
|
|||
set -e |
|||
|
|||
workdir=.cover |
|||
profile="$workdir/cover.out" |
|||
mode=count |
|||
|
|||
generate_cover_data() { |
|||
rm -rf "$workdir" |
|||
mkdir "$workdir" |
|||
|
|||
for pkg in "$@"; do |
|||
f="$workdir/$(echo $pkg | tr / -).cover" |
|||
go test -covermode="$mode" -coverprofile="$f" "$pkg" |
|||
done |
|||
|
|||
echo "mode: $mode" >"$profile" |
|||
grep -h -v "^mode:" "$workdir"/*.cover >>"$profile" |
|||
} |
|||
|
|||
show_cover_report() { |
|||
go tool cover -${1}="$profile" |
|||
} |
|||
|
|||
push_to_coveralls() { |
|||
echo "Pushing coverage statistics to coveralls.io" |
|||
goveralls -coverprofile="$profile" -repotoken lhWzILT1WMRgrHXsEhauQOGsoby1nm7DR |
|||
} |
|||
|
|||
generate_cover_data $(go list ./...) |
|||
show_cover_report func |
|||
case "$1" in |
|||
"") |
|||
;; |
|||
--html) |
|||
show_cover_report html ;; |
|||
--coveralls) |
|||
push_to_coveralls ;; |
|||
*) |
|||
echo >&2 "error: invalid option: $1"; exit 1 ;; |
|||
esac |
|||
Loading…
Reference in new issue