def test_build_image_passes_and_pushes(monkeypatch): flow = Flow("test") storage = Docker(registry_url="reg", base_image="python:3.6") pull_image = MagicMock() monkeypatch.setattr("prefect.storage.Docker.pull_image", pull_image) push_image = MagicMock() monkeypatch.setattr("prefect.storage.Docker.push_image", push_image) build = MagicMock() monkeypatch.setattr("docker.APIClient.build", build) images = MagicMock(return_value=["test"]) monkeypatch.setattr("docker.APIClient.images", images) remove = MagicMock() monkeypatch.setattr("docker.APIClient.remove_image", remove) image_name, image_tag = storage._build_image(flow) assert image_name assert image_tag assert "reg" in push_image.call_args[0][0] assert "reg" in remove.call_args[1]["image"]
def test_build_image_fails_no_registry(monkeypatch): storage = Docker(base_image="python:3.6", image_name="test", image_tag="latest") client = MagicMock() monkeypatch.setattr("docker.APIClient", client) with pytest.raises(ValueError, match="failed to build"): image_name, image_tag = storage._build_image(push=False)
def test_build_image_passes_but_raises_warning(monkeypatch): storage = Docker(base_image="python:3.6", image_name="test", image_tag="latest") client = MagicMock() client.images.return_value = ["name"] monkeypatch.setattr("docker.APIClient", MagicMock(return_value=client)) with pytest.raises(UserWarning): image_name, image_tag = storage._build_image() assert image_name == "test" assert image_tag == "latest"
def test_build_image_fails_with_value_error(monkeypatch): flow = Flow("test") storage = Docker( registry_url="reg", base_image="python:3.6", image_name="test", image_tag="latest", ) client = MagicMock() monkeypatch.setattr("docker.APIClient", client) with pytest.raises(ValueError, match="failed to build"): image_name, image_tag = storage._build_image(flow)
def test_build_image_passes(monkeypatch): flow = Flow("test") storage = Docker( registry_url="reg", base_image="python:3.6", image_name="test", image_tag="latest", ) pull_image = MagicMock() monkeypatch.setattr("prefect.storage.Docker.pull_image", pull_image) build = MagicMock() monkeypatch.setattr("docker.APIClient.build", build) images = MagicMock(return_value=["test"]) monkeypatch.setattr("docker.APIClient.images", images) image_name, image_tag = storage._build_image(flow, push=False) assert image_name assert image_tag