#!/usr/bin/env bash # # Copyright 2019 The Kubernetes Authors. # SPDX-License-Identifier: Apache-2.0 # Run this script with no arguments from the repo root # to test all the plugins. # Want this to keep going even if one test fails, # to see how many pass, so do not errexit. set -o nounset # set -o errexit set -o pipefail rcAccumulator=0 function onLinuxAndNotOnTravis { [[ ("linux" == "$(go env GOOS)") && (-z ${TRAVIS+x}) ]] && return false } function runTest { local file=$1 local code=0 if grep -q "// +build notravis" "$file"; then if onLinuxAndNotOnTravis; then go test -v -tags=notravis $file code=$? else # TODO: make work for non-linux echo "Not on linux or on travis; skipping $file" fi else go test -v $file code=$? fi rcAccumulator=$((rcAccumulator || $code)) if [ $code -ne 0 ]; then echo "Failure in $d" fi } function scanDir { pushd $1 >& /dev/null echo "Testing $1" for t in $(find . -name '*_test.go'); do runTest $t done popd >& /dev/null } if onLinuxAndNotOnTravis; then # Some of these tests have special deps. make $(go env GOPATH)/bin/helm make $(go env GOPATH)/bin/kubeval fi for goMod in $(find ./plugin -name 'go.mod'); do d=$(dirname "${goMod}") if [[ "$d" == "./plugin/someteam.example.com/v1/gogetter" ]]; then echo "Skipping broken $d" else scanDir $d fi done if [ $rcAccumulator -ne 0 ]; then echo "FAILURE; exit code $rcAccumulator" exit 1 fi