remove: remove dvc.yaml and dvc.lock if they are empty (#4196)

* remove: remove dvc.yaml, dvc.lock if they are empty

* tests: remove: simplified dvc.yaml in test_remove_stage_removes_dvcfiles_if_no_stages_left

* tests: remove: minor fixes

* tests: remove: simplified test_remove_stage_removes_dvcfiles_if_no_stages_left

* remove: independent  removal of dvc.lock and dvc.yaml
This commit is contained in:
nik123
2020-07-13 20:20:39 +03:00
committed by GitHub
parent 048e34a6a1
commit 1c9588e8d5
2 changed files with 26 additions and 2 deletions
+9 -2
View File
@@ -233,7 +233,11 @@ class PipelineFile(FileMixin):
logger.debug("Removing '%s' from '%s'", stage.name, self.path)
del d["stages"][stage.name]
dump_yaml(self.path, d)
if d["stages"]:
dump_yaml(self.path, d)
else:
super().remove()
class Lockfile(FileMixin):
@@ -286,7 +290,10 @@ class Lockfile(FileMixin):
logger.debug("Removing '%s' from '%s'", stage.name, self.path)
del d[stage.name]
dump_yaml(self.path, d)
if d:
dump_yaml(self.path, d)
else:
self.remove()
class Dvcfile:
+17
View File
@@ -285,6 +285,23 @@ def test_remove_stage_preserves_comment(tmp_dir, dvc, run_copy):
)
def test_remove_stage_removes_dvcfiles_if_no_stages_left(
tmp_dir, dvc, run_copy
):
tmp_dir.gen("foo", "foo")
run_copy("foo", "bar", name="run_copy")
dvc_file = Dvcfile(dvc, PIPELINE_FILE)
assert dvc_file.exists()
assert (tmp_dir / PIPELINE_LOCK).exists()
assert (tmp_dir / "foo").exists()
dvc_file.remove_stage(dvc_file.stages["run_copy"])
assert not dvc_file.exists()
assert not (tmp_dir / PIPELINE_LOCK).exists()
def test_dvcfile_dump_preserves_meta(tmp_dir, dvc, run_copy):
tmp_dir.gen("foo", "foo")
stage = run_copy("foo", "bar", name="run_copy")