blob: 6833ab58dd535823c0b5dc95382d93b4260ea195 [file] [log] [blame]
TEST_OPTS ?=
TEST_EXTRA_OPTS ?=
TEST_TAGS ?= $(BUILD_TAGS)
TEST_PKG_LIST ?= ./...
TEST_COVERAGE_DIR ?= build/coverage
TEST_COVERAGE_PROFILE := $(TEST_COVERAGE_DIR)/coverage.out
TEST_COVERAGE_REPORT := $(TEST_COVERAGE_DIR)/coverage.html
TEST_COVERAGE_PKG_LIST ?= $(TEST_PKG_LIST)
TEST_COVERAGE_OPTS ?= -covermode=atomic -coverpkg=./...
TEST_COVERAGE_EXTRA_OPTS ?=
##@ Test targets
.PHONY: test
test: ## Run all the unit tests
go test $(TEST_OPTS) $(TEST_EXTRA_OPTS) -tags "$(TEST_TAGS)" $(TEST_PKG_LIST)
.PHONY: test-race
test-race: TEST_OPTS=-race
test-race: test ## Run all the unit tests with race detector on
.PHONY: test-coverage
test-coverage: ## Run all the unit tests with coverage analysis on
mkdir -p "$(shell dirname "$(TEST_COVERAGE_PROFILE)")"
go test $(TEST_COVERAGE_OPTS) $(TEST_COVERAGE_EXTRA_OPTS) -coverprofile="$(TEST_COVERAGE_PROFILE)" -tags "$(TEST_TAGS)" $(TEST_COVERAGE_PKG_LIST)
go tool cover -html="$(TEST_COVERAGE_PROFILE)" -o "$(TEST_COVERAGE_REPORT)"
@echo "Test coverage report has been saved to $(TEST_COVERAGE_REPORT)"
.PHONY: test-clean
test-clean:: ## Clean all test artifacts
rm -rf $(TEST_COVERAGE_DIR)