From f0ef4e52bd96e82f990a51d8abcb54d2a5745ca0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Trifir=C3=B2?= Date: Fri, 13 May 2022 12:00:52 +0200 Subject: [PATCH] tests: add test_iter_remote_refs --- tests/test_git.py | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/tests/test_git.py b/tests/test_git.py index 04f0ce5c..b7ecf570 100644 --- a/tests/test_git.py +++ b/tests/test_git.py @@ -9,7 +9,12 @@ from pytest_test_utils import TempDirFactory, TmpDir from pytest_test_utils.matchers import Matcher -from scmrepo.exceptions import MergeConflictError, RevError, SCMError +from scmrepo.exceptions import ( + InvalidRemote, + MergeConflictError, + RevError, + SCMError, +) from scmrepo.git import Git # pylint: disable=redefined-outer-name,unused-argument,protected-access @@ -417,6 +422,44 @@ def test_fetch_refspecs( assert baz_rev == scm.get_ref("refs/foo/baz") +@pytest.mark.skip_git_backend("pygit2", "gitpython") +@pytest.mark.parametrize("use_url", [True, False]) +def test_iter_remote_refs( + tmp_dir: TmpDir, + scm: Git, + git: Git, + remote_git_dir: TmpDir, + tmp_dir_factory: TempDirFactory, + use_url: bool, +): + url = f"file://{remote_git_dir.resolve().as_posix()}" + + scm.gitpython.repo.create_remote("origin", url) + remote_scm = Git(remote_git_dir) + remote_git_dir.gen("file", "0") + remote_scm.add_commit("file", message="init") + remote_scm.branch("new-branch") + remote_scm.add_commit("file", message="bar") + remote_scm.add_commit("file", message="baz") + remote_scm.tag("a-tag") + + with pytest.raises(InvalidRemote): + set(git.iter_remote_refs("bad-remote")) + + with pytest.raises(InvalidRemote): + tmp_directory = tmp_dir_factory.mktemp("not_a_git_repo") + remote = f"file://{tmp_directory.as_posix()}" + set(git.iter_remote_refs(remote)) + + remote = url if use_url else "origin" + assert { + "refs/heads/master", + "HEAD", + "refs/heads/new-branch", + "refs/tags/a-tag", + } == set(git.iter_remote_refs(remote)) + + @pytest.mark.skip_git_backend("dulwich", "pygit2") def test_list_all_commits( tmp_dir: TmpDir, scm: Git, git: Git, matcher: Type[Matcher]