[3.13] gh-71339: Use new assertion methods in the urllib tests (GH-129056) (GH-132499)

(cherry picked from commit f98b9b4cbb)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2025-05-22 11:40:19 +02:00 committed by GitHub
parent 34d3495f32
commit 6126b7cf88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 25 additions and 27 deletions

View file

@ -12,6 +12,7 @@
from test.support import os_helper
from test.support import socket_helper
from test.support import warnings_helper
from test.support.testcase import ExtraAssertions
import os
try:
import ssl
@ -139,7 +140,7 @@ def unfakeftp(self):
urllib.request.ftpwrapper = self._ftpwrapper_class
class urlopen_FileTests(unittest.TestCase):
class urlopen_FileTests(unittest.TestCase, ExtraAssertions):
"""Test urlopen() opening a temporary file.
Try to test as much functionality as possible so as to cut down on reliance
@ -169,9 +170,7 @@ def test_interface(self):
# Make sure object returned by urlopen() has the specified methods
for attr in ("read", "readline", "readlines", "fileno",
"close", "info", "geturl", "getcode", "__iter__"):
self.assertTrue(hasattr(self.returned_obj, attr),
"object returned by urlopen() lacks %s attribute" %
attr)
self.assertHasAttr(self.returned_obj, attr)
def test_read(self):
self.assertEqual(self.text, self.returned_obj.read())
@ -601,7 +600,7 @@ def test_URLopener_deprecation(self):
urllib.request.URLopener()
class urlopen_DataTests(unittest.TestCase):
class urlopen_DataTests(unittest.TestCase, ExtraAssertions):
"""Test urlopen() opening a data URL."""
def setUp(self):
@ -640,9 +639,7 @@ def test_interface(self):
# Make sure object returned by urlopen() has the specified methods
for attr in ("read", "readline", "readlines",
"close", "info", "geturl", "getcode", "__iter__"):
self.assertTrue(hasattr(self.text_url_resp, attr),
"object returned by urlopen() lacks %s attribute" %
attr)
self.assertHasAttr(self.text_url_resp, attr)
def test_info(self):
self.assertIsInstance(self.text_url_resp.info(), email.message.Message)

View file

@ -3,6 +3,7 @@
from test.support import os_helper
from test.support import requires_subprocess
from test.support import warnings_helper
from test.support.testcase import ExtraAssertions
from test import test_urllib
from unittest import mock
@ -724,7 +725,7 @@ def sanepathname2url(path):
return urlpath
class HandlerTests(unittest.TestCase):
class HandlerTests(unittest.TestCase, ExtraAssertions):
def test_ftp(self):
class MockFTPWrapper:
@ -1179,15 +1180,15 @@ def test_errors(self):
r = MockResponse(200, "OK", {}, "", url)
newr = h.http_response(req, r)
self.assertIs(r, newr)
self.assertFalse(hasattr(o, "proto")) # o.error not called
self.assertNotHasAttr(o, "proto") # o.error not called
r = MockResponse(202, "Accepted", {}, "", url)
newr = h.http_response(req, r)
self.assertIs(r, newr)
self.assertFalse(hasattr(o, "proto")) # o.error not called
self.assertNotHasAttr(o, "proto") # o.error not called
r = MockResponse(206, "Partial content", {}, "", url)
newr = h.http_response(req, r)
self.assertIs(r, newr)
self.assertFalse(hasattr(o, "proto")) # o.error not called
self.assertNotHasAttr(o, "proto") # o.error not called
# anything else calls o.error (and MockOpener returns None, here)
r = MockResponse(502, "Bad gateway", {}, "", url)
self.assertIsNone(h.http_response(req, r))
@ -1402,7 +1403,7 @@ def http_open(self, req):
response = opener.open('http://example.com/')
expected = b'GET ' + result + b' '
request = handler.last_buf
self.assertTrue(request.startswith(expected), repr(request))
self.assertStartsWith(request, expected)
def test_redirect_head_request(self):
from_url = "http://example.com/a.html"
@ -1833,7 +1834,7 @@ def test_invalid_closed(self):
self.assertTrue(conn.fakesock.closed, "Connection not closed")
class MiscTests(unittest.TestCase):
class MiscTests(unittest.TestCase, ExtraAssertions):
def opener_has_handler(self, opener, handler_class):
self.assertTrue(any(h.__class__ == handler_class
@ -1892,9 +1893,9 @@ def test_HTTPError_interface(self):
url = code = fp = None
hdrs = 'Content-Length: 42'
err = urllib.error.HTTPError(url, code, msg, hdrs, fp)
self.assertTrue(hasattr(err, 'reason'))
self.assertHasAttr(err, 'reason')
self.assertEqual(err.reason, 'something bad happened')
self.assertTrue(hasattr(err, 'headers'))
self.assertHasAttr(err, 'headers')
self.assertEqual(err.headers, 'Content-Length: 42')
expected_errmsg = 'HTTP Error %s: %s' % (err.code, err.msg)
self.assertEqual(str(err), expected_errmsg)

View file

@ -11,6 +11,7 @@
from test import support
from test.support import hashlib_helper
from test.support import threading_helper
from test.support.testcase import ExtraAssertions
try:
import ssl
@ -442,7 +443,7 @@ def log_message(self, *args):
return FakeHTTPRequestHandler
class TestUrlopen(unittest.TestCase):
class TestUrlopen(unittest.TestCase, ExtraAssertions):
"""Tests urllib.request.urlopen using the network.
These tests are not exhaustive. Assuming that testing using files does a
@ -606,8 +607,7 @@ def test_basic(self):
handler = self.start_server()
with urllib.request.urlopen("http://localhost:%s" % handler.port) as open_url:
for attr in ("read", "close", "info", "geturl"):
self.assertTrue(hasattr(open_url, attr), "object returned from "
"urlopen lacks the %s attribute" % attr)
self.assertHasAttr(open_url, attr)
self.assertTrue(open_url.read(), "calling 'read' failed")
def test_info(self):

View file

@ -2,6 +2,7 @@
from test import support
from test.support import os_helper
from test.support import socket_helper
from test.support.testcase import ExtraAssertions
import contextlib
import socket
@ -34,7 +35,7 @@ def testURLread(self):
f.read()
class urlopenNetworkTests(unittest.TestCase):
class urlopenNetworkTests(unittest.TestCase, ExtraAssertions):
"""Tests urllib.request.urlopen using the network.
These tests are not exhaustive. Assuming that testing using files does a
@ -70,8 +71,7 @@ def test_basic(self):
with self.urlopen(self.url) as open_url:
for attr in ("read", "readline", "readlines", "fileno", "close",
"info", "geturl"):
self.assertTrue(hasattr(open_url, attr), "object returned from "
"urlopen lacks the %s attribute" % attr)
self.assertHasAttr(open_url, attr)
self.assertTrue(open_url.read(), "calling 'read' failed")
def test_readlines(self):

View file

@ -2,6 +2,7 @@
import unicodedata
import unittest
import urllib.parse
from test.support.testcase import ExtraAssertions
RFC1808_BASE = "http://a/b/c/d;p?q#f"
RFC2396_BASE = "http://a/b/c/d;p?q"
@ -101,7 +102,7 @@
(b"%81=%A9", {b'\x81': [b'\xa9']}),
]
class UrlParseTestCase(unittest.TestCase):
class UrlParseTestCase(unittest.TestCase, ExtraAssertions):
def checkRoundtrips(self, url, parsed, split, url2=None):
if url2 is None:
@ -1033,14 +1034,13 @@ def test_parse_fragments(self):
with self.subTest(url=url, function=func):
result = func(url, allow_fragments=False)
self.assertEqual(result.fragment, "")
self.assertTrue(
getattr(result, attr).endswith("#" + expected_frag))
self.assertEndsWith(getattr(result, attr),
"#" + expected_frag)
self.assertEqual(func(url, "", False).fragment, "")
result = func(url, allow_fragments=True)
self.assertEqual(result.fragment, expected_frag)
self.assertFalse(
getattr(result, attr).endswith(expected_frag))
self.assertNotEndsWith(getattr(result, attr), expected_frag)
self.assertEqual(func(url, "", True).fragment,
expected_frag)
self.assertEqual(func(url).fragment, expected_frag)