https://github.com/python/cpython/commit/b8ec956716c183430a93929e6415ceed74089af1
commit: b8ec956716c183430a93929e6415ceed74089af1
branch: main
author: Ajob Kustra <[email protected]>
committer: tomasr8 <[email protected]>
date: 2026-07-19T12:29:17Z
summary:
urllib: Add tests for HTTP errors to complete coverage (#154102)
* add test for httperror props such as reason and fp, and stringified urlerror
test
* rm unnecessary 'reason' attr test, change url to filename and add reason and
headers attr
* separate file pointer test
* prevent resource warning, close httperror exception
* exc > err
files:
M Lib/test/test_urllib.py
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index 2dd739b77b8e4d..1e5f79998e7cab 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -467,6 +467,25 @@ def test_redirect_limit_independent(self):
finally:
self.unfakehttp()
+ def test_http_error_attribute_values(self):
+ hdrs = {
+ "Authorization": "Bearer foobar",
+ "Accept": "application/json"
+ }
+ err = urllib.error.HTTPError("http://something", 404, "foo", hdrs,
None)
+ self.assertEqual(err.filename, "http://something")
+ self.assertEqual(err.code, 404)
+ self.assertEqual(err.msg, "foo")
+ self.assertEqual(err.reason, "foo")
+ self.assertEqual(err.hdrs, hdrs)
+ self.assertEqual(err.headers, hdrs)
+ err.close()
+
+ def test_http_error_default_fp(self):
+ err = urllib.error.HTTPError("http://something", 404, "foo", {}, None)
+ self.assertIsInstance(err.fp, io.BytesIO)
+ err.close()
+
def test_empty_socket(self):
# urlopen() raises OSError if the underlying socket does not send any
# data. (#1680230)
@@ -513,6 +532,11 @@ def test_ftp_nonexisting(self):
self.assertFalse(e.exception.filename)
self.assertTrue(e.exception.reason)
+ def test_url_error_stringified(self):
+ reason = 'sixseven'
+ err = urllib.error.URLError(reason)
+ self.assertEqual(str(err), f'<urlopen error {reason}>')
+
class urlopen_DataTests(unittest.TestCase):
"""Test urlopen() opening a data URL."""
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]