|
| 1 | +# COVERAGE_OUTPUT dir is a temp dir (OSX/Linux compatible), unless explicitly specified through env COVERAGE_DIR |
| 2 | +COVERAGE_OUTPUT := $(COVERAGE_DIR) |
| 3 | +ifeq ($(COVERAGE_OUTPUT),) |
| 4 | + COVERAGE_OUTPUT := $(shell mktemp -d 2>/dev/null || mktemp -d -t machine-coverage) |
| 5 | +endif |
| 6 | + |
| 7 | +# Final cover file, html, and mode |
| 8 | +COVERAGE_PROFILE := $(COVERAGE_OUTPUT)/profile.out |
| 9 | +COVERAGE_HTML := $(COVERAGE_OUTPUT)/index.html |
| 10 | +COVERAGE_MODE := set |
| 11 | + |
| 12 | +# Goveralls dependency |
| 13 | +GOVERALLS_BIN := $(GOPATH)/bin/goveralls |
| 14 | +GOVERALLS := $(shell [ -x $(GOVERALLS_BIN) ] && echo $(GOVERALLS_BIN) || echo '') |
| 15 | + |
| 16 | +# Generate coverage |
| 17 | +coverage-generate: $(COVERAGE_PROFILE) |
| 18 | + |
| 19 | +# Send the results to coveralls |
| 20 | +coverage-send: $(COVERAGE_PROFILE) |
| 21 | + $(if $(GOVERALLS), , $(error Please install goveralls: go get github.com/mattn/goveralls)) |
| 22 | + @$(GOVERALLS) -service travis-ci -coverprofile="$(COVERAGE_PROFILE)" |
| 23 | + |
| 24 | +# Generate html report |
| 25 | +coverage-html: $(COVERAGE_HTML) |
| 26 | + |
| 27 | +# Serve over http - useful only if building remote/headless |
| 28 | +coverage-serve: $(COVERAGE_HTML) |
| 29 | + @cd "$(COVERAGE_OUTPUT)" && python -m SimpleHTTPServer 8000 |
| 30 | + |
| 31 | +# Clean up coverage coverage output |
| 32 | +coverage-clean: |
| 33 | + @rm -Rf "$(COVERAGE_OUTPUT)/coverage" |
| 34 | + @rm -f "$(COVERAGE_HTML)" |
| 35 | + @rm -f "$(COVERAGE_PROFILE)" |
| 36 | + |
| 37 | +$(COVERAGE_PROFILE): $(shell find . -type f -name '*.go') |
| 38 | + @mkdir -p "$(COVERAGE_OUTPUT)/coverage" |
| 39 | + @$(foreach PKG,$(PKGS), go test $(VERBOSE_GO) -tags "$(BUILDTAGS)" -covermode=$(COVERAGE_MODE) -coverprofile="$(COVERAGE_OUTPUT)/coverage/`echo $(PKG) | tr "/" "-"`.cover" "$(PKG)";) |
| 40 | + @echo "mode: $(COVERAGE_MODE)" > "$(COVERAGE_PROFILE)" |
| 41 | + @grep -h -v "^mode:" "$(COVERAGE_OUTPUT)/coverage"/*.cover >> "$(COVERAGE_PROFILE)" |
| 42 | + |
| 43 | +$(COVERAGE_HTML): $(COVERAGE_PROFILE) |
| 44 | + $(GO) tool cover -html="$(COVERAGE_PROFILE)" -o "$(COVERAGE_HTML)" |
0 commit comments