#!/bin/bash set -e # Run Docker's 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_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=$(go list -e \ -f '{{if ne .Name "github.com/docker/docker"}} {{.ImportPath}} {{end}}' \ "${BUILDFLAGS[@]}" $TEST_PATH \ | grep github.com/docker/docker \ | grep -v github.com/docker/docker/vendor \ | grep -v github.com/docker/docker/man \ | grep -v github.com/docker/docker/integration-cli) go test $COVER $GCCGOFLAGS -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $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"