github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/hack/make/test-docker-py (about) 1 #!/usr/bin/env bash 2 set -e 3 4 source hack/make/.integration-test-helpers 5 6 # The commit or tag to use for testing 7 : "${DOCKER_PY_COMMIT:=6.1.3}" 8 9 # The version (and variant) of the python image to use for the tests; 10 # see https://github.com/Prakhar-Agarwal-byte/moby-py/blob/5.0.3/tests/Dockerfile#L1C5-L3 11 # 12 # TODO remove once https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3145 is merged. 13 : "${PYTHON_VERSION:=3.7-bullseye}" 14 15 # custom options to pass py.test 16 # 17 # This option can be used to temporarily skip flaky tests (using the `--deselect` 18 # flag) until they are fixed upstream. For example: 19 # --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_attach_no_stream 20 # TODO re-enable test_attach_no_stream after https://github.com/Prakhar-Agarwal-byte/moby-py/issues/2513 is resolved 21 # TODO re-enable test_run_container_reading_socket_ws. It's reported in https://github.com/Prakhar-Agarwal-byte/moby-py/issues/1478, and we're getting that error in our tests. 22 # TODO re-enable test_create_with_restart_policy after https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3165 is included in a release 23 # TODO re-enable test_api_error_parses_json after https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3165 is included in a release 24 # TODO re-enable test_connect_with_ipv6_address after we updated to a version of docker-py with https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3169 25 # TODO re-enable test_create_network_ipv6_enabled after we updated to a version of docker-py with https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3169 26 # TODO re-enable test_create_with_ipv6_address after we updated to a version of docker-py with https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3169 27 # TODO re-enable test_create_check_duplicate after we updated to a version of docker-py with https://github.com/Prakhar-Agarwal-byte/moby-py/pull/3170 28 : "${PY_TEST_OPTIONS:=--junitxml=${DEST}/junit-report.xml --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_attach_no_stream --deselect=tests/integration/api_container_test.py::AttachContainerTest::test_run_container_reading_socket_ws --deselect=tests/integration/api_container_test.py::CreateContainerTest::test_create_with_restart_policy --deselect=tests/integration/errors_test.py::ErrorsTest::test_api_error_parses_json --deselect=tests/integration/api_network_test.py::TestNetworks::test_connect_with_ipv6_address --deselect=tests/integration/api_network_test.py::TestNetworks::test_create_network_ipv6_enabled --deselect=tests/integration/api_network_test.py::TestNetworks::test_create_with_ipv6_address --deselect=tests/integration/api_network_test.py::TestNetworks::test_create_check_duplicate}" 29 ( 30 bundle .integration-daemon-start 31 32 docker_host_scheme=$(echo "${DOCKER_HOST}" | cut -d: -f1 -) 33 34 case "${docker_host_scheme}" in 35 unix) 36 # trim the tcp:// scheme, and bind-mount the docker socket into the container 37 run_opts="--mount type=bind,src=${DOCKER_HOST#unix://},dst=/var/run/docker.sock" 38 ;; 39 40 tcp) 41 # run container in host-mode networking so that it can connect to the 42 # daemon from the current networking namespace (e.g., to connect to localhost) 43 run_opts="--network=host -e DOCKER_HOST=${DOCKER_HOST}" 44 ;; 45 46 *) 47 echo "WARN: Skipping test-docker-py: connecting to docker daemon using ${docker_host_scheme} (${DOCKER_HOST}) not supported" 48 bundle .integration-daemon-stop 49 return 0 50 ;; 51 esac 52 53 docker_py_image="docker-sdk-python3:${DOCKER_PY_COMMIT}" 54 if ! docker image inspect "dockerPyImage" &> /dev/null; then 55 echo INFO: Building ${docker_py_image}... 56 ( 57 [ -n "${TESTDEBUG}" ] && set -x 58 [ -z "${TESTDEBUG}" ] && build_opts="--quiet" 59 [ -f /.dockerenv ] || build_opts="${build_opts} --network=host" 60 # shellcheck disable=SC2086 61 exec docker build ${build_opts} --build-arg PYTHON_VERSION="${PYTHON_VERSION}" -t "${docker_py_image}" -f tests/Dockerfile "https://github.com/Prakhar-Agarwal-byte/moby-py.git#${DOCKER_PY_COMMIT}" 62 ) 63 fi 64 65 echo INFO: Starting docker-py tests... 66 ( 67 [ -n "${TESTDEBUG}" ] && set -x 68 # shellcheck disable=SC2086,SC2140 69 exec docker run --rm ${run_opts} --mount type=bind,"src=${ABS_DEST}","dst=/src/${DEST}" "${docker_py_image}" pytest ${PY_TEST_OPTIONS} tests/integration 70 ) 71 bundle .integration-daemon-stop 72 ) &> >(tee -a "$DEST/test.log")