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..6b15c376d 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ # Use of this source code is governed by a Apache license # that can be found in the LICENSE file. + # Produce CRDs that work back to Kubernetes 1.11 (no version conversion) CRD_OPTIONS ?= "crd:trivialVersions=true" @@ -137,11 +138,16 @@ 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 -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 +ENVTEST_ASSETS_DIR=$(shell pwd)/testbin +test: vet test-env ;$(info $(M)...Begin to run tests.) @ ## Run tests. + export KUBEBUILDER_ASSETS=$(shell pwd)/testbin/bin; 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 ./... +.PHONY: test-env +test-env: ;$(info $(M)...Begin to setup test env) @ ## Download unit test libraries e.g. kube-apiserver etcd. + @hack/setup-kubebuilder-env.sh + .PHONY: clean clean: ;$(info $(M)...Begin to clean.) @ ## Clean. -make -C ./pkg/version clean diff --git a/hack/setup-kubebuilder-env.sh b/hack/setup-kubebuilder-env.sh new file mode 100755 index 000000000..e089e71eb --- /dev/null +++ b/hack/setup-kubebuilder-env.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# 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" + +ENVTEST_ASSETS_DIR=$(pwd)/testbin +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}"