diff --git a/tests/dir_helpers.py b/tests/dir_helpers.py index 9a52b09bc..4b374e26a 100644 --- a/tests/dir_helpers.py +++ b/tests/dir_helpers.py @@ -139,6 +139,7 @@ class TmpDir(pathlib.Path): if commit: self.scm.commit(commit) + # contexts @contextmanager def chdir(self): old = os.getcwd() @@ -148,6 +149,16 @@ class TmpDir(pathlib.Path): finally: os.chdir(old) + @contextmanager + def branch(self, name, new=False): + self._require("scm") + old = self.scm.active_branch() + try: + self.scm.checkout(name, create_new=new) + yield + finally: + self.scm.checkout(old) + # Introspection methods def list(self): return [p.name for p in self.iterdir()] @@ -271,15 +282,6 @@ def erepo_dir(tmp_path_factory, monkeypatch): rconfig.add("upstream", path.dvc.cache.local.cache_dir, default=True) path.scm_add([path.dvc.config.config_file], commit="add remote") - path.dvc_gen("version", "master") - path.scm_add([".gitignore", "version.dvc"], commit="master") - - path.scm.checkout("branch", create_new=True) - (path / "version").unlink() # For mac ??? - path.dvc_gen("version", "branch") - path.scm_add([".gitignore", "version.dvc"], commit="branch") - - path.scm.checkout("master") path.dvc.close() return path diff --git a/tests/func/test_api.py b/tests/func/test_api.py index 4c21c5531..84f02c4a1 100644 --- a/tests/func/test_api.py +++ b/tests/func/test_api.py @@ -63,11 +63,15 @@ def test_open(remote_url, tmp_dir, dvc): @pytest.mark.parametrize("remote_url", all_remote_params, indirect=True) def test_open_external(remote_url, erepo_dir): - erepo_dir.scm.checkout("branch") - _set_remote_url_and_commit(erepo_dir.dvc, remote_url) - erepo_dir.scm.checkout("master") _set_remote_url_and_commit(erepo_dir.dvc, remote_url) + with erepo_dir.chdir(): + erepo_dir.dvc_gen("version", "master", commit="add version") + + with erepo_dir.branch("branch", new="True"): + # NOTE: need file to be other size for Mac + erepo_dir.dvc_gen("version", "branchver", commit="add version") + erepo_dir.dvc.push(all_branches=True) # Remove cache to force download @@ -78,7 +82,7 @@ def test_open_external(remote_url, erepo_dir): with api.open("version", repo=repo_url) as fd: assert fd.read() == "master" - assert api.read("version", repo=repo_url, rev="branch") == "branch" + assert api.read("version", repo=repo_url, rev="branch") == "branchver" @pytest.mark.parametrize("remote_url", all_remote_params, indirect=True) diff --git a/tests/func/test_get.py b/tests/func/test_get.py index 7deea2727..99fd23840 100644 --- a/tests/func/test_get.py +++ b/tests/func/test_get.py @@ -77,13 +77,10 @@ def test_cache_type_is_properly_overridden(tmp_dir, erepo_dir): def test_get_repo_rev(tmp_dir, erepo_dir): - with erepo_dir.chdir(): - erepo_dir.scm.checkout("new_branch", create_new=True) + with erepo_dir.chdir(), erepo_dir.branch("branch", new=True): erepo_dir.dvc_gen("file", "contents", commit="create file on branch") - erepo_dir.scm.checkout("master") - - Repo.get(fspath(erepo_dir), "file", "file_imported", rev="new_branch") + Repo.get(fspath(erepo_dir), "file", "file_imported", rev="branch") assert (tmp_dir / "file_imported").read_text() == "contents" @@ -159,11 +156,10 @@ def test_get_to_dir(tmp_dir, erepo_dir, dname): def test_get_from_non_dvc_master(tmp_dir, erepo_dir, caplog): with erepo_dir.chdir(): - erepo_dir.scm.checkout("new_branch", create_new=True) - erepo_dir.scm_gen( - {"some_file": "some_contents"}, commit="create some file" - ) - erepo_dir.scm.checkout("master") + with erepo_dir.branch("branch", new=True): + erepo_dir.scm_gen( + {"some_file": "some_contents"}, commit="create some file" + ) erepo_dir.dvc.scm.repo.index.remove([".dvc"], r=True) erepo_dir.dvc.scm.commit("remove .dvc") @@ -175,7 +171,7 @@ def test_get_from_non_dvc_master(tmp_dir, erepo_dir, caplog): caplog.clear() dst = "file_imported" with caplog.at_level(logging.INFO, logger="dvc"): - Repo.get(fspath(erepo_dir), "some_file", out=dst, rev="new_branch") + Repo.get(fspath(erepo_dir), "some_file", out=dst, rev="branch") assert caplog.text == "" assert (tmp_dir / dst).read_text() == "some_contents" diff --git a/tests/func/test_ignore.py b/tests/func/test_ignore.py index 2ba0d485a..ab1d4e5b7 100644 --- a/tests/func/test_ignore.py +++ b/tests/func/test_ignore.py @@ -107,10 +107,9 @@ def test_ignore_collecting_dvcignores(tmp_dir, dvc, dname): def test_ignore_on_branch(tmp_dir, scm, dvc): tmp_dir.scm_gen({"foo": "foo", "bar": "bar"}, commit="add files") - scm.checkout("branch", create_new=True) - tmp_dir.scm_gen(DvcIgnore.DVCIGNORE_FILE, "foo", commit="add ignore") + with tmp_dir.branch("branch", new=True): + tmp_dir.scm_gen(DvcIgnore.DVCIGNORE_FILE, "foo", commit="add ignore") - scm.checkout("master") assert _files_set(".", dvc.tree) == {"./foo", "./bar"} dvc.tree = scm.get_tree("branch") diff --git a/tests/func/test_import.py b/tests/func/test_import.py index 93ba8a223..0fab37629 100644 --- a/tests/func/test_import.py +++ b/tests/func/test_import.py @@ -90,12 +90,10 @@ def test_import_non_cached(erepo_dir, tmp_dir, dvc, scm): def test_import_rev(tmp_dir, scm, dvc, erepo_dir): - with erepo_dir.chdir(): - erepo_dir.scm.checkout("new_branch", create_new=True) + with erepo_dir.chdir(), erepo_dir.branch("branch", new=True): erepo_dir.dvc_gen("foo", "foo content", commit="create foo on branch") - erepo_dir.scm.checkout("master") - dvc.imp(fspath(erepo_dir), "foo", "foo_imported", rev="new_branch") + dvc.imp(fspath(erepo_dir), "foo", "foo_imported", rev="branch") assert (tmp_dir / "foo_imported").read_text() == "foo content" assert scm.repo.git.check_ignore("foo_imported") @@ -188,12 +186,13 @@ def test_import_to_dir(dname, tmp_dir, dvc, erepo_dir): def test_pull_non_workspace(tmp_dir, scm, dvc, erepo_dir): with erepo_dir.chdir(): erepo_dir.dvc_gen("foo", "master content", commit="create foo") - erepo_dir.scm.checkout("new_branch", create_new=True) - erepo_dir.dvc_gen("foo", "branch content", commit="modify foo") - stage = dvc.imp(fspath(erepo_dir), "foo", "foo_imported", rev="new_branch") + with erepo_dir.branch("branch", new=True): + erepo_dir.dvc_gen("foo", "branch content", commit="modify foo") + + stage = dvc.imp(fspath(erepo_dir), "foo", "foo_imported", rev="branch") tmp_dir.scm_add([stage.relpath], commit="imported branch") - dvc.scm.tag("ref-to-branch") + scm.tag("ref-to-branch") # Overwrite via import dvc.imp(fspath(erepo_dir), "foo", "foo_imported", rev="master")