diff --git a/dvc/commands/plots.py b/dvc/commands/plots.py index fb6bbd07ca..3534d92fb4 100644 --- a/dvc/commands/plots.py +++ b/dvc/commands/plots.py @@ -21,8 +21,7 @@ def _show_json(renderers, split=False): result = { renderer.name: to_json(renderer, split) for renderer in renderers } - if result: - ui.write_json(result) + ui.write_json(result) class CmdPlots(CmdBase): diff --git a/tests/unit/command/test_plots.py b/tests/unit/command/test_plots.py index b740b033e8..a1526a80d9 100644 --- a/tests/unit/command/test_plots.py +++ b/tests/unit/command/test_plots.py @@ -336,3 +336,30 @@ def test_plots_templates_choices(tmp_dir, dvc): assert CmdPlotsTemplates.TEMPLATES_CHOICES == list( pluck_attr("DEFAULT_NAME", TEMPLATES) ) + + +@pytest.mark.parametrize("split", (True, False)) +def test_show_json(split, mocker, capsys): + import dvc.commands.plots + + renderer = mocker.MagicMock() + renderer.name = "rname" + to_json_mock = mocker.patch( + "dvc.render.convert.to_json", return_value={"renderer": "json"} + ) + + dvc.commands.plots._show_json([renderer], split) + + to_json_mock.assert_called_once_with(renderer, split) + + out, _ = capsys.readouterr() + assert json.dumps({"rname": {"renderer": "json"}}) in out + + +def test_show_json_no_renderers(capsys): + import dvc.commands.plots + + dvc.commands.plots._show_json([]) + + out, _ = capsys.readouterr() + assert json.dumps({}) in out