38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
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()
|