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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user