diff --git a/.gitignore b/.gitignore index fffd01e33..70dce1ef8 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ kustomize/network/etcd apiserver.local.config tmp/ kubesphere.yaml +testbin/ diff --git a/Makefile b/Makefile index 5385d3f53..0cb34889a 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,13 @@ # Use of this source code is governed by a Apache license # that can be found in the LICENSE file. +# Setting SHELL to bash allows bash commands to be executed by recipes. +# This is a requirement for 'setup-envtest.sh' in the test target. +# Options are set to exit when a recipe line exits non-zero or a piped command fails. +SHELL = /usr/bin/env bash -o pipefail +.SHELLFLAGS = -ec + + # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) CRD_OPTIONS ?= "crd:trivialVersions=true" @@ -137,8 +144,11 @@ helm-uninstall: ; $(info $(M)...Begin to helm-uninstall.) @ ## Helm-uninstall. kubectl delete -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/roles/ks-core/prepare/files/ks-init/role-templates.yaml # Run tests +ENVTEST_ASSETS_DIR=$(shell pwd)/testbin test: vet ;$(info $(M)...Begin to run tests.) @ ## Run tests. - export KUBEBUILDER_CONTROLPLANE_START_TIMEOUT=2m; go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt + mkdir -p ${ENVTEST_ASSETS_DIR} + 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.8.3/hack/setup-envtest.sh + source ${ENVTEST_ASSETS_DIR}/setup-envtest.sh; fetch_envtest_tools $(ENVTEST_ASSETS_DIR); setup_envtest_env $(ENVTEST_ASSETS_DIR); go test ./pkg/... ./cmd/... -covermode=atomic -coverprofile=coverage.txt cd staging/src/kubesphere.io/api ; GOFLAGS="" go test ./... cd staging/src/kubesphere.io/client-go ; GOFLAGS="" go test ./...