ceph-csi/scripts/test-go.sh
Niels de Vos a262063819 tests: use go modules from ./vendor for running tests
Running tests without `-mod=vendor` causes the tests to download the
dependencies if these are not available in the standard go-module
directories (parent directories of the project). All dependencies are
already included in the ./vendor directory, so passing `-mod=vendor`
prevents downloading the dependencies and speeds up testing a lot.

Signed-off-by: Niels de Vos <ndevos@redhat.com>
2020-03-24 12:38:02 +00:00

43 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
GOPACKAGES="$(go list -mod=vendor ./... | grep -v -e vendor -e e2e)"
COVERFILE="${GO_COVER_DIR}/profile.cov"
# no special options, exec to go test w/ all pkgs
if [[ ${TEST_EXITFIRST} != "yes" && -z ${TEST_COVERAGE} ]]; then
# shellcheck disable=SC2086
exec go test -mod=vendor -v ${GOPACKAGES}
fi
# our options are set so we need to handle each go package one
# at at time
if [[ ${TEST_COVERAGE} ]]; then
GOTESTOPTS="-covermode=count -coverprofile=cover.out"
echo "mode: count" >"${COVERFILE}"
fi
failed=0
for gopackage in ${GOPACKAGES}; do
echo "--- testing: ${gopackage} ---"
# shellcheck disable=SC2086
go test -mod=vendor -v ${GOTESTOPTS} "${gopackage}" || ((failed += 1))
if [[ -f cover.out ]]; then
# Append to coverfile
grep -v "^mode: count" cover.out >>"${COVERFILE}"
fi
if [[ ${TEST_COVERAGE} = "stdout" && -f cover.out ]]; then
go tool cover -func=cover.out
fi
if [[ ${TEST_COVERAGE} = "html" && -f cover.out ]]; then
mkdir -p coverage
fn="coverage/${gopackage////-}.html"
echo " * generating coverage html: ${fn}"
go tool cover -html=cover.out -o "${fn}"
fi
rm -f cover.out
if [[ ${failed} -ne 0 && ${TEST_EXITFIRST} = "yes" ]]; then
exit ${failed}
fi
done
exit ${failed}