Files
dvc/tests/func/experiments/test_rename.py
T
BradyJ27anddaavoo 51dc78a135 exp: add rename command (#9812)
* Add renaming for finished experiments

* Update arg parser

* Add rename by rev

* Add rename tests

* Change remove to rename; Refactor arguments error

* Remove --rev; Use resolve_name; Add test

* Update testing; Fix python3.10 rename failure

* Update rename test

* Update tests and error handling

* exp rename: Add `--force`.

Fail if experiment new_name exists but allow to overwrite it.

---------

Co-authored-by: daavoo <[email protected]>
2023-09-18 17:01:32 +00:00

34 lines
1.2 KiB
Python

import pytest
from dvc.repo.experiments.exceptions import (
ExperimentExistsError,
UnresolvedExpNamesError,
)
from dvc.repo.experiments.utils import exp_refs_by_names
def test_rename_experiment_by_name(scm, dvc, exp_stage):
dvc.experiments.run(exp_stage.addressing, name="test-name", params=["foo=1"])
old_ref = exp_refs_by_names(scm, {"test-name"})
dvc.experiments.rename("new-name", "test-name")
new_ref = exp_refs_by_names(scm, {"new-name"})
assert scm.get_ref(str(old_ref["test-name"][0])) is None
assert scm.get_ref(str(new_ref["new-name"][0])) is not None
with pytest.raises(UnresolvedExpNamesError):
dvc.experiments.rename("new-name", "foo")
def test_same_name(dvc, exp_stage):
dvc.experiments.run(exp_stage.addressing, name="same-name", params=["foo=1"])
assert dvc.experiments.rename("same-name", "same-name") is None
def test_existing_name(dvc, exp_stage):
dvc.experiments.run(exp_stage.addressing, name="first-name", params=["foo=1"])
dvc.experiments.run(exp_stage.addressing, name="second-name", params=["foo=2"])
with pytest.raises(ExperimentExistsError):
dvc.experiments.rename("second-name", "first-name")
dvc.experiments.rename("second-name", "first-name", force=True)