From 999f02b5980b45754fe1e719f5b82ac6b375de54 Mon Sep 17 00:00:00 2001 From: Adam Hill Date: Sun, 5 Aug 2018 17:58:41 -0500 Subject: [PATCH] start of fixing race condition by not having test+s6 both run /start.sh Signed-off-by: Adam Hill --- test/conftest.py | 13 +++++++++---- test/test_start.py | 11 ++--------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/test/conftest.py b/test/conftest.py index 897e1ec..287e04c 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -5,11 +5,11 @@ check_output = testinfra.get_backend( "local://" ).get_module("Command").check_output -def DockerGeneric(request, args, image, cmd): +def DockerGeneric(request, args, image, cmd, entrypoint=''): assert 'docker' in check_output('id'), "Are you in the docker group?" if 'pihole' in image: args += " --dns 127.0.0.1 -v /dev/null:/etc/pihole/adlists.default -e PYTEST=\"True\"" - docker_run = "docker run -d {} {} {}".format(args, image, cmd) + docker_run = "docker run -d {args} {entry} {image} {cmd}".format(args, image, cmd) print docker_run docker_id = check_output(docker_run) @@ -37,10 +37,11 @@ def DockerGeneric(request, args, image, cmd): docker_container.run = funcType(run_bash, docker_container, testinfra.backend.docker.DockerBackend) return docker_container + @pytest.fixture -def Docker(request, args, image, cmd): +def Docker(request, args, image, cmd, entrypoint): ''' One-off Docker container run ''' - return DockerGeneric(request, args, image, cmd) + return DockerGeneric(request, args, image, cmd, entrypoint) @pytest.fixture(scope='module') def DockerPersist(request, persist_args, persist_image, persist_cmd, Dig): @@ -51,6 +52,10 @@ def DockerPersist(request, persist_args, persist_image, persist_cmd, Dig): persistent_container.dig = Dig(persistent_container.id) return persistent_container +@pytest.fixture +def entrypoint(): + return '' + @pytest.fixture() def args(request): return '-e ServerIP="127.0.0.1" -e ServerIPv6="::1"' diff --git a/test/test_start.py b/test/test_start.py index a5ef6a0..fa4ae97 100644 --- a/test/test_start.py +++ b/test/test_start.py @@ -4,15 +4,7 @@ import time ''' Note, testinfra builtins don't seem fully compatible with docker containers (esp. musl based OSs) stripped down nature ''' -def test_pihole_default_run_command(Docker, tag): - expected_proc = '/sbin/tini -- /start.sh' - pgrep = 'pgrep -f "{}" | wc -l || echo 0'.format(expected_proc) - find_proc = Docker.run(pgrep).stdout - if int(find_proc) < 1: - print Docker.run('ps -ef') - print "{} : {}".format(pgrep, find_proc) - assert False, '{}: Couldn\'t find proc {}'.format(tag, expected_proc) - +@pytest.mark.parametrize('entrypoint', ['--entrypoint=/bin/bash']) @pytest.mark.parametrize('args', [ '' ]) def test_ServerIP_missing_triggers_start_error(Docker): ''' When args to docker are empty start.sh exits saying ServerIP is required ''' @@ -21,6 +13,7 @@ def test_ServerIP_missing_triggers_start_error(Docker): assert start.rc == 1 assert error_msg in start.stdout +@pytest.mark.parametrize('entrypoint', ['--entrypoint=/bin/bash']) @pytest.mark.parametrize('args,error_msg,expect_rc', [ ('-e ServerIP="1.2.3.z"', "ServerIP Environment variable (1.2.3.z) doesn't appear to be a valid IPv4 address",1), ('-e ServerIP="1.2.3.4" -e ServerIPv6="1234:1234:1234:ZZZZ"', "Environment variable (1234:1234:1234:ZZZZ) doesn't appear to be a valid IPv6 address",1),