mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-06 15:28:28 +01:00
139 lines
3.7 KiB
Python
139 lines
3.7 KiB
Python
import pytest
|
|
import hashlib
|
|
|
|
|
|
def _checksum(text):
|
|
return hashlib.md5(bytes(text, "utf-8")).hexdigest()
|
|
|
|
|
|
def test_no_scm(tmp_dir, dvc):
|
|
tmp_dir.dvc_gen("file", "text")
|
|
|
|
pytest.skip("TODO: define behavior, should it fail?")
|
|
|
|
|
|
def test_added(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("file", "text")
|
|
|
|
result = {
|
|
"file": {
|
|
"old": {},
|
|
"new": {"checksum": _checksum("text"), "size": 4},
|
|
"diff": {"status": "added", "size": 4},
|
|
}
|
|
}
|
|
|
|
assert result == dvc.diff()
|
|
|
|
|
|
def test_deleted(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("file", "text", commit="add file")
|
|
(tmp_dir / "file.dvc").unlink()
|
|
|
|
result = {
|
|
"file": {
|
|
"old": {"checksum": _checksum("text"), "size": 4},
|
|
"new": {},
|
|
"diff": {"status": "deleted", "size": 4},
|
|
}
|
|
}
|
|
|
|
assert result == dvc.diff()
|
|
|
|
|
|
def test_modified(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("file", "first", commit="first version")
|
|
tmp_dir.dvc_gen("file", "second")
|
|
|
|
result = {
|
|
"file": {
|
|
"old": {"checksum": _checksum("first"), "size": 6},
|
|
"new": {"checksum": _checksum("second"), "size": 6},
|
|
"diff": {"status": "modified", "size": 0},
|
|
}
|
|
}
|
|
|
|
assert result == dvc.diff()
|
|
|
|
|
|
def test_refs(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("file", "first", commit="first version")
|
|
tmp_dir.dvc_gen("file", "second", commit="second version")
|
|
tmp_dir.dvc_gen("file", "third", commit="third version")
|
|
|
|
HEAD_2 = _checksum("first")
|
|
HEAD_1 = _checksum("second")
|
|
HEAD = _checksum("third")
|
|
|
|
assert dvc.diff("HEAD~1") == {
|
|
"file": {
|
|
"old": {"checksum": HEAD_1, "size": 5},
|
|
"new": {"checksum": HEAD, "size": 5},
|
|
"diff": {"status": "modified", "size": 0},
|
|
}
|
|
}
|
|
|
|
assert dvc.diff("HEAD~1", "HEAD~2") == {
|
|
"file": {
|
|
"old": {"checksum": HEAD_2, "size": 5},
|
|
"new": {"checksum": HEAD_1, "size": 5},
|
|
"diff": {"status": "modified", "size": 0},
|
|
}
|
|
}
|
|
|
|
pytest.skip('TODO: test dvc.diff("missing")')
|
|
|
|
|
|
def test_target(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("foo", "foo")
|
|
tmp_dir.dvc_gen("bar", "bar")
|
|
scm.add([".gitignore", "foo.dvc", "bar.dvc"])
|
|
scm.commit("lowercase")
|
|
|
|
tmp_dir.dvc_gen("foo", "FOO")
|
|
tmp_dir.dvc_gen("bar", "BAR")
|
|
scm.add(["foo.dvc", "bar.dvc"])
|
|
scm.commit("uppercase")
|
|
|
|
assert dvc.diff("HEAD~1", target="foo") == {
|
|
"foo": {
|
|
"old": {"checksum": _checksum("foo"), "size": 3},
|
|
"new": {"checksum": _checksum("FOO"), "size": 3},
|
|
"diff": {"status": "modified", "size": 0},
|
|
}
|
|
}
|
|
|
|
assert not dvc.diff("HEAD~1", target="missing")
|
|
|
|
|
|
def test_directories(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen({"dir": {"1": "1", "2": "2"}}, commit="add a directory")
|
|
tmp_dir.dvc_gen({"dir": {"2": "2"}}, commit="delete a file")
|
|
tmp_dir.dvc_gen({"dir": {"2": "two"}}, commit="modify a file")
|
|
tmp_dir.dvc_gen({"dir": {"2": "two", "3": "3"}}, commit="add a file")
|
|
|
|
# dvc.diff(":/directory", ":/init") --> (add: dir/1, dir/2)
|
|
# dvc.diff(":/delete", ":/directory") --> (deleted: dir/1)
|
|
# dvc.diff(":/modify", ":/directory") --> (modified: dir/2)
|
|
# dvc.diff(":/modify", ":/delete") --> (add: dir/3)
|
|
# dvc.diff(":/add a file", ":/modify")
|
|
pytest.skip("TODO: define output structure")
|
|
|
|
|
|
def test_cli(tmp_dir, scm, dvc):
|
|
tmp_dir.dvc_gen("file", "text")
|
|
# main(["diff"])
|
|
pytest.skip("TODO: define output structure")
|
|
|
|
|
|
def test_json(tmp_dir, scm, dvc):
|
|
# result = {
|
|
# "added": {...},
|
|
# "renamed": {...},
|
|
# "modified": {...},
|
|
# "deleted": {...},
|
|
# }
|
|
|
|
# main(["diff", "--json"])
|
|
pytest.skip("TODO: define output structure")
|