Skip to content

Commit 911dd2c

Browse files
committed
cmd/git(test[GitRemoteManager.add]): Add test for fetch/track/master params
why: Commit 5c00880 wired fetch/track/master params, but had no test. what: - Add RemoteAddParamFixture NamedTuple with 3 test cases - Add CreateRepoPytestFixtureFn import for remote repo fixture - Test fetch=True, track="master", master="master" separately
1 parent 8a95658 commit 911dd2c

1 file changed

Lines changed: 72 additions & 0 deletions

File tree

tests/cmd/test_git.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from libvcs.cmd import git
1313

1414
if t.TYPE_CHECKING:
15+
from libvcs.pytest_plugin import CreateRepoPytestFixtureFn
1516
from libvcs.sync.git import GitSync
1617

1718

@@ -906,6 +907,77 @@ def test_remote_manager_show_no_query_remotes(
906907
assert "origin" in result.lower() or "fetch" in result.lower()
907908

908909

910+
class RemoteAddParamFixture(t.NamedTuple):
911+
"""Test fixture for GitRemoteManager.add() parameter wiring."""
912+
913+
test_id: str
914+
fetch: bool | None
915+
track: str | None
916+
master: str | None
917+
918+
919+
REMOTE_ADD_PARAM_FIXTURES: list[RemoteAddParamFixture] = [
920+
RemoteAddParamFixture(
921+
test_id="fetch-only",
922+
fetch=True,
923+
track=None,
924+
master=None,
925+
),
926+
RemoteAddParamFixture(
927+
test_id="track-branch",
928+
fetch=None,
929+
track="master",
930+
master=None,
931+
),
932+
RemoteAddParamFixture(
933+
test_id="master-branch",
934+
fetch=None,
935+
track=None,
936+
master="master",
937+
),
938+
# Note: fetch=True with track requires the tracked branch to exist.
939+
# We test track and master separately since their flag wiring is independent.
940+
]
941+
942+
943+
@pytest.mark.parametrize(
944+
list(RemoteAddParamFixture._fields),
945+
REMOTE_ADD_PARAM_FIXTURES,
946+
ids=[test.test_id for test in REMOTE_ADD_PARAM_FIXTURES],
947+
)
948+
def test_remote_manager_add_params(
949+
git_repo: GitSync,
950+
create_git_remote_repo: CreateRepoPytestFixtureFn,
951+
test_id: str,
952+
fetch: bool | None,
953+
track: str | None,
954+
master: str | None,
955+
) -> None:
956+
"""Test GitRemoteManager.add() parameter wiring.
957+
958+
Verifies commit 5c00880: fetch, track, master params were not wired.
959+
"""
960+
remote_repo = create_git_remote_repo()
961+
remote_name = f"test_remote_{test_id.replace('-', '_')}"
962+
963+
# Add remote with params - should not error
964+
result = git_repo.cmd.remotes.add(
965+
name=remote_name,
966+
url=f"file://{remote_repo}",
967+
fetch=fetch,
968+
track=track,
969+
master=master,
970+
)
971+
972+
# Should succeed (empty string or no fatal error)
973+
assert "fatal" not in result.lower()
974+
975+
# Verify remote was added
976+
remotes = git_repo.cmd.remotes.ls()
977+
remote_names = [r.remote_name for r in remotes]
978+
assert remote_name in remote_names
979+
980+
909981
# =============================================================================
910982
# GitTagCmd / GitTagManager Tests
911983
# =============================================================================

0 commit comments

Comments
 (0)