Merge pull request #1750 from monopole/invokePluginUnitTests

Invoke plugin unit tests in presubmit.
This commit is contained in:
Jeff Regan
2019-11-07 17:29:15 -08:00
committed by GitHub
4 changed files with 88 additions and 28 deletions

74
hack/runPluginUnitTests.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
# Copyright 2019 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0
# TODO: get rid of this script, make individual targets
# in the makefile.
# 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