test: Split travis tests into three blocks

Our tests were taking near 50 minutes which kills them. This also makes
it easier to spot small issues faster.
This commit is contained in:
James Shubin
2019-02-14 18:24:30 -05:00
parent 16d7c6a933
commit ee56155ec4
2 changed files with 50 additions and 31 deletions

55
test.sh
View File

@@ -14,6 +14,15 @@ testsuite="$1"
# print environment when running all testsuites
test -z "$testsuite" && (echo "ENV:"; env; echo; )
# make it easy to split test into blocks
label-block() {
if $(env | grep -q -e '^TEST_BLOCK='"$1"'$') || $(! env | grep -q -e '^TEST_BLOCK=') || $(env | grep -q -e '^TEST_BLOCK=$'); then
return 0
else
return 1 # not my block
fi
}
# run a test and record failures
function run-testsuite()
{
@@ -43,27 +52,37 @@ function skip-testsuite()
# used at the end to tell if everything went fine
failures=''
run-testsuite ./test/test-vet.sh
run-testsuite ./test/test-misc.sh
run-testsuite ./test/test-gofmt.sh
run-testsuite ./test/test-yamlfmt.sh
run-testsuite ./test/test-bashfmt.sh
run-testsuite ./test/test-headerfmt.sh
run-testsuite ./test/test-markdownlint.sh
run-testsuite ./test/test-commit-message.sh
run-testsuite ./test/test-govet.sh
run-testsuite ./test/test-examples.sh
run-testsuite ./test/test-gotest.sh
if label-block "basic"; then
run-testsuite ./test/test-vet.sh
run-testsuite ./test/test-misc.sh
run-testsuite ./test/test-gofmt.sh
run-testsuite ./test/test-yamlfmt.sh
run-testsuite ./test/test-bashfmt.sh
run-testsuite ./test/test-headerfmt.sh
run-testsuite ./test/test-markdownlint.sh
run-testsuite ./test/test-commit-message.sh
run-testsuite ./test/test-govet.sh
run-testsuite ./test/test-examples.sh
run-testsuite ./test/test-gotest.sh
run-testsuite ./test/test-gometalinter.sh
run-testsuite ./test/test-golint.sh # test last, because this test is somewhat arbitrary
# FIXME: this now fails everywhere :(
skip-testsuite ./test/test-reproducible.sh
fi
# skipping: https://github.com/purpleidea/mgmt/issues/327
# run-test ./test/test-crossbuild.sh
# do these longer tests only when running on ci
if env | grep -q -e '^TRAVIS=true$' -e '^JENKINS_URL=' -e '^BUILD_TAG=jenkins'; then
run-testsuite ./test/test-shell.sh
run-testsuite ./test/test-gotest.sh --race
run-testsuite ./test/test-integration.sh
run-testsuite ./test/test-integration.sh --race
if label-block "shell"; then
run-testsuite ./test/test-shell.sh
fi
if label-block "race"; then
run-testsuite ./test/test-gotest.sh --race
run-testsuite ./test/test-integration.sh --race
fi
# XXX: fix and enable these on travis (sudo: go: command not found)
#run-testsuite ./test/test-gotest.sh --root
@@ -82,10 +101,6 @@ else
REASON="CI server only test" skip-testsuite ./test/test-integration.sh --root --race
fi
run-testsuite ./test/test-gometalinter.sh
# FIXME: this now fails everywhere :(
skip-testsuite ./test/test-reproducible.sh
# run omv tests on jenkins physical hosts only
if env | grep -q -e '^JENKINS_URL=' -e '^BUILD_TAG=jenkins'; then
@@ -96,8 +111,6 @@ fi
REASON="https://github.com/purpleidea/mgmt/issues/327" skip-testsuite ./test/test-crossbuild.sh
run-testsuite ./test/test-golint.sh # test last, because this test is somewhat arbitrary
if [[ -n "$failures" ]]; then
echo 'FAIL'
echo 'The following tests have failed:'