mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
import pytest
|
|
from dvc.utils.stage import load_stage_file, dump_stage_file
|
|
|
|
from dvc.stage import StageCommitError
|
|
|
|
|
|
def test_commit_recursive(dvc_repo, repo_dir):
|
|
stages = dvc_repo.add(repo_dir.DATA_DIR, recursive=True, no_commit=True)
|
|
assert len(stages) == 2
|
|
|
|
assert dvc_repo.status() != {}
|
|
|
|
dvc_repo.commit(repo_dir.DATA_DIR, recursive=True)
|
|
|
|
assert dvc_repo.status() == {}
|
|
|
|
|
|
def test_commit_force(dvc_repo, repo_dir):
|
|
stages = dvc_repo.add(repo_dir.FOO, no_commit=True)
|
|
assert len(stages) == 1
|
|
stage = stages[0]
|
|
|
|
with dvc_repo.state:
|
|
assert stage.outs[0].changed_cache()
|
|
|
|
with open(repo_dir.FOO, "a") as fobj:
|
|
fobj.write(repo_dir.FOO_CONTENTS)
|
|
|
|
with dvc_repo.state:
|
|
assert stage.outs[0].changed_cache()
|
|
|
|
with pytest.raises(StageCommitError):
|
|
dvc_repo.commit(stage.path)
|
|
|
|
with dvc_repo.state:
|
|
assert stage.outs[0].changed_cache()
|
|
|
|
dvc_repo.commit(stage.path, force=True)
|
|
|
|
assert dvc_repo.status(stage.path) == {}
|
|
|
|
|
|
def test_commit_with_deps(dvc_repo, repo_dir):
|
|
stages = dvc_repo.add(repo_dir.FOO, no_commit=True)
|
|
assert len(stages) == 1
|
|
foo_stage = stages[0]
|
|
assert foo_stage is not None
|
|
assert len(foo_stage.outs) == 1
|
|
|
|
fname = "file"
|
|
stage = dvc_repo.run(
|
|
cmd="python {} {} {}".format(repo_dir.CODE, repo_dir.FOO, fname),
|
|
outs=[fname],
|
|
deps=[repo_dir.FOO, repo_dir.CODE],
|
|
no_commit=True,
|
|
)
|
|
assert stage is not None
|
|
assert len(stage.outs) == 1
|
|
|
|
with dvc_repo.state:
|
|
assert foo_stage.outs[0].changed_cache()
|
|
assert stage.outs[0].changed_cache()
|
|
|
|
dvc_repo.commit(stage.path, with_deps=True)
|
|
with dvc_repo.state:
|
|
assert not foo_stage.outs[0].changed_cache()
|
|
assert not stage.outs[0].changed_cache()
|
|
|
|
|
|
def test_commit_changed_md5(dvc_repo, repo_dir):
|
|
stages = dvc_repo.add(repo_dir.FOO, no_commit=True)
|
|
assert len(stages) == 1
|
|
stage = stages[0]
|
|
|
|
stage_file_content = load_stage_file(stage.path)
|
|
stage_file_content["md5"] = "1111111111"
|
|
dump_stage_file(stage.path, stage_file_content)
|
|
|
|
with pytest.raises(StageCommitError):
|
|
dvc_repo.commit(stage.path)
|
|
|
|
dvc_repo.commit(stage.path, force=True)
|