From 35e9634b151c73adbc01b3c314369f2ee8049a2c Mon Sep 17 00:00:00 2001 From: David de la Iglesia Castro Date: Mon, 27 Jun 2022 09:36:19 +0200 Subject: [PATCH] render: image_converter: Support slash in revision. Fixes #7934 --- dvc/render/image_converter.py | 3 ++- tests/unit/render/test_image_converter.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/dvc/render/image_converter.py b/dvc/render/image_converter.py index 1c4331b334..4af77e7749 100644 --- a/dvc/render/image_converter.py +++ b/dvc/render/image_converter.py @@ -20,7 +20,8 @@ def _write_image( image_data: bytes, ) -> "StrPath": img_path = os.path.join( - path, f"{revision}_{filename.replace(os.sep, '_')}" + path, + f"{revision}_{filename}".replace(os.sep, "_").replace("/", "_"), ) with open(img_path, "wb") as fd: fd.write(image_data) diff --git a/tests/unit/render/test_image_converter.py b/tests/unit/render/test_image_converter.py index b9ed1513a0..818c987c2f 100644 --- a/tests/unit/render/test_image_converter.py +++ b/tests/unit/render/test_image_converter.py @@ -28,3 +28,19 @@ def test_image_converter_with_out(tmp_dir): } assert (tmp_dir / "foo" / "r_image.png").read_bytes() == b"content" + + +def test_image_converter_with_slash_in_revision(tmp_dir): + """Regression test for #7934""" + data = b"content" + converter = ImageConverter({"out": tmp_dir / "foo"}) + + datapoints, _ = converter.convert(data, "feature/r", "image.png") + + assert datapoints[0] == { + REVISION_FIELD: "feature/r", + "filename": "image.png", + SRC_FIELD: str(tmp_dir / "foo" / "feature_r_image.png"), + } + + assert (tmp_dir / "foo" / "feature_r_image.png").read_bytes() == b"content"