import unittest from tracker import TrackerError, resolve_provider # type: ignore[reportMissingImports] class ProviderResolutionTests(unittest.TestCase): def test_cli_provider_wins_over_environment_and_remote(self): self.assertEqual( resolve_provider( explicit="github", env={"TRACKER_PROVIDER": "gitlab"}, remote="https://gitea.example.com/team/repo.git", ), "github", ) def test_environment_provider_wins_over_remote(self): self.assertEqual( resolve_provider( env={"TRACKER_PROVIDER": "gitlab"}, remote="git@github.com:team/repo.git", ), "gitlab", ) def test_remote_provider_is_detected(self): self.assertEqual(resolve_provider(remote="git@gitea.example.com:team/repo.git"), "gitea") def test_unsupported_remote_is_structured_error(self): with self.assertRaises(TrackerError) as context: resolve_provider(remote="https://example.com/team/repo.git") self.assertEqual(context.exception.code, "provider_detection_failed") self.assertFalse(context.exception.retryable) if __name__ == "__main__": unittest.main()