#!/bin/sh DEST=$1 INIT=$DEST/../dynbinary/dockerinit-$VERSION set -e if [ ! -x "$INIT" ]; then echo >&2 'error: dynbinary must be run before dyntest' false fi # 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='-run ^TestBuild$' ./hack/make.sh test # bundle_test() { { date for test_dir in $(find_test_dirs); do ( set -x cd $test_dir # Install packages that are dependencies of the tests. # Note: Does not run the tests. go test -i -ldflags "$LDFLAGS" $BUILDFLAGS # Run the tests with the optional $TESTFLAGS. export TEST_DOCKERINIT_PATH=$DEST/../dynbinary/dockerinit-$VERSION go test -v -ldflags "$LDFLAGS -X github.com/dotcloud/docker/utils.INITSHA1 \"$DOCKER_INITSHA1\"" $BUILDFLAGS $TESTFLAGS ) done } 2>&1 | tee $DEST/test.log } # This helper function walks the current directory looking for directories # holding Go test files, and prints their paths on standard output, one per # line. find_test_dirs() { find . -name '*_test.go' | grep -v '^./vendor' | { while read f; do dirname $f; done; } | sort -u } bundle_test