PROTON-1853: [Python] Fix Url parsing to cope with '://' in path

Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/ccfd19ce
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/ccfd19ce
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/ccfd19ce

Branch: refs/heads/go1
Commit: ccfd19ce2a296482e1b8f9f378c8f90050048e76
Parents: 67d4d74
Author: Andrew Stitcher <astitc...@apache.org>
Authored: Tue Jun 12 15:00:56 2018 -0400
Committer: Andrew Stitcher <astitc...@apache.org>
Committed: Tue Jun 12 15:00:56 2018 -0400

----------------------------------------------------------------------
 python/proton/_url.py            |  6 ++++--
 tests/python/proton_tests/url.py | 11 +++++++----
 2 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccfd19ce/python/proton/_url.py
----------------------------------------------------------------------
diff --git a/python/proton/_url.py b/python/proton/_url.py
index 39cf480..c090106 100644
--- a/python/proton/_url.py
+++ b/python/proton/_url.py
@@ -103,8 +103,10 @@ class Url(object):
             self._query = url._query
             self._fragment = url._fragment
         elif url:
-            if not '://' in url:
-                url = '//' + url
+            if not url.startswith('//'):
+                p = url.partition(':')
+                if '/' in p[0] or not p[2].startswith('//'):
+                    url = '//' + url
             u = urlparse(url)
             if not u: raise ValueError("Invalid URL '%s'" % url)
             self.scheme = None if not u.scheme else u.scheme

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccfd19ce/tests/python/proton_tests/url.py
----------------------------------------------------------------------
diff --git a/tests/python/proton_tests/url.py b/tests/python/proton_tests/url.py
index 5b259c6..b44699a 100644
--- a/tests/python/proton_tests/url.py
+++ b/tests/python/proton_tests/url.py
@@ -54,10 +54,13 @@ class UrlTest(common.Test):
 
         # Expanding abbreviated url strings.
         for s, u in [
-                ("", "amqp://0.0.0.0:amqp"),
-                ("foo", "amqp://foo:amqp"),
-                (":1234", "amqp://0.0.0.0:1234"),
-                ("/path", "amqp://0.0.0.0:amqp/path")
+            ("", "amqp://0.0.0.0:amqp"),
+            ("foo", "amqp://foo:amqp"),
+            (":1234", "amqp://0.0.0.0:1234"),
+            ("/path", "amqp://0.0.0.0:amqp/path"),
+            ("user@host/topic://test", "amqp://user@host:amqp/topic://test"),
+            ("user@host:3456", "amqp://user@host:3456"),
+            ("user:pass@host/topic://test", 
"amqp://user:pass@host:amqp/topic://test")
         ]: self.assertEqual(str(Url(s)), u)
 
     def assertPort(self, port, portint, portstr):


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to