|
4 | 4 | # |
5 | 5 | all: build |
6 | 6 |
|
7 | | -ENVTEST_ASSETS_DIR=$(PWD)/test-bin |
8 | | -export PATH := $(PATH):$(ENVTEST_ASSETS_DIR) |
9 | | - |
10 | | -test-env: SHELL := /bin/bash |
11 | | -test-env: |
12 | | - mkdir -p ${ENVTEST_ASSETS_DIR} |
13 | | - test -f ${ENVTEST_ASSETS_DIR}/setup-envtest.sh || curl -sSLo ${ENVTEST_ASSETS_DIR}/setup-envtest.sh https://raw.githubusercontent.com/kubernetes-sigs/controller-runtime/v0.7.2/hack/setup-envtest.sh |
14 | | - source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); |
15 | | - cp -r ${ENVTEST_ASSETS_DIR}/bin /usr/local/kubebuilder/bin |
16 | | - |
17 | | -test: SHELL := /bin/bash |
18 | | -test: test-env ## Run tests. |
19 | | - go test ./... -coverprofile cover.out |
| 7 | +BASE_DIR=$(shell pwd) |
| 8 | + |
| 9 | +##@ Test |
| 10 | +TEST_BIN_DIR = $(BASE_DIR)/tools/testbin |
| 11 | +TEST_RESULT_DIR = $(BASE_DIR)/testing |
| 12 | +ENVTEST ?= $(TEST_BIN_DIR)/setup-envtest |
| 13 | +GINKGO ?= $(TEST_BIN_DIR)/ginkgo |
| 14 | +ENVTEST_K8S_VERSION ?= 1.28.3 |
| 15 | + |
| 16 | +$(TEST_BIN_DIR): |
| 17 | + mkdir -p $(TEST_BIN_DIR) |
| 18 | + |
| 19 | +$(TEST_RESULT_DIR): |
| 20 | + mkdir -p $(TEST_RESULT_DIR) |
| 21 | + |
| 22 | +# go-get-tool will 'go get' any package $3 and install it to $2 in folder $1. |
| 23 | +define go-get-tool |
| 24 | +@[ -f $(2) ] || { \ |
| 25 | +set -e ;\ |
| 26 | +TMP_DIR=$$(mktemp -d) ;\ |
| 27 | +cd $$TMP_DIR ;\ |
| 28 | +go mod init tmp ;\ |
| 29 | +echo "Downloading $(3)" ;\ |
| 30 | +GOBIN=$(1) go install $(3) ;\ |
| 31 | +ls $$TMP_DIR;\ |
| 32 | +echo $(2);\ |
| 33 | +rm -rf $$TMP_DIR ;\ |
| 34 | +} |
| 35 | +endef |
| 36 | + |
| 37 | +.PHONY: ginkgo |
| 38 | +ginkgo: $(GINKGO) ## Download and install ginkgo locally if necessary. |
| 39 | +$(GINKGO): $(TEST_BIN_DIR) |
| 40 | + $(call go-get-tool,$(TEST_BIN_DIR),$(GINKGO),github.com/onsi/ginkgo/v2/ginkgo@v2.21.0) |
| 41 | + |
| 42 | +.PHONY: envtest |
| 43 | +envtest: $(ENVTEST) ## Download and install setup-envtest locally if necessary. |
| 44 | +$(ENVTEST): $(TEST_BIN_DIR) |
| 45 | + $(call go-get-tool,$(TEST_BIN_DIR),$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest@v0.0.0-20240624150636-162a113134de) |
| 46 | + |
| 47 | +.PHONY: test |
| 48 | +test: $(TEST_RESULT_DIR) ginkgo envtest |
| 49 | + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" $(TEST_BIN_DIR)/ginkgo run --cover --coverprofile=multi-nicd-coverage --json-report multi-nicd-unittest-report.json ./... |
| 50 | + @../hack/json-report-to-markdown.sh multi-nicd-unittest-report "Unit Test" |
| 51 | + @rm multi-nicd-unittest-report.json |
| 52 | + @../hack/coverage-to-markdown.sh multi-nicd-coverage "Multi-NIC Daemon Unit Test Coverage" |
20 | 53 |
|
21 | 54 | build: test |
22 | 55 | @go build -o ../bin/daemon . |
|
0 commit comments