diff --git a/hack/make/.go-compile-test-dir b/hack/make/.go-compile-test-dir deleted file mode 100755 index 2cddaeeac7..0000000000 --- a/hack/make/.go-compile-test-dir +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -set -e - -# Compile phase run by parallel in test-unit. No support for coverpkg - -dir=$1 -in_file="$dir/$(basename "$dir").test" -out_file="$DEST/precompiled/$dir.test" -# we want to use binary_extension() here, but we can't because it's in main.sh and this file gets re-execed -if [ "$(go env GOOS)" = 'windows' ]; then - in_file+='.exe' - out_file+='.exe' -fi -testcover=() -if [ "$HAVE_GO_TEST_COVER" ]; then - # if our current go install has -cover, we want to use it :) - mkdir -p "$DEST/coverprofiles" - coverprofile="docker${dir#.}" - coverprofile="$DEST/coverprofiles/${coverprofile//\//-}" - testcover=( -cover -coverprofile "$coverprofile" ) # missing $coverpkg -fi -if [ "$BUILDFLAGS_FILE" ]; then - readarray -t BUILDFLAGS < "$BUILDFLAGS_FILE" -fi - -if [[ "$(go version)" =~ "gccgo" ]]; then - GCCGOFLAGS="-gccgoflags= -lpthread -ldl " -fi - -if ! ( - cd "$dir" - go test "${testcover[@]}" "$GCCGOFLAGS" -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS -c -); then - exit 1 -fi - -mkdir -p "$(dirname "$out_file")" -mv "$in_file" "$out_file" -echo "Precompiled: ${DOCKER_PKG}${dir#.}" diff --git a/hack/make/test-unit b/hack/make/test-unit index dae56de2ac..c70f6dd97c 100644 --- a/hack/make/test-unit +++ b/hack/make/test-unit @@ -1,12 +1,6 @@ #!/bin/bash set -e -: ${PARALLEL_JOBS:=$(nproc 2>/dev/null || echo 1)} # if nproc fails (usually because we don't have it), let's not parallelize by default - -RED=$'\033[31m' -GREEN=$'\033[32m' -TEXTRESET=$'\033[0m' # reset the foreground colour - # 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. @@ -14,73 +8,15 @@ TEXTRESET=$'\033[0m' # reset the foreground colour # TESTFLAGS='-test.run ^TestBuild$' ./hack/make.sh test-unit # bundle_test_unit() { - { - date - - # Run all the tests if no TESTDIRS were specified. - if [ -z "$TESTDIRS" ]; then - TESTDIRS=$(find_dirs '*_test.go') - fi - ( - export LDFLAGS - export TESTFLAGS - export HAVE_GO_TEST_COVER - - # some hack to export array variables - export BUILDFLAGS_FILE="$DEST/buildflags-file" - ( IFS=$'\n'; echo "${BUILDFLAGS[*]}" ) > "$BUILDFLAGS_FILE" - - if command -v parallel &> /dev/null; then - # accommodate parallel to be able to access variables - export SHELL="$BASH" - export HOME="$(mktemp -d)" - mkdir -p "$HOME/.parallel" - touch "$HOME/.parallel/ignored_vars" - - echo "$TESTDIRS" | parallel --jobs "$PARALLEL_JOBS" --env _ "${MAKEDIR}/.go-compile-test-dir" - rm -rf "$HOME" - else - # aww, no "parallel" available - fall back to boring - for test_dir in $TESTDIRS; do - "${MAKEDIR}/.go-compile-test-dir" "$test_dir" || true - # don't let one directory that fails to build tank _all_ our tests! - done - fi - rm -f "$BUILDFLAGS_FILE" - ) - echo "$TESTDIRS" | go_run_test_dir - } -} - -go_run_test_dir() { - TESTS_FAILED=() - while read dir; do - echo - echo '+ go test' $TESTFLAGS "${DOCKER_PKG}/${dir#./}" - precompiled="$ABS_DEST/precompiled/$dir.test$(binary_extension)" - if ! ( cd "$dir" && test_env "$precompiled" $TESTFLAGS ); then - TESTS_FAILED+=("$dir") - echo - echo "${RED}Tests failed: $dir${TEXTRESET}" - sleep 1 # give it a second, so observers watching can take note - fi - done - - echo - echo - echo - - # 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 "${RED}Test failures in: ${TESTS_FAILED[@]}${TEXTRESET}" - echo - false - else - echo "${GREEN}Test success${TEXTRESET}" - echo - true - fi + date + pkg_list=$(go list -e \ + -f '{{if ne .Name "github.com/docker/docker"}} + {{.ImportPath}} + {{end}}' \ + "${BUILDFLAGS[@]}" ./... \ + | grep -v github.com/docker/docker/vendor \ + | grep -v github.com/docker/docker/integration-cli) + go test -cover $GCCGOFLAGS -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS $pkg_list } bundle_test_unit 2>&1 | tee -a "$DEST/test.log"