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))
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))
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"
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))
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 )
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 )