gc: do not work without specifier when using -c flag (#3493)

* gc: ask for specifier when using -c flag

* tests: add -w flag with gc -c
This commit is contained in:
Saugat Pachhai
2020-03-17 18:12:42 +02:00
committed by GitHub
parent e1334448ea
commit 4b5d4d759a
4 changed files with 23 additions and 4 deletions
-1
View File
@@ -19,7 +19,6 @@ class CmdGC(CmdBase):
all_tags=self.args.all_tags,
all_commits=self.args.all_commits,
workspace=self.args.workspace,
cloud=self.args.cloud,
)
msg = "This will remove all cache except items used in "
-1
View File
@@ -46,7 +46,6 @@ def gc(
all_tags=all_tags,
all_commits=all_commits,
all_branches=all_branches,
cloud=cloud,
)
from contextlib import ExitStack
+1 -1
View File
@@ -367,7 +367,7 @@ class TestDataCloudCLIBase(TestDvc):
self.assertTrue(os.path.isfile(cache_dir))
# NOTE: check if remote gc works correctly on directories
self.main(["gc", "-c", "-f"] + args)
self.main(["gc", "-cw", "-f"] + args)
shutil.move(
self.dvc.cache.local.cache_dir,
self.dvc.cache.local.cache_dir + ".back",
+22 -1
View File
@@ -236,6 +236,20 @@ def test_gc_without_workspace_raises_error(tmp_dir, dvc):
dvc.gc(force=True, workspace=False)
def test_gc_cloud_with_or_without_specifier(tmp_dir, erepo_dir):
dvc = erepo_dir.dvc
with erepo_dir.chdir():
from dvc.exceptions import InvalidArgumentError
with pytest.raises(InvalidArgumentError):
dvc.gc(force=True, cloud=True)
dvc.gc(cloud=True, all_tags=True)
dvc.gc(cloud=True, all_commits=True)
dvc.gc(cloud=True, all_branches=True)
dvc.gc(cloud=True, all_commits=False, all_branches=True, all_tags=True)
def test_gc_without_workspace_on_tags_branches_commits(tmp_dir, dvc):
dvc.gc(force=True, all_tags=True)
dvc.gc(force=True, all_commits=True)
@@ -253,6 +267,13 @@ def test_gc_without_workspace(tmp_dir, dvc, caplog):
assert "Invalid Arguments" in caplog.text
def test_gc_cloud_without_any_specifier(tmp_dir, dvc, caplog):
with caplog.at_level(logging.WARNING, logger="dvc"):
assert main(["gc", "-cvf"]) == 255
assert "Invalid Arguments" in caplog.text
def test_gc_with_possible_args_positive(tmp_dir, dvc):
for flag in [
"-w",
@@ -274,5 +295,5 @@ def test_gc_cloud_positive(tmp_dir, dvc, tmp_path_factory):
dvc.push()
for flag in ["-c", "-ca", "-cT", "-caT", "-cwT"]:
for flag in ["-cw", "-ca", "-cT", "-caT", "-cwT"]:
assert main(["gc", "-vf", flag]) == 0