summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Eaton <agnosticdev@gmail.com>2018-03-20 06:41:37 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2018-03-20 06:41:37 (GMT)
commit2cb4661707818cfd92556e7fdf9068a993577002 (patch)
tree0c3f6933e3e5117b5289845d998da35da46f8d72
parent7389fd935c95b4b6f094312294e703ee0de18719 (diff)
downloadcpython-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.py10
-rw-r--r--Lib/urllib/parse.py6
-rw-r--r--Misc/NEWS.d/next/Library/2018-03-11-08-44-12.bpo-33034.bpb23d.rst3
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.