Files
moby/hack/make/test-docker-py
Rajnish Kumar 927f6bae16 test/docker-py: re-enable test_run_with_networking_config
The test was skipped because Container.run() returned stale container
state after 7bc56c5365 changed when the
short ID was added to Aliases. That behaviour is now stable and the
test passes against the current docker-py commit (059d371).

Signed-off-by: Rajnish Kumar <rajnishkumar448@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-06-05 16:33:45 +02:00

80 lines
3.6 KiB
Bash

#!/usr/bin/env bash
set -e
source hack/make/.integration-test-helpers
# The commit or tag to use for testing
: "${DOCKER_PY_COMMIT:=059d371b576b9f324a16753e2a775b1f7731b6d0}" # master (v7.2.0-dev)
# custom options to pass py.test
#
# This option can be used to temporarily skip flaky tests (using the `--deselect`
# flag) until they are fixed upstream. For example:
# --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_attach_no_stream
: "${PY_TEST_OPTIONS:=--junitxml=${DEST}/junit-report.xml}"
# build --squash is not supported with containerd integration.
if [ -z "$TEST_INTEGRATION_USE_GRAPHDRIVER" ]; then
PY_TEST_OPTIONS="$PY_TEST_OPTIONS --deselect=tests/integration/api_build_test.py::BuildTest::test_build_squash"
fi
# TODO re-enable test_attach_no_stream after https://github.com/docker/docker-py/issues/2513 is resolved
PY_TEST_OPTIONS="$PY_TEST_OPTIONS --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_attach_no_stream"
# TODO re-enable test_run_container_reading_socket_ws. It's reported in https://github.com/docker/docker-py/issues/1478, and we're getting that error in our tests.
PY_TEST_OPTIONS="$PY_TEST_OPTIONS --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_run_container_reading_socket_ws"
# Legacy links are deprecated since a long time, and starting with v29.0, the Engine won't set legacy links env vars
# automatically in linking containers. Thus, this test is expected to fail — skip it. See https://github.com/moby/moby/pull/50719
PY_TEST_OPTIONS="${PY_TEST_OPTIONS} --deselect=tests/integration/api_container_test.py::CreateContainerTest::test_create_with_links"
# The NetworkSettings.MacAddress field has been deprecated since Docker 1.9, and starting with v29.0, the Engine won't
# include it in API respoonses. Thus, this test is expected to fail — skip it.
# See https://github.com/moby/moby/pull/50846 and https://github.com/moby/moby/pull/50957
PY_TEST_OPTIONS="${PY_TEST_OPTIONS} --deselect=tests/integration/api_container_test.py::CreateContainerTest::test_create_with_mac_address"
(
bundle .integration-daemon-start
docker_host_scheme=$(echo "${DOCKER_HOST}" | cut -d: -f1 -)
case "${docker_host_scheme}" in
unix)
# trim the tcp:// scheme, and bind-mount the docker socket into the container
run_opts="--mount type=bind,src=${DOCKER_HOST#unix://},dst=/var/run/docker.sock"
;;
tcp)
# run container in host-mode networking so that it can connect to the
# daemon from the current networking namespace (e.g., to connect to localhost)
run_opts="--network=host -e DOCKER_HOST=${DOCKER_HOST}"
;;
*)
echo "WARN: Skipping test-docker-py: connecting to docker daemon using ${docker_host_scheme} (${DOCKER_HOST}) not supported"
bundle .integration-daemon-stop
return 0
;;
esac
docker_py_image="docker-sdk-python3:${DOCKER_PY_COMMIT}"
if ! docker image inspect "dockerPyImage" &> /dev/null; then
echo INFO: Building ${docker_py_image}...
(
[ -n "${TESTDEBUG}" ] && set -x
[ -z "${TESTDEBUG}" ] && build_opts="--quiet"
[ -f /.dockerenv ] || build_opts="${build_opts} --network=host"
# shellcheck disable=SC2086
exec docker build ${build_opts} -t "${docker_py_image}" -f tests/Dockerfile "https://github.com/docker/docker-py.git#${DOCKER_PY_COMMIT}"
)
fi
echo INFO: Starting docker-py tests...
(
[ -n "${TESTDEBUG}" ] && set -x
# shellcheck disable=SC2086,SC2140
exec docker run --rm ${run_opts} --mount type=bind,"src=${ABS_DEST}","dst=/src/${DEST}" "${docker_py_image}" pytest ${PY_TEST_OPTIONS} tests/integration
)
bundle .integration-daemon-stop
) &> >(tee -a "$DEST/test.log")