from dvc.cli import parse_args def test_default(mocker, caplog): args = parse_args(["diff"]) cmd = args.func(args) diff = { "added": [{"path": "file", "checksum": "00000000"}], "deleted": [], "modified": [], } mocker.patch("dvc.repo.Repo.diff", return_value=diff) assert 0 == cmd.run() assert "Added:\n file\n" in caplog.text def test_checksums(mocker, caplog): args = parse_args(["diff", "--checksums"]) cmd = args.func(args) diff = { "added": [], "deleted": [ {"path": "bar", "checksum": "00000000"}, {"path": "foo", "checksum": "11111111"}, ], "modified": [ { "path": "file", "checksum": {"old": "AAAAAAAA", "new": "BBBBBBBB"}, } ], } mocker.patch("dvc.repo.Repo.diff", return_value=diff) assert 0 == cmd.run() assert ( "Deleted:\n" " 00000000 bar\n" " 11111111 foo\n" "\n" "Modified:\n" " AAAAAAAA..BBBBBBBB file\n" ) in caplog.text def test_json(mocker, caplog): args = parse_args(["diff", "--show-json"]) cmd = args.func(args) diff = { "added": [{"path": "file", "checksum": "00000000"}], "deleted": [], "modified": [], } mocker.patch("dvc.repo.Repo.diff", return_value=diff) assert 0 == cmd.run() assert ( '{"added": [{"path": "file"}], "deleted": [], "modified": []}' in caplog.text ) def test_json_checksums(mocker, caplog): args = parse_args(["diff", "--show-json", "--checksums"]) cmd = args.func(args) diff = { "added": [{"path": "file", "checksum": "00000000"}], "deleted": [], "modified": [], } mocker.patch("dvc.repo.Repo.diff", return_value=diff) assert 0 == cmd.run() assert ( '{"added": [{"path": "file", "checksum": "00000000"}], ' '"deleted": [], "modified": []}' in caplog.text )