@@ -112,5 +112,57 @@ def test_object_issue(self):
112112 self .assertEqual (obj .head_ssh_url , None )
113113
114114
115+ class TestGiteaApiPullRequestUrlParsing (unittest .TestCase ):
116+ def test_get_host_owner_repo_number_https_with_port (self ):
117+ url = "https://git.example.com:3000/owner/repo/pulls/123"
118+ host , owner , repo , number = PullRequest .get_host_owner_repo_number (url )
119+ self .assertEqual (host , "https://git.example.com:3000" )
120+ self .assertEqual (owner , "owner" )
121+ self .assertEqual (repo , "repo" )
122+ self .assertEqual (number , 123 )
123+
124+ self .assertTupleEqual (
125+ PullRequest .get_owner_repo_number (url ),
126+ (owner , repo , number ),
127+ )
128+
129+ def test_get_host_owner_repo_number_https_without_port (self ):
130+ url = "https://git.example.com/owner/repo/pulls/456"
131+ host , owner , repo , number = PullRequest .get_host_owner_repo_number (url )
132+ self .assertEqual (host , "https://git.example.com" )
133+ self .assertEqual (owner , "owner" )
134+ self .assertEqual (repo , "repo" )
135+ self .assertEqual (number , 456 )
136+
137+ self .assertTupleEqual (
138+ PullRequest .get_owner_repo_number (url ),
139+ (owner , repo , number ),
140+ )
141+
142+ def test_get_host_owner_repo_number_issues_endpoint (self ):
143+ url = "https://git.example.com/owner/repo/issues/100"
144+ host , owner , repo , number = PullRequest .get_host_owner_repo_number (url )
145+ self .assertEqual (host , "https://git.example.com" )
146+ self .assertEqual (owner , "owner" )
147+ self .assertEqual (repo , "repo" )
148+ self .assertEqual (number , 100 )
149+
150+ self .assertTupleEqual (
151+ PullRequest .get_owner_repo_number (url ),
152+ (owner , repo , number ),
153+ )
154+
155+ def test_get_host_owner_repo_number_invalid_endpoint (self ):
156+ url = "https://git.example.com/owner/repo/commits/abc123"
157+ with self .assertRaises (ValueError ) as context :
158+ PullRequest .get_host_owner_repo_number (url )
159+ self .assertIn ("doesn't point to a pull request or an issue" , str (context .exception ))
160+
161+ def test_get_host_owner_repo_number_invalid_format (self ):
162+ url = "https://git.example.com/owner/repo"
163+ with self .assertRaises (ValueError ):
164+ PullRequest .get_host_owner_repo_number (url )
165+
166+
115167if __name__ == "__main__" :
116168 unittest .main ()
0 commit comments