InVisionApp/go-health

View on GitHub
Makefile

Summary

Maintainability
Test Coverage
# Some things this makefile could make use of:
#
# - test coverage target(s)
# - profiler target(s)
#

OUTPUT_DIR      = build
TMP_DIR        := .tmp
RELEASE_VER    := $(shell git rev-parse --short HEAD)
NAME            = default
COVERMODE       = atomic

TEST_PACKAGES      := $(shell go list ./... | grep -v vendor | grep -v fakes)

.PHONY: help
.DEFAULT_GOAL := help

# Under the hood, `go test -tags ...` also runs the "default" (unit) test case
# in addition to the specified tags
test: installdeps test/integration ## Perform both unit and integration tests

testv: installdeps testv/integration ## Perform both unit and integration tests (with verbose flags)

test/unit: ## Perform unit tests
    go test -cover $(TEST_PACKAGES)

testv/unit: ## Perform unit tests (with verbose flag)
    go test -v -cover $(TEST_PACKAGES)

test/integration: ## Perform integration tests
    go test -cover -tags integration $(TEST_PACKAGES)

testv/integration: ## Perform integration tests
    go test -v -cover -tags integration $(TEST_PACKAGES)

test/race: ## Perform unit tests and enable the race detector
    go test -race -cover $(TEST_PACKAGES)

test/cover: ## Run all tests + open coverage report for all packages
    echo 'mode: $(COVERMODE)' > .coverage
    for PKG in $(TEST_PACKAGES); do \
        go test -coverprofile=.coverage.tmp -tags "integration" $$PKG; \
        grep -v -E '^mode:' .coverage.tmp >> .coverage; \
    done
    go tool cover -html=.coverage
    $(RM) .coverage .coverage.tmp

test/cc: ## Run all tests + create coverage report for code climate
    echo 'mode: $(COVERMODE)' > c.out
    for PKG in $(TEST_PACKAGES); do \
        go test -covermode=$(COVERMODE) -coverprofile=.coverage.tmp $$PKG; \
        if [ -f .coverage.tmp ]; then\
            grep -v -E '^mode:' .coverage.tmp >> c.out; \
            rm .coverage.tmp;\
        fi;\
    done
    $(RM) .coverage.tmp

test/codecov: ## Run all tests + open coverage report for all packages
    for PKG in $(TEST_PACKAGES); do \
        go test -covermode=$(COVERMODE) -coverprofile=profile.out $$PKG; \
        if [ -f profile.out ]; then\
            cat profile.out >> coverage.txt;\
            rm profile.out;\
        fi;\
    done
    $(RM) profile.out

installdeps: ## Install needed dependencies for various middlewares
    go get -t -v ./...

generate: ## Run generate for non-vendor packages only
    go list ./... | xargs go generate

help: ## Display this help message
    @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_\/-]+:.*?## / {printf "\033[34m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | \
        sort | \
        grep -v '#'