From 4b5d4d759ac4f90f618cc4317fd635dd93be1ad2 Mon Sep 17 00:00:00 2001 From: Saugat Pachhai Date: Tue, 17 Mar 2020 21:57:42 +0545 Subject: [PATCH] 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 --- dvc/command/gc.py | 1 - dvc/repo/gc.py | 1 - tests/func/test_data_cloud.py | 2 +- tests/func/test_gc.py | 23 ++++++++++++++++++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/dvc/command/gc.py b/dvc/command/gc.py index b4b710ae7..64e634d3a 100644 --- a/dvc/command/gc.py +++ b/dvc/command/gc.py @@ -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 " diff --git a/dvc/repo/gc.py b/dvc/repo/gc.py index a19c3932b..5f988244d 100644 --- a/dvc/repo/gc.py +++ b/dvc/repo/gc.py @@ -46,7 +46,6 @@ def gc( all_tags=all_tags, all_commits=all_commits, all_branches=all_branches, - cloud=cloud, ) from contextlib import ExitStack diff --git a/tests/func/test_data_cloud.py b/tests/func/test_data_cloud.py index aaf1a12c5..1e875f79c 100644 --- a/tests/func/test_data_cloud.py +++ b/tests/func/test_data_cloud.py @@ -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", diff --git a/tests/func/test_gc.py b/tests/func/test_gc.py index bb395669a..85790ebeb 100644 --- a/tests/func/test_gc.py +++ b/tests/func/test_gc.py @@ -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