mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
4d0275c819
Adds a new bundle `verify-integration-tests` which pre-compiles a test binary for the integration tests. This makes sure that the integration tests will actually compile before doing other tasks which take much longer, such as building dockerd and loading test fixtures. When it comes time to actually run the tests, the pre-compiled binary will be used so it doesn't have to compile the tests a 2nd time. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
77 lines
2 KiB
Bash
77 lines
2 KiB
Bash
#!/bin/bash
|
|
|
|
: ${TEST_REPEAT:=0}
|
|
|
|
bundle_test_integration_cli() {
|
|
TESTFLAGS="$TESTFLAGS -check.v -check.timeout=${TIMEOUT} -test.timeout=360m"
|
|
go_test_dir integration-cli $DOCKER_INTEGRATION_TESTS_VERIFIED
|
|
}
|
|
|
|
# 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='-test.run ^TestBuild$' ./hack/make.sh test-unit
|
|
#
|
|
# For integration-cli test, we use [gocheck](https://labix.org/gocheck), if you want
|
|
# to run certain tests on your local host, you should run with command:
|
|
#
|
|
# TESTFLAGS='-check.f DockerSuite.TestBuild*' ./hack/make.sh binary test-integration-cli
|
|
#
|
|
go_test_dir() {
|
|
dir=$1
|
|
precompiled=$2
|
|
testbinary="$DEST/test.main"
|
|
testcover=()
|
|
testcoverprofile=()
|
|
(
|
|
mkdir -p "$DEST/coverprofiles"
|
|
export DEST="$ABS_DEST" # in a subshell this is safe -- our integration-cli tests need DEST, and "cd" screws it up
|
|
if [ -z $precompiled ]; then
|
|
ensure_test_dir $1 $testbinary
|
|
fi
|
|
cd "$dir"
|
|
i=0
|
|
while ((++i)); do
|
|
test_env "$testbinary" $TESTFLAGS
|
|
if [ $i -gt "$TEST_REPEAT" ]; then
|
|
break
|
|
fi
|
|
echo "Repeating test ($i)"
|
|
done
|
|
)
|
|
}
|
|
|
|
ensure_test_dir() {
|
|
(
|
|
# make sure a test dir will compile
|
|
dir="$1"
|
|
out="$2"
|
|
echo Building test dir: "$dir"
|
|
set -xe
|
|
cd "$dir"
|
|
go test -c -o "$out" -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}"
|
|
)
|
|
}
|
|
|
|
test_env() {
|
|
(
|
|
set -xe
|
|
# use "env -i" to tightly control the environment variables that bleed into the tests
|
|
env -i \
|
|
DEST="$DEST" \
|
|
DOCKER_TLS_VERIFY="$DOCKER_TEST_TLS_VERIFY" \
|
|
DOCKER_CERT_PATH="$DOCKER_TEST_CERT_PATH" \
|
|
DOCKER_ENGINE_GOARCH="$DOCKER_ENGINE_GOARCH" \
|
|
DOCKER_GRAPHDRIVER="$DOCKER_GRAPHDRIVER" \
|
|
DOCKER_USERLANDPROXY="$DOCKER_USERLANDPROXY" \
|
|
DOCKER_HOST="$DOCKER_HOST" \
|
|
DOCKER_REMAP_ROOT="$DOCKER_REMAP_ROOT" \
|
|
DOCKER_REMOTE_DAEMON="$DOCKER_REMOTE_DAEMON" \
|
|
GOPATH="$GOPATH" \
|
|
GOTRACEBACK=all \
|
|
HOME="$ABS_DEST/fake-HOME" \
|
|
PATH="$PATH" \
|
|
TEMP="$TEMP" \
|
|
"$@"
|
|
)
|
|
}
|