diff options
author | Matt Eaton <agnosticdev@gmail.com> | 2018-03-20 06:41:37 (GMT) |
---|---|---|
committer | Berker Peksag <berker.peksag@gmail.com> | 2018-03-20 06:41:37 (GMT) |
commit | 2cb4661707818cfd92556e7fdf9068a993577002 (patch) | |
tree | 0c3f6933e3e5117b5289845d998da35da46f8d72 | |
parent | 7389fd935c95b4b6f094312294e703ee0de18719 (diff) | |
download | cpython-2cb4661707818cfd92556e7fdf9068a993577002.zip cpython-2cb4661707818cfd92556e7fdf9068a993577002.tar.gz cpython-2cb4661707818cfd92556e7fdf9068a993577002.tar.bz2 |
bpo-33034: Improve exception message when cast fails for {Parse,Split}Result.port (GH-6078)
-rw-r--r-- | Lib/test/test_urlparse.py | 10 | ||||
-rw-r--r-- | Lib/urllib/parse.py | 6 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-03-11-08-44-12.bpo-33034.bpb23d.rst | 3 |
3 files changed, 18 insertions, 1 deletions
diff --git a/Lib/test/test_urlparse.py b/Lib/test/test_urlparse.py index ddee1c3..9d51217 100644 --- a/Lib/test/test_urlparse.py +++ b/Lib/test/test_urlparse.py @@ -936,6 +936,16 @@ class UrlParseTestCase(unittest.TestCase): self.assertEqual(p2.scheme, 'tel') self.assertEqual(p2.path, '+31641044153') + def test_port_casting_failure_message(self): + message = "Port could not be cast to integer value as 'oracle'" + p1 = urllib.parse.urlparse('http://Server=sde; Service=sde:oracle') + with self.assertRaisesRegex(ValueError, message): + p1.port + + p2 = urllib.parse.urlsplit('http://Server=sde; Service=sde:oracle') + with self.assertRaisesRegex(ValueError, message): + p2.port + def test_telurl_params(self): p1 = urllib.parse.urlparse('tel:123-4;phone-context=+1-650-516') self.assertEqual(p1.scheme, 'tel') diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 58460f9..3f8cfe5 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -166,7 +166,11 @@ class _NetlocResultMixinBase(object): def port(self): port = self._hostinfo[1] if port is not None: - port = int(port, 10) + try: + port = int(port, 10) + except ValueError: + message = f'Port could not be cast to integer value as {port!r}' + raise ValueError(message) from None if not ( 0 <= port <= 65535): raise ValueError("Port out of range 0-65535") return port diff --git a/Misc/NEWS.d/next/Library/2018-03-11-08-44-12.bpo-33034.bpb23d.rst b/Misc/NEWS.d/next/Library/2018-03-11-08-44-12.bpo-33034.bpb23d.rst new file mode 100644 index 0000000..c81683a --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-03-11-08-44-12.bpo-33034.bpb23d.rst @@ -0,0 +1,3 @@ +Providing an explicit error message when casting the port property to anything +that is not an integer value using ``urlparse()`` and ``urlsplit()``. +Patch by Matt Eaton. |