From bc2272ca4a5aefbd4971eb435f6f51fb937b4e21 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Mon, 30 Oct 2017 01:25:59 +0100 Subject: [PATCH] Fixed coverage --- .travis.yml | 4 ++-- coverage.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 coverage.sh diff --git a/.travis.yml b/.travis.yml index ca74167..9649630 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,6 @@ language: go go: - 1.9.2 script: + - go get code.google.com/p/go.tools/cmd/cover - go get github.com/mattn/goveralls - - go test -v -covermode=count -coverprofile=coverage.out ./... - - goveralls -coverprofile=coverage.out -service travis-ci -repotoken lhWzILT1WMRgrHXsEhauQOGsoby1nm7DR \ No newline at end of file + - script/coverage --coveralls \ No newline at end of file diff --git a/coverage.sh b/coverage.sh new file mode 100644 index 0000000..0eb28f8 --- /dev/null +++ b/coverage.sh @@ -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 \ No newline at end of file