Beispiel #1
0
def test_build_no_default(monkeypatch):
    storage = Docker(registry_url="reg")

    monkeypatch.setattr("prefect.storage.Docker._build_image", MagicMock())

    output = storage.build()
    assert output.registry_url == storage.registry_url
    assert output.image_name
    assert output.image_tag.startswith(str(pendulum.now("utc").year))
Beispiel #2
0
def test_build_sets_informative_image_name_for_weird_name_flows(monkeypatch):
    storage = Docker(registry_url="reg")
    storage.add_flow(Flow("!&& ~~ cool flow :shades:"))

    monkeypatch.setattr("prefect.storage.Docker._build_image", MagicMock())

    output = storage.build()
    assert output.registry_url == storage.registry_url
    assert output.image_name == "cool-flow-shades"
    assert output.image_tag.startswith(str(pendulum.now("utc").year))
Beispiel #3
0
def test_build_respects_user_provided_image_name_and_tag(monkeypatch):
    storage = Docker(registry_url="reg", image_name="CUSTOM", image_tag="TAG")
    storage.add_flow(Flow("test"))

    monkeypatch.setattr("prefect.storage.Docker._build_image", MagicMock())

    output = storage.build()
    assert output.registry_url == storage.registry_url
    assert output.image_name == "CUSTOM"
    assert output.image_tag == "TAG"
Beispiel #4
0
def test_build_sets_image_name_for_multiple_flows(monkeypatch):
    storage = Docker(registry_url="reg")
    storage.add_flow(Flow("test"))
    storage.add_flow(Flow("test2"))

    monkeypatch.setattr("prefect.storage.Docker._build_image", MagicMock())

    output = storage.build()
    assert output.registry_url == storage.registry_url
    assert isinstance(output.image_name, str)
    assert output.image_tag.startswith(str(pendulum.now("utc").year))
Beispiel #5
0
def test_build_with_rm_override(monkeypatch):
    storage = Docker(
        registry_url="reg",
        base_image="python:3.7",
        image_name="test",
        image_tag="latest",
        build_kwargs={"rm": False},
    )

    mock_docker_client = MagicMock()
    mock_docker_client.images.return_value = ["test"]
    with patch.object(storage, "_get_client") as mock_docker_client_fn:
        mock_docker_client_fn.return_value = mock_docker_client

        output = storage.build(push=False)
        mock_docker_client.build.assert_called_once_with(
            dockerfile=ANY, path=ANY, tag="reg/test:latest", rm=False
        )
Beispiel #6
0
def test_build_with_default_rm_true(monkeypatch):
    storage = Docker(
        registry_url="reg",
        base_image="python:3.7",
        image_name="test",
        image_tag="latest",
    )

    pull_image = MagicMock()
    monkeypatch.setattr("prefect.storage.Docker.pull_image", pull_image)

    mock_docker_client = MagicMock()
    mock_docker_client.images.return_value = ["test"]
    with patch.object(storage, "_get_client") as mock_docker_client_fn:
        mock_docker_client_fn.return_value = mock_docker_client

        output = storage.build(push=False)
        mock_docker_client.build.assert_called_once_with(
            dockerfile=ANY, path=ANY, tag="reg/test:latest", rm=True
        )