github.com/vmware/go-vcloud-director/v2@v2.24.0/hack/coverage (about) 1 #!/bin/sh 2 # Generate test coverage statistics for Go packages. 3 # 4 # Works around the fact that `go test -coverprofile` currently does not work 5 # with multiple packages, see https://code.google.com/p/go/issues/detail?id=6909 6 # 7 # Usage: script/coverage [--html|--coveralls] 8 # 9 # --html Additionally create HTML report and open it in browser 10 # --coveralls Push coverage statistics to coveralls.io 11 # 12 13 set -e 14 15 workdir=.cover 16 profile="$workdir/cover.out" 17 mode=count 18 19 generate_cover_data() { 20 rm -rf "$workdir" 21 mkdir "$workdir" 22 23 for pkg in "$@"; do 24 f="$workdir/$(echo $pkg | tr / -).cover" 25 go test -covermode="$mode" -coverprofile="$f" "$pkg" 26 done 27 28 echo "mode: $mode" >"$profile" 29 grep -h -v "^mode:" "$workdir"/*.cover >>"$profile" 30 } 31 32 show_cover_report() { 33 go tool cover -${1}="$profile" 34 } 35 36 push_to_coveralls() { 37 echo "Pushing coverage statistics to coveralls.io" 38 } 39 40 generate_cover_data $(go list ./...) 41 show_cover_report func 42 case "$1" in 43 "") 44 ;; 45 --html) 46 show_cover_report html ;; 47 --coveralls) 48 push_to_coveralls ;; 49 *) 50 echo >&2 "error: invalid option: $1"; exit 1 ;; 51 esac