mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #!/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
 |