From 9957410998730adbdff190f038e1923841ffa760 Mon Sep 17 00:00:00 2001 From: Ivan Shcheklein Date: Wed, 6 Mar 2024 23:05:49 -0800 Subject: [PATCH] fix(plots): handle empty directories (#10344) * fix(plots): handle empty directories * Update tests/integration/plots/test_plots.py Co-authored-by: skshetry <18718008+skshetry@users.noreply.github.com> * cleanup after review --------- Co-authored-by: skshetry <18718008+skshetry@users.noreply.github.com> --- dvc/repo/plots/__init__.py | 11 ++++++----- tests/integration/plots/test_plots.py | 12 ++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/dvc/repo/plots/__init__.py b/dvc/repo/plots/__init__.py index fe526d289..7fcae7fd1 100644 --- a/dvc/repo/plots/__init__.py +++ b/dvc/repo/plots/__init__.py @@ -462,11 +462,12 @@ def _resolve_definitions( fs, data_path, props=plot_props | props, onerror=onerror ) # use config for parent directory with most specific definition - unpacked["data"] = { - k: v - for k, v in unpacked["data"].items() - if _closest_parent(fs, k, plot_ids_parents) == data_path - } + if unpacked.get("data"): + unpacked["data"] = { + k: v + for k, v in unpacked["data"].items() + if _closest_parent(fs, k, plot_ids_parents) == data_path + } dpath.merge(result, unpacked) elif _matches(targets, config_path, plot_id): adjusted_props = _adjust_sources(fs, plot_props, config_dir) diff --git a/tests/integration/plots/test_plots.py b/tests/integration/plots/test_plots.py index d53c5a467..c41ec8657 100644 --- a/tests/integration/plots/test_plots.py +++ b/tests/integration/plots/test_plots.py @@ -634,3 +634,15 @@ def test_nested_x_defn_collection(tmp_dir, dvc, scm, capsys): {"step": 1, "Max_Leaf_Nodes": "50", "rev": "workspace"}, {"step": 2, "Max_Leaf_Nodes": "500", "rev": "workspace"}, ] + + +def test_plots_empty_directory(tmp_dir, dvc, scm, capsys): + (tmp_dir / "empty").mkdir() + (tmp_dir / "dvc.yaml").dump({"plots": [{"empty": {}}]}) + + scm.add(["dvc.yaml"]) + scm.commit("commit dvc files") + + html_path, _, split_json_result = call(capsys) + assert split_json_result == {} + assert html_path == ""