mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
181 lines
4.7 KiB
Python
181 lines
4.7 KiB
Python
from dvc.render.match import (
|
|
get_files,
|
|
group_by_filename,
|
|
match_renderers,
|
|
squash_plots_properties,
|
|
)
|
|
|
|
|
|
def test_get_files_on_error():
|
|
plots_data = {
|
|
"v2": {"error": "ERROR"},
|
|
"v1": {
|
|
"data": {"file.json": {"data": [{"y": 2}, {"y": 3}], "props": {}}}
|
|
},
|
|
}
|
|
files = get_files(plots_data)
|
|
assert files == ["file.json"]
|
|
|
|
|
|
def test_group_by_filename():
|
|
error = FileNotFoundError()
|
|
data = {
|
|
"v2": {
|
|
"data": {
|
|
"file.json": {"data": [{"y": 2}, {"y": 3}], "props": {}},
|
|
"other_file.jpg": {"data": "content"},
|
|
}
|
|
},
|
|
"v1": {
|
|
"data": {"file.json": {"data": [{"y": 4}, {"y": 5}], "props": {}}}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"file.json": {"error": error, "props": {}},
|
|
"other_file.jpg": {"data": "content2"},
|
|
}
|
|
},
|
|
}
|
|
|
|
results = group_by_filename(data)
|
|
assert results["file.json"] == {
|
|
"v2": {
|
|
"data": {
|
|
"file.json": {"data": [{"y": 2}, {"y": 3}], "props": {}},
|
|
}
|
|
},
|
|
"v1": {
|
|
"data": {"file.json": {"data": [{"y": 4}, {"y": 5}], "props": {}}}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"file.json": {"error": error, "props": {}},
|
|
}
|
|
},
|
|
}
|
|
assert results["other_file.jpg"] == {
|
|
"v2": {
|
|
"data": {
|
|
"other_file.jpg": {"data": "content"},
|
|
}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"other_file.jpg": {"data": "content2"},
|
|
}
|
|
},
|
|
}
|
|
|
|
|
|
def test_squash_plots_properties():
|
|
error = FileNotFoundError()
|
|
group = {
|
|
"v2": {
|
|
"data": {
|
|
"file.json": {
|
|
"data": [{"y": 2}, {"y": 3}],
|
|
"props": {"foo": 1},
|
|
},
|
|
}
|
|
},
|
|
"v1": {
|
|
"data": {
|
|
"file.json": {
|
|
"data": [{"y": 4}, {"y": 5}],
|
|
"props": {"bar": 1},
|
|
}
|
|
}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"file.json": {"error": error, "props": {}},
|
|
}
|
|
},
|
|
}
|
|
|
|
plot_properties = squash_plots_properties(group)
|
|
|
|
assert plot_properties == {"foo": 1, "bar": 1}
|
|
|
|
|
|
def test_match_renderers_no_out(mocker):
|
|
from dvc import render
|
|
|
|
vega_convert = mocker.spy(render.vega_converter.VegaConverter, "convert")
|
|
image_convert = mocker.spy(
|
|
render.image_converter.ImageConverter, "convert"
|
|
)
|
|
image_encode = mocker.spy(
|
|
render.image_converter.ImageConverter, "_encode_image"
|
|
)
|
|
image_write = mocker.spy(
|
|
render.image_converter.ImageConverter, "_write_image"
|
|
)
|
|
|
|
error = FileNotFoundError()
|
|
data = {
|
|
"v2": {
|
|
"data": {
|
|
"file.json": {"data": [{"y": 2}, {"y": 3}], "props": {}},
|
|
"other_file.jpg": {"data": b"content"},
|
|
}
|
|
},
|
|
"v1": {
|
|
"data": {"file.json": {"data": [{"y": 4}, {"y": 5}], "props": {}}}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"file.json": {"error": error, "props": {}},
|
|
"other_file.jpg": {"data": b"content2"},
|
|
}
|
|
},
|
|
}
|
|
|
|
renderers = match_renderers(data)
|
|
|
|
assert {r.TYPE for r in renderers} == {"vega", "image"}
|
|
vega_convert.assert_called()
|
|
image_convert.assert_called()
|
|
image_encode.assert_called()
|
|
image_write.assert_not_called()
|
|
|
|
|
|
def test_match_renderers_with_out(tmp_dir, mocker):
|
|
from dvc import render
|
|
|
|
image_encode = mocker.spy(
|
|
render.image_converter.ImageConverter, "_encode_image"
|
|
)
|
|
image_write = mocker.spy(
|
|
render.image_converter.ImageConverter, "_write_image"
|
|
)
|
|
|
|
error = FileNotFoundError()
|
|
data = {
|
|
"v2": {
|
|
"data": {
|
|
"file.json": {"data": [{"y": 2}, {"y": 3}], "props": {}},
|
|
"other_file.jpg": {"data": b"content"},
|
|
}
|
|
},
|
|
"v1": {
|
|
"data": {"file.json": {"data": [{"y": 4}, {"y": 5}], "props": {}}}
|
|
},
|
|
"workspace": {
|
|
"data": {
|
|
"file.json": {"error": error, "props": {}},
|
|
"other_file.jpg": {"data": b"content2"},
|
|
}
|
|
},
|
|
}
|
|
|
|
match_renderers(data, out=tmp_dir / "foo")
|
|
|
|
image_encode.assert_not_called()
|
|
image_write.assert_called()
|
|
|
|
assert (tmp_dir / "foo" / "v2_other_file.jpg").read_bytes() == b"content"
|
|
assert (
|
|
tmp_dir / "foo" / "workspace_other_file.jpg"
|
|
).read_bytes() == b"content2"
|