Files
mgmt/test/test-gotest.sh
James Shubin 4c93bc3599 test: Add doc note about skipping docker tests
This is useful if you don't have docker running, since otherwise it
causes all the tests to fail.
2018-12-03 23:55:20 -05:00

56 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
echo running "$0" "$@"
#ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )" # dir!
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()
{
$XSUDO $@ || failures=$( [ -n "$failures" ] && echo "$failures\\n$@" || echo "$@" )
}
# NOTE: you can run `go test` with the -tags flag to skip certain tests, eg:
# go test -tags nodocker github.com/purpleidea/mgmt/engine/resources -v
base=$(go list .)
if [[ "$@" = *"--integration"* ]]; then
if [[ "$@" = *"--race"* ]]; then
GOCACHE=off run-test go test -race "${base}/integration" -v ${XTAGS}
else
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
GOCACHE=off run-test go test -race "$pkg" ${XTAGS}
else
GOCACHE=off run-test go test "$pkg" ${XTAGS}
fi
done
fi
if [[ -n "$failures" ]]; then
echo 'FAIL'
echo 'The following `go test` runs have failed:'
echo -e "$failures"
echo
exit 1
fi
echo 'PASS'