Integrate unit tests into hack/make.sh

This commit is contained in:
Solomon Hykes 2013-09-09 16:20:30 -07:00
parent e37dcd726f
commit b187cc40cd

View file

@ -18,6 +18,10 @@
# your checkout of the Docker repository.
#
# FIXME: break down bundles into sub-scripts
# FIXME: create all bundles in a single run for consistency.
# If the bundles directory already exists, fail or erase it.
set -e
# We're a nice, sexy, little shell script, and people might try to run us;
@ -39,6 +43,9 @@ then
PKGVERSION="$PKGVERSION-$(date +%Y%m%d%H%M%S)-$GITCOMMIT"
fi
# Use these flags when compiling the tests and final binary
LDFLAGS="-X main.GITCOMMIT $GITCOMMIT -X main.VERSION $VERSION -d -w"
PACKAGE_ARCHITECTURE="$(dpkg-architecture -qDEB_HOST_ARCH)"
PACKAGE_URL="http://www.docker.io/"
PACKAGE_MAINTAINER="docker@dotcloud.com"
@ -65,11 +72,34 @@ end script
# Each "bundle" is a different type of build artefact: static binary, Ubuntu
# package, etc.
# Run Docker's test suite, including sub-packages, and store their output as a bundle
bundle_test() {
mkdir -p bundles/$VERSION/test
{
date
for test_dir in $(find_test_dirs); do (
set -x
cd $test_dir
go test -v -ldflags "$LDFLAGS"
) done
} 2>&1 | tee bundles/$VERSION/test/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
}
# Build Docker as a static binary file
bundle_binary() {
mkdir -p bundles/$VERSION/binary
go build -o bundles/$VERSION/binary/docker-$VERSION \
-ldflags "-X main.GITCOMMIT $GITCOMMIT -X main.VERSION $VERSION -d -w" \
-ldflags "$LDFLAGS" \
./docker
}
@ -134,6 +164,7 @@ EOF
main() {
bundle_test
bundle_binary
bundle_ubuntu
cat <<EOF