blob: ad65bdfeb670b34102248909c614b2ef4d21922a [file] [log] [blame]
# Licensed to Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Apache Software Foundation (ASF) licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
TEST_OPTS ?= -v
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
GINKGO := $(tool_bin)/ginkgo
$(GINKGO):
@echo "Install ginkgo..."
@mkdir -p $(tool_bin)
@GOBIN=$(tool_bin) go install github.com/onsi/ginkgo/v2/ginkgo@v2.1.4
.PHONY: test
test: $(GINKGO) generate ## Run all the unit tests
$(GINKGO) $(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: $(GINKGO) generate ## Run all the unit tests with coverage analysis on
mkdir -p "$(TEST_COVERAGE_DIR)"
$(GINKGO) $(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)