#!/usr/bin/env 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, e.g. # # 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 source "${MAKEDIR}/.go-autogen" if [ "$(go env GOHOSTOS)" = 'solaris' ]; then 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/daemon/graphdriver \ | grep -v github.com/docker/docker/man \ | grep -v github.com/docker/docker/integration-cli \ | grep -v github.com/docker/docker/daemon/cluster) else 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 \ | grep -v github.com/docker/docker/daemon/cluster) fi go test -cover -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS $pkg_list go test -cover -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS github.com/docker/docker/pkg/term -test.root } bundle_test_unit 2>&1 | tee -a "$DEST/test.log"