Description: Raise better error when path subsegments lack =.
Origin: commit, revision id: jelmer@jelmer.uk-20190216025726-o88of3wtukmeou32
Author: Jelmer Vernooĳ <jelmer@jelmer.uk>
Bug: https://launchpad.net/bugs/891483
Last-Update: 2019-02-16
Applied-Upstream: no
X-Bzr-Revision-Id: jelmer@jelmer.uk-20190216025726-o88of3wtukmeou32

=== modified file 'breezy/tests/test_urlutils.py'
--- old/breezy/tests/test_urlutils.py	2018-11-23 03:06:01 +0000
+++ new/breezy/tests/test_urlutils.py	2019-02-16 02:57:26 +0000
@@ -599,6 +599,8 @@
         self.assertEqual(("foo/base,key1=val1/other/elements",
                           {"key2": "val2"}), split_segment_parameters(
             "foo/base,key1=val1/other/elements,key2=val2"))
+        self.assertRaises(urlutils.InvalidURL, split_segment_parameters,
+                          "foo/base,key1")
         # TODO: Check full URLs as well as relative references
 
     def test_win32_strip_local_trailing_slash(self):

=== modified file 'breezy/urlutils.py'
--- old/breezy/urlutils.py	2018-11-12 01:41:38 +0000
+++ new/breezy/urlutils.py	2019-02-16 02:57:26 +0000
@@ -561,7 +561,10 @@
     (base_url, subsegments) = split_segment_parameters_raw(url)
     parameters = {}
     for subsegment in subsegments:
-        (key, value) = subsegment.split("=", 1)
+        try:
+            (key, value) = subsegment.split("=", 1)
+        except ValueError:
+            raise InvalidURL(url, "missing = in subsegment")
         if not isinstance(key, str):
             raise TypeError(key)
         if not isinstance(value, str):

