"""Fork URL resolution logic for `git-setup-remotes`.""" from __future__ import annotations from git_maintainer_tools import setup_remotes def test_cli_arg_wins(monkeypatch): monkeypatch.delenv("FORK_URL", raising=False) # Make helpers fail fast so we know we did not fall through. monkeypatch.setattr(setup_remotes.g, "remote_url", lambda _: None) assert ( setup_remotes.resolve_fork_url("git@host:x/y.git", "git@host:canon/z.git") == "git@host:x/y.git" ) def test_env_var_used_when_arg_missing(monkeypatch): monkeypatch.setenv("FORK_URL", "git@host:env/y.git") monkeypatch.setattr(setup_remotes.g, "remote_url", lambda _: None) assert ( setup_remotes.resolve_fork_url(None, "git@host:canon/z.git") == "git@host:env/y.git" ) def test_existing_fork_remote_used(monkeypatch): monkeypatch.delenv("FORK_URL", raising=False) def fake(name): return "git@host:existing/fork.git" if name == "fork" else None monkeypatch.setattr(setup_remotes.g, "remote_url", fake) assert ( setup_remotes.resolve_fork_url(None, "git@host:canon/z.git") == "git@host:existing/fork.git" ) def test_origin_reused_when_not_canonical(monkeypatch): monkeypatch.delenv("FORK_URL", raising=False) def fake(name): return {"origin": "git@host:user/fork.git"}.get(name) monkeypatch.setattr(setup_remotes.g, "remote_url", fake) assert ( setup_remotes.resolve_fork_url(None, "git@host:canon/z.git") == "git@host:user/fork.git" ) def test_origin_ignored_when_canonical(monkeypatch): monkeypatch.delenv("FORK_URL", raising=False) canonical = "git@host:canon/z.git" def fake(name): return {"origin": canonical}.get(name) monkeypatch.setattr(setup_remotes.g, "remote_url", fake) assert setup_remotes.resolve_fork_url(None, canonical) is None