feat: add provider-neutral tracker automation
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user