changeset 415:edaadbd99074

to be recognized port number in path to repository
author Junichi OKADOME <tome@tomesoft.net>
date Wed, 13 Jul 2011 17:51:16 +0900
parents 6867b01d1379
children 6a23158a4da4
files hggit/git_handler.py tests/test-url-parsing.py
diffstat 2 files changed, 30 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/hggit/git_handler.py	Thu Jun 23 11:29:30 2011 -0700
+++ b/hggit/git_handler.py	Wed Jul 13 17:51:16 2011 +0900
@@ -1058,11 +1058,20 @@
                 else:
                     hostpath_seper = '/'
 
+                port = None
                 host, path = hostpath.split(hostpath_seper, 1)
                 if hostpath_seper == '/':
                     transportpath = '/' + path
                 else:
-                    transportpath = path
-                return transport(host, thin_packs=False), transportpath
+                    # port number should be recognized
+                    m = re.match('^(?P<port>\d+)?(?P<path>.*)$', path)
+                    if m.group('port'):
+                        client.port = m.group('port')
+                        port = client.port
+                        transportpath = m.group('path')
+                    else:
+                        transportpath = path
+
+                return transport(host, thin_packs=False, port=port), transportpath
         # if its not git or git+ssh, try a local url..
         return client.SubprocessGitClient(thin_packs=False), uri
--- a/tests/test-url-parsing.py	Thu Jun 23 11:29:30 2011 -0700
+++ b/tests/test-url-parsing.py	Wed Jul 13 17:51:16 2011 +0900
@@ -50,13 +50,31 @@
         except AttributeError:
             self.assertEquals(client.host, 'github.com')
 
+    def test_ssh_github_style_slash_with_port(self):
+        url = "git+ssh://git@github.com:10022/webjam/webjam.git"
+        client, path = self.handler.get_transport_and_path(url)
+        self.assertEquals(path, '/webjam/webjam.git')
+        self.assertEquals(client.host, 'git@github.com')
+        self.assertEquals(client.port, '10022')
+
+    def test_gitdaemon_style_with_port(self):
+        url = "git://github.com:19418/webjam/webjam.git"
+        client, path = self.handler.get_transport_and_path(url)
+        self.assertEquals(path, '/webjam/webjam.git')
+        try:
+            self.assertEquals(client._host, 'github.com')
+        except AttributeError:
+            self.assertEquals(client.host, 'github.com')
+        self.assertEquals(client._port, '19418')
 
 if __name__ == '__main__':
     tc = TestUrlParsing()
     for test in ['test_ssh_github_style_slash',
                  'test_ssh_github_style_colon',
                  'test_ssh_heroku_style',
-                 'test_gitdaemon_style']:
+                 'test_gitdaemon_style',
+                 'test_ssh_github_style_slash_with_port',
+                 'test_gitdaemon_style_with_port']:
         tc.setUp()
         getattr(tc, test)()
         tc.tearDown()