mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 07:18:28 +01:00
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:
+9
-2
@@ -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:
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user