moby/hack/make/test-integration
Djordje Lukic 9e5b86f647
Use process substitution to redirect to tee
In some cases, when the daemon launched by a test panics and quits, the
cleanup code would end with an error when trying to kill it by its pid.
In those cases the whole suite will end up waiting for the daemon that
we start in .integration-daemon-start to finish and we end up waiting 2
hours for the CI to cancel after a timeout.

Using process substitution makes the integration tests quit.

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
(cherry picked from commit 3d8b8dc09a)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-01-24 09:57:27 +01:00

27 lines
583 B
Bash
Executable file

#!/usr/bin/env bash
set -e -o pipefail
source hack/make/.integration-test-helpers
if [ ! -z "${TEST_SKIP_INTEGRATION}" ] && [ ! -z "${TEST_SKIP_INTEGRATION_CLI}" ]; then
echo integration and integration-cli skipped according to env vars
exit 0
fi
(
env
build_test_suite_binaries
bundle .integration-daemon-start
testexit=0
(repeat run_test_integration) || testexit=$?
# Always run cleanup, even if the subshell fails
bundle .integration-daemon-stop
cleanup_test_suite_binaries
echo exiting test-integration
set -x
exit ${testexit}
) &> >(tee -a "$DEST/test.log")