data status: check if change.old.hash_info is None or not (#8878)

data:status: check if change.old.hash_info is None or not
This commit is contained in:
skshetry
2023-01-25 14:24:38 +02:00
committed by GitHub
parent 3d5f4dc66c
commit 3427e115eb
2 changed files with 26 additions and 3 deletions
+1
View File
@@ -93,6 +93,7 @@ def _diff(
if (
with_missing
and change.old
and change.old.hash_info
and not change.old.odb.exists(change.old.hash_info.value)
):
# NOTE: emulating previous behaviour
+25 -3
View File
@@ -176,10 +176,32 @@ def test_skip_uncached_pipeline_outputs(tmp_dir, dvc, run_copy_metrics):
)
def test_output_with_newly_added_stage(tmp_dir, dvc):
def test_outs_with_no_hashes(M, tmp_dir, dvc, scm):
dvc.stage.add(single_stage=True, outs=["bar"])
dvc.stage.add(deps=["bar"], outs=["foo"], name="copy", cmd="cp foo bar")
assert dvc.data_status() == EMPTY_STATUS
assert dvc.data_status(granular=True) == EMPTY_STATUS
expected_output = {
**EMPTY_STATUS,
"committed": {"added": M.unordered("bar", "foo")},
"git": M.dict(),
}
assert dvc.data_status() == expected_output
assert dvc.data_status(granular=True) == expected_output
def test_outs_with_no_hashes_and_with_uncommitted_files(M, tmp_dir, dvc, scm):
tmp_dir.gen({"bar": "bar", "foo": "foo"})
dvc.stage.add(single_stage=True, outs=["bar"])
dvc.stage.add(deps=["bar"], outs=["foo"], name="copy", cmd="cp foo bar")
expected_output = {
**EMPTY_STATUS,
"uncommitted": {"added": M.unordered("bar", "foo")},
"committed": {"added": M.unordered("bar", "foo")},
"git": M.dict(),
}
assert dvc.data_status() == expected_output
assert dvc.data_status(granular=True) == expected_output
def test_subdir(M, tmp_dir, scm):