@@ -129,8 +129,9 @@ vet: ## Run go vet against code.
129129 go vet ./...
130130
131131.PHONY : test
132- test : lint manifests generate fmt vet lint helm-lint envtest # # Run tests.
133- KUBEBUILDER_ASSETS=" $( shell $( ENVTEST) use $( ENVTEST_K8S_VERSION) -p path) " go test ./... -coverprofile cover.out
132+ GINKGO_ARGS ?= --progress --fail-on-pending --keep-going --cover --coverprofile=cover.profile --race --trace --json-report=report.json --timeout=3m
133+ test : lint manifests generate fmt vet lint envtest ginkgo # # Run tests.
134+ KUBEBUILDER_ASSETS=" $( shell $( ENVTEST) use $( ENVTEST_K8S_VERSION) -p path) " $(GINKGO ) run $(GINKGO_ARGS ) ./...
134135
135136.PHONY : test-e2e
136137test-e2e : kuttl # # Run e2e tests. Requires cluster w/ Scribe already installed
@@ -194,32 +195,6 @@ $(CONTROLLER_GEN): $(LOCALBIN)
194195 GOBIN=$(LOCALBIN ) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION )
195196 @ echo " ✅ Done"
196197
197- .PHONY : kustomize
198- KUSTOMIZE = $(LOCALBIN ) /kustomize
199- kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary.
200- $(KUSTOMIZE ) : $(LOCALBIN )
201- @ echo " 📥 Downloading kustomize"
202- GOBIN=$(LOCALBIN ) go install sigs.k8s.io/kustomize/kustomize/$(KUSTOMIZE_MAJOR ) @$(KUSTOMIZE_VERSION )
203- @ echo " ✅ Done"
204-
205- .PHONY : helm
206- HELM := $(LOCALBIN ) /helm
207- HELM_URL := https://get.helm.sh/helm-$(HELM_VERSION ) -$(OS ) -$(ARCH ) .tar.gz
208- helm : $(HELM )
209- $(HELM ) : $(LOCALBIN )
210- @ echo " 📥 Downloading helm"
211- curl -sSL " $( HELM_URL) " | tar xzf - -C $(LOCALBIN ) --strip-components=1 --wildcards ' */helm'
212- @ echo " ✅ Done"
213-
214-
215- .PHONY : golangci-lint
216- GOLANGCILINT := $(LOCALBIN ) /golangci-lint
217- GOLANGCI_URL := https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh
218- golangci-lint : $(GOLANGCILINT ) # # Download golangci-lint
219- $(GOLANGCILINT ) : $(LOCALBIN )
220- @ echo " 📥 Downloading helm"
221- curl -sSfL $(GOLANGCI_URL ) | sh -s -- -b $(LOCALBIN ) $(GOLANGCI_VERSION )
222- @ echo " ✅ Done"
223198
224199.PHONY : envtest
225200ENVTEST = $(LOCALBIN ) /setup-envtest
@@ -297,18 +272,76 @@ catalog-build: opm ## Build a catalog image.
297272catalog-push : # # Push a catalog image.
298273 $(MAKE ) docker-push IMG=$(CATALOG_IMG )
299274
275+
276+ # #@ Download Utilities
277+
300278# download-tool will curl any file $2 and install it to $1.
301279define download-tool
302280@[ -f $(1 ) ] || { \
303281set -e ;\
304- echo "Downloading $(2 ) " ;\
282+ echo "📥 Downloading $(2 ) " ;\
305283curl -sSLo "$(1 ) " "$(2 ) " ;\
306284chmod a+x "$(1 ) " ;\
285+ echo "✅ Done" ;\
286+ }
287+ endef
288+
289+ # install-go-tool will download any $2 URL and install to $1
290+ define install-go-tool
291+ @[ -f $(1 ) ] || { \
292+ set -e ;\
293+ echo "📥 Downloading $(2 ) " ;\
294+ GOBIN=$(1 ) go install $(2 ) ;\
295+ echo "✅ Done" ;\
307296}
308297endef
309298
299+ # install-go-tool will download any $2 URL and install to $1
300+ define install-go-tool-mod
301+ @[ -f $(1 ) ] || { \
302+ set -e ;\
303+ echo "📥 Downloading $(2 ) " ;\
304+ GOBIN=$(1 ) go install -mod=mod $(2 ) ;\
305+ echo "✅ Done" ;\
306+ }
307+ endef
308+
309+
310+
310311.PHONY : kuttl
311- KUTTL := $(PROJECT_DIR ) /bin /kuttl
312+ KUTTL := $(LOCALBIN ) /kuttl
312313KUTTL_URL := https://github.com/kudobuilder/kuttl/releases/download/v$(KUTTL_VERSION ) /kubectl-kuttl_$(KUTTL_VERSION ) _linux_x86_64
313314kuttl : # # Download kuttl
314315 $(call download-tool,$(KUTTL ) ,$(KUTTL_URL ) )
316+
317+ .PHONY : ginkgo
318+ GINKGO := $(LOCALBIN ) /ginkgo
319+ GINKGO_URL := github.com/onsi/ginkgo/v2/ginkgo
320+ ginkgo : $(GINKGO ) # # Install ginkgo
321+ $(GINKGO ) : $(LOCALBIN )
322+ $(call install-go-tool-mod,$(LOCALBIN ) ,$(GINKGO_URL ) )
323+
324+
325+ .PHONY : kustomize
326+ KUSTOMIZE = $(LOCALBIN ) /kustomize
327+ KUSTOMIZE_URL := sigs.k8s.io/kustomize/kustomize/$(KUSTOMIZE_MAJOR ) @$(KUSTOMIZE_VERSION )
328+ kustomize : $(KUSTOMIZE ) # # Download kustomize locally if necessary.
329+ $(KUSTOMIZE ) : $(LOCALBIN )
330+ $(call install-go-tool,$(LOCALBIN ) ,$(KUSTOMIZE_URL ) )
331+
332+ .PHONY : helm
333+ HELM := $(LOCALBIN ) /helm
334+ HELM_URL := https://get.helm.sh/helm-$(HELM_VERSION ) -$(OS ) -$(ARCH ) .tar.gz
335+ helm : $(HELM ) # # Install helm
336+ $(HELM ) : $(LOCALBIN )
337+ $(call download-tool,$(HELM ) ,$(HELM_URL ) )
338+
339+
340+ .PHONY : golangci-lint
341+ GOLANGCILINT := $(LOCALBIN ) /golangci-lint
342+ GOLANGCI_URL := https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh
343+ golangci-lint : $(GOLANGCILINT ) # # Download golangci-lint
344+ $(GOLANGCILINT ) : $(LOCALBIN )
345+ @ echo " 📥 Downloading helm"
346+ curl -sSfL $(GOLANGCI_URL ) | sh -s -- -b $(LOCALBIN ) $(GOLANGCI_VERSION )
347+ @ echo " ✅ Done"
0 commit comments