mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-13 15:28:27 +01:00
exp remove: rename --all-commits flag and unify the collection of revs (#7155)
fix: #7155 1. rename flags `-A/--all-commits` in `exp remove` 2. add new flag `-n/--num` in `exp remove` 3. unify the revision collection in `exp remove` 4. add unit and func tests for `exp remove` Co-authored-by: Jorge Orpinel <[email protected]>
This commit is contained in:
committed by
Gao
co-authored by
Jorge Orpinel
parent
244637e299
commit
efc021da73
@@ -17,7 +17,12 @@ def test_remove_experiments_by_ref(tmp_dir, scm, dvc, exp_stage, caplog):
|
||||
ref_list.append(str(ref_info))
|
||||
|
||||
with pytest.raises(InvalidArgumentError):
|
||||
assert dvc.experiments.remove(ref_list[:2] + ["non-exist"])
|
||||
dvc.experiments.remove(ref_list[:2] + ["non-exist"])
|
||||
assert scm.get_ref(str(ref_list[0])) is not None
|
||||
assert scm.get_ref(str(ref_list[1])) is not None
|
||||
assert scm.get_ref(str(ref_list[2])) is not None
|
||||
|
||||
assert dvc.experiments.remove(ref_list[:2])
|
||||
assert scm.get_ref(str(ref_list[0])) is None
|
||||
assert scm.get_ref(str(ref_list[1])) is None
|
||||
assert scm.get_ref(str(ref_list[2])) is not None
|
||||
@@ -85,7 +90,7 @@ def test_remove_all(tmp_dir, scm, dvc, exp_stage):
|
||||
ref_info2 = first(exp_refs_by_rev(scm, first(results)))
|
||||
dvc.experiments.run(exp_stage.addressing, params=["foo=4"], queue=True)
|
||||
|
||||
removed = dvc.experiments.remove(clear_all=True)
|
||||
removed = dvc.experiments.remove(all_commits=True)
|
||||
assert removed == 2
|
||||
assert len(dvc.experiments.stash) == 2
|
||||
assert scm.get_ref(str(ref_info2)) is None
|
||||
@@ -110,7 +115,8 @@ def test_remove_remote(tmp_dir, scm, dvc, exp_stage, git_upstream, use_url):
|
||||
assert git_upstream.tmp_dir.scm.get_ref(str(ref_info)) == exp
|
||||
|
||||
dvc.experiments.remove(
|
||||
remote=remote, exp_names=[str(ref_info_list[0]), ref_info_list[1].name]
|
||||
git_remote=remote,
|
||||
exp_names=[str(ref_info_list[0]), ref_info_list[1].name],
|
||||
)
|
||||
|
||||
assert git_upstream.tmp_dir.scm.get_ref(str(ref_info_list[0])) is None
|
||||
@@ -118,3 +124,32 @@ def test_remove_remote(tmp_dir, scm, dvc, exp_stage, git_upstream, use_url):
|
||||
assert (
|
||||
git_upstream.tmp_dir.scm.get_ref(str(ref_info_list[2])) == exp_list[2]
|
||||
)
|
||||
|
||||
|
||||
def test_remove_experiments_by_rev(tmp_dir, scm, dvc, exp_stage):
|
||||
baseline = scm.get_rev()
|
||||
|
||||
results = dvc.experiments.run(exp_stage.addressing, params=["foo=1"])
|
||||
ref_info = first(exp_refs_by_rev(scm, first(results)))
|
||||
baseline_exp_ref = str(ref_info)
|
||||
|
||||
results = dvc.experiments.run(
|
||||
exp_stage.addressing, params=["foo=2"], queue=True, name="queue2"
|
||||
)
|
||||
baseline_queue_ref = first(results)
|
||||
|
||||
scm.commit("new_baseline")
|
||||
|
||||
results = dvc.experiments.run(exp_stage.addressing, params=["foo=3"])
|
||||
ref_info = first(exp_refs_by_rev(scm, first(results)))
|
||||
new_exp_ref = str(ref_info)
|
||||
|
||||
results = dvc.experiments.run(
|
||||
exp_stage.addressing, params=["foo=4"], queue=True, name="queue4"
|
||||
)
|
||||
new_queue_ref = first(results)
|
||||
assert dvc.experiments.remove(rev=baseline) == 1
|
||||
assert scm.get_ref(baseline_exp_ref) is None
|
||||
assert baseline_queue_ref in dvc.experiments.stash_revs
|
||||
assert scm.get_ref(new_exp_ref) is not None
|
||||
assert new_queue_ref in dvc.experiments.stash_revs
|
||||
|
||||
@@ -338,18 +338,22 @@ def test_experiments_pull(dvc, scm, mocker):
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"queue,clear_all,remote",
|
||||
[(True, False, None), (False, True, None), (False, False, True)],
|
||||
)
|
||||
def test_experiments_remove(dvc, scm, mocker, queue, clear_all, remote):
|
||||
if queue:
|
||||
args = ["--queue"]
|
||||
if clear_all:
|
||||
args = ["--all"]
|
||||
if remote:
|
||||
args = ["--git-remote", "myremote", "exp-123", "exp-234"]
|
||||
cli_args = parse_args(["experiments", "remove"] + args)
|
||||
def test_experiments_remove(dvc, scm, mocker, capsys, caplog):
|
||||
cli_args = parse_args(
|
||||
[
|
||||
"experiments",
|
||||
"remove",
|
||||
"--all-commits",
|
||||
"--rev",
|
||||
"foo",
|
||||
"--num",
|
||||
"2",
|
||||
"--git-remote",
|
||||
"myremote",
|
||||
"exp-123",
|
||||
"exp-234",
|
||||
]
|
||||
)
|
||||
assert cli_args.func == CmdExperimentsRemove
|
||||
|
||||
cmd = cli_args.func(cli_args)
|
||||
@@ -358,10 +362,20 @@ def test_experiments_remove(dvc, scm, mocker, queue, clear_all, remote):
|
||||
assert cmd.run() == 0
|
||||
m.assert_called_once_with(
|
||||
cmd.repo,
|
||||
exp_names=["exp-123", "exp-234"] if remote else [],
|
||||
queue=queue,
|
||||
clear_all=clear_all,
|
||||
remote="myremote" if remote else None,
|
||||
exp_names=["exp-123", "exp-234"],
|
||||
all_commits=True,
|
||||
rev="foo",
|
||||
num=2,
|
||||
queue=False,
|
||||
git_remote="myremote",
|
||||
)
|
||||
|
||||
cmd = cli_args.func(parse_args(["exp", "remove"]))
|
||||
with pytest.raises(InvalidArgumentError) as excinfo:
|
||||
cmd.run()
|
||||
assert (
|
||||
str(excinfo.value) == "Either provide an `experiment` argument"
|
||||
", or use the `--rev` or `--all-commits` flag."
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user