예제 #1
0
def assert_compose_calls(compose, expected_args, env=mock.ANY):
    base_command = ['docker-compose', '--file', str(compose.config_path)]
    expected_commands = []
    for args in expected_args:
        if isinstance(args, str):
            args = re.split(r"\s", args)
        expected_commands.append(base_command + args)
    return assert_subprocess_calls(expected_commands, check=True, env=env)
예제 #2
0
def assert_docker_calls(compose, expected_args):
    base_command = ['docker']
    expected_commands = []
    for args in expected_args:
        if isinstance(args, str):
            args = re.split(r"\s", args)
        expected_commands.append(base_command + args)
    return assert_subprocess_calls(expected_commands, check=True)
예제 #3
0
def test_assert_subprocess_calls():
    expected_calls = ["echo Hello", ["echo", "World"]]
    with assert_subprocess_calls(expected_calls):
        subprocess.run(['echo', 'Hello'])
        subprocess.run(['echo', 'World'])

    expected_env = PartialEnv(CUSTOM_ENV_A='a', CUSTOM_ENV_C='c')
    with assert_subprocess_calls(expected_calls, env=expected_env):
        env = {'CUSTOM_ENV_A': 'a', 'CUSTOM_ENV_B': 'b', 'CUSTOM_ENV_C': 'c'}
        subprocess.run(['echo', 'Hello'], env=env)
        subprocess.run(['echo', 'World'], env=env)

    with pytest.raises(AssertionError):
        with assert_subprocess_calls(expected_calls, env=expected_env):
            env = {'CUSTOM_ENV_B': 'b', 'CUSTOM_ENV_C': 'c'}
            subprocess.run(['echo', 'Hello'], env=env)
            subprocess.run(['echo', 'World'], env=env)
예제 #4
0
def test_compose_push(arrow_compose_path):
    compose = DockerCompose(arrow_compose_path, params=dict(PYTHON='3.8'))
    expected_env = PartialEnv(PYTHON="3.8")
    expected_calls = [
        mock.call(["docker", "login", "-u", "user", "-p", "pass"], check=True),
        mock.call(["docker-compose", "--file", str(compose.config_path),
                   "push", "conda-python"], check=True, env=expected_env)
    ]
    with assert_subprocess_calls(expected_calls):
        compose.push('conda-python', user='******', password='******')
예제 #5
0
def test_compose_push(arrow_compose_path):
    compose = DockerCompose(arrow_compose_path, params=dict(PYTHON='3.9'))
    expected_env = PartialEnv(PYTHON="3.9")
    expected_calls = [
        mock.call(["docker", "login", "-u", "user", "-p", "pass"], check=True),
    ]
    for image in ["conda-cpp", "conda-python", "conda-python-pandas"]:
        expected_calls.append(
            mock.call([
                "docker-compose", "--file",
                str(compose.config.path), "push", image
            ],
                      check=True,
                      env=expected_env))
    with assert_subprocess_calls(expected_calls):
        compose.push('conda-python-pandas', user='******', password='******')