test: Improve golang tests with root and disabling cache

This allows golang tests to be marked as root or !root using build tags.
The matching tests are then run as expected using our test runner.

This also disables test caching which is unfriendly to repeated test
running and is an absurd golang default to add.

Lastly this hooks up the testing verbose flag to tests that accept a
debug variable.

These tests aren't enabled on travis yet because of how it installs
golang.
This commit is contained in:
James Shubin
2018-05-09 12:48:16 -04:00
parent 3ced981d28
commit 22c0ff3cf5
37 changed files with 133 additions and 5 deletions

View File

@@ -7,26 +7,38 @@ ROOT=$(dirname "${BASH_SOURCE}")/..
cd "${ROOT}"
. test/util.sh
# if we want to run this test as root, use build tag -root to ask each test...
XSUDO=''
XTAGS=''
if [[ "$@" = *"--root"* ]]; then
if ! timeout 1s sudo -A true; then
echo "sudo disabled: can't run as root"
exit 1
fi
XSUDO='sudo -E'
XTAGS='-tags root'
fi
failures=''
function run-test()
{
$@ || failures=$( [ -n "$failures" ] && echo "$failures\\n$@" || echo "$@" )
$XSUDO $@ || failures=$( [ -n "$failures" ] && echo "$failures\\n$@" || echo "$@" )
}
base=$(go list .)
if [[ "$@" = *"--integration"* ]]; then
if [[ "$@" = *"--race"* ]]; then
run-test go test -race "${base}/integration" -v
GOCACHE=off run-test go test -race "${base}/integration" -v ${XTAGS}
else
run-test go test "${base}/integration" -v
GOCACHE=off run-test go test "${base}/integration" -v ${XTAGS}
fi
else
for pkg in `go list -e ./... | grep -v "^${base}/vendor/" | grep -v "^${base}/examples/" | grep -v "^${base}/test/" | grep -v "^${base}/old" | grep -v "^${base}/old/" | grep -v "^${base}/tmp" | grep -v "^${base}/tmp/" | grep -v "^${base}/integration"`; do
echo -e "\ttesting: $pkg"
if [[ "$@" = *"--race"* ]]; then
run-test go test -race "$pkg"
GOCACHE=off run-test go test -race "$pkg" ${XTAGS}
else
run-test go test "$pkg"
GOCACHE=off run-test go test "$pkg" ${XTAGS}
fi
done
fi