55 lines
1.4 KiB
Text
55 lines
1.4 KiB
Text
|
#!/bin/bash
|
||
|
set -e
|
||
|
|
||
|
# Run the test suite, including sub-packages, and store their output as a bundle
|
||
|
# If $TESTFLAGS is set in the environment, it is passed as extra arguments to 'go test'.
|
||
|
# You can use this to select certain tests to run, eg.
|
||
|
#
|
||
|
# TESTFLAGS='-test.run ^TestBuild$' ./hack/make.sh test-unit
|
||
|
#
|
||
|
bundle_test_list() {
|
||
|
go list -e -f '{{range .Imports}}{{.}}{{"\n"}}{{end}}' ./cmd/oci-storage "$@" |\
|
||
|
grep github.com/containers/storage |\
|
||
|
grep -v github.com/containers/storage/vendor |\
|
||
|
grep -v github.com/containers/storage/integration-cli
|
||
|
}
|
||
|
bundle_test_unit() {
|
||
|
TESTFLAGS+=" -test.timeout=${TIMEOUT}"
|
||
|
INCBUILD="-i"
|
||
|
count=0
|
||
|
for flag in "${BUILDFLAGS[@]}"; do
|
||
|
if [ "${flag}" == ${INCBUILD} ]; then
|
||
|
unset BUILDFLAGS[${count}]
|
||
|
break
|
||
|
fi
|
||
|
count=$[ ${count} + 1 ]
|
||
|
done
|
||
|
|
||
|
date
|
||
|
if [ -z "$TESTDIRS" ]; then
|
||
|
TEST_PATH=./...
|
||
|
else
|
||
|
TEST_PATH=./${TESTDIRS}
|
||
|
fi
|
||
|
pkg_list=$(
|
||
|
deps=`bundle_test_list ./cmd/oci-storage`
|
||
|
newdeps=
|
||
|
while test "$deps" != "$newdeps" ; do
|
||
|
deps=${newdeps:-`bundle_test_list ./cmd/oci-storage`}
|
||
|
newdeps=`for dep in $deps ; do
|
||
|
bundle_test_list "$dep"
|
||
|
done | sort -u`
|
||
|
done
|
||
|
echo $deps
|
||
|
)
|
||
|
go test $COVER $GCCGOFLAGS -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" ${BUILDTAGS:+-tags "${BUILDTAGS}"} $TESTFLAGS $pkg_list
|
||
|
}
|
||
|
|
||
|
|
||
|
if [[ "$(go version)" == *"gccgo"* ]]; then
|
||
|
GCCGOFLAGS=-gccgoflags="-lpthread"
|
||
|
else
|
||
|
COVER=-cover
|
||
|
fi
|
||
|
bundle_test_unit 2>&1 | tee -a "$DEST/test.log"
|