#!/bin/bash

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
		
		TESTS_FAILED=()
		for test_dir in $(find_test_dirs); do
			echo
			
			if ! (
				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 -ldflags "$LDFLAGS -X github.com/dotcloud/docker/utils.INITSHA1 \"$DOCKER_INITSHA1\"" $BUILDFLAGS $TESTFLAGS
			); then
				TESTS_FAILED+=("$test_dir")
				sleep 1 # give it a second, so observers watching can take note
			fi
		done
		
		# if some tests fail, we want the bundlescript to fail, but we want to
		# try running ALL the tests first, hence TESTS_FAILED
		if [ "${#TESTS_FAILED[@]}" -gt 0 ]; then
			echo
			echo "Test failures in: ${TESTS_FAILED[@]}"
			false
		fi
	} 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
