gh-106693: Revert "Explicitly mark ob_sval as unsigned char to avoid … · python/cpython@f0daba1

GitHub

@@ -646,23 +646,26 @@ def test_group_without_user_agent(self):

646646)

647647classBaseLocalNetworkTestCase:

648648649-@classmethod

650-defsetUpClass(cls):

649+defsetUp(self):

651650# clear _opener global variable

652-cls.addClassCleanup(urllib.request.urlcleanup)

651+self.addCleanup(urllib.request.urlcleanup)

653652654-cls.server=HTTPServer((socket_helper.HOST, 0), cls.RobotHandler)

655-cls.addClassCleanup(cls.server.server_close)

653+self.server=HTTPServer((socket_helper.HOST, 0), self.RobotHandler)

656654657-t=threading.Thread(

655+self.t=threading.Thread(

658656name='HTTPServer serving',

659-target=cls.server.serve_forever,

657+target=self.server.serve_forever,

660658# Short poll interval to make the test finish quickly.

661659# Time between requests is short enough that we won't wake

662660# up spuriously too many times.

663661kwargs={'poll_interval':0.01})

664-cls.enterClassContext(threading_helper.start_threads([t]))

665-cls.addClassCleanup(cls.server.shutdown)

662+self.t.daemon=True# In case this function raises.

663+self.t.start()

664+665+deftearDown(self):

666+self.server.shutdown()

667+self.t.join()

668+self.server.server_close()

666669667670668671SAMPLE_ROBOTS_TXT=b'''\

@@ -684,6 +687,7 @@ def do_GET(self):

684687deflog_message(self, format, *args):

685688pass

686689690+@threading_helper.reap_threads

687691deftestRead(self):

688692# Test that reading a weird robots.txt doesn't fail.

689693addr=self.server.server_address

@@ -705,62 +709,24 @@ def testRead(self):

705709self.assertFalse(parser.can_fetch(agent, url+'/%2F[spam]/path'))

706710707711708-classHttpErrorsTestCase(BaseLocalNetworkTestCase, unittest.TestCase):

712+classPasswordProtectedSiteTestCase(BaseLocalNetworkTestCase, unittest.TestCase):

709713classRobotHandler(BaseHTTPRequestHandler):

710714711715defdo_GET(self):

712-self.send_error(self.server.return_code)

716+self.send_error(403, "Forbidden access")

713717714718deflog_message(self, format, *args):

715719pass

716720717-defsetUp(self):

718-# Make sure that a valid code is set in the test.

719-self.server.return_code=None

720-721+@threading_helper.reap_threads

721722deftestPasswordProtectedSite(self):

722-self.server.return_code=403

723723addr=self.server.server_address

724724url='http://'+socket_helper.HOST+':'+str(addr[1])

725725robots_url=url+"/robots.txt"

726726parser=urllib.robotparser.RobotFileParser()

727727parser.set_url(url)

728728parser.read()

729729self.assertFalse(parser.can_fetch("*", robots_url))

730-self.assertFalse(parser.can_fetch("*", url+'/some/file.html'))

731-732-deftestNotFound(self):

733-self.server.return_code=404

734-addr=self.server.server_address

735-url=f'http://{socket_helper.HOST}:{addr[1]}'

736-robots_url=url+"/robots.txt"

737-parser=urllib.robotparser.RobotFileParser()

738-parser.set_url(url)

739-parser.read()

740-self.assertTrue(parser.can_fetch("*", robots_url))

741-self.assertTrue(parser.can_fetch("*", url+'/path/file.html'))

742-743-deftestTeapot(self):

744-self.server.return_code=418

745-addr=self.server.server_address

746-url=f'http://{socket_helper.HOST}:{addr[1]}'

747-robots_url=url+"/robots.txt"

748-parser=urllib.robotparser.RobotFileParser()

749-parser.set_url(url)

750-parser.read()

751-self.assertTrue(parser.can_fetch("*", robots_url))

752-self.assertTrue(parser.can_fetch("*", url+'/pot-1?milk-type=Cream'))

753-754-deftestServiceUnavailable(self):

755-self.server.return_code=503

756-addr=self.server.server_address

757-url=f'http://{socket_helper.HOST}:{addr[1]}'

758-robots_url=url+"/robots.txt"

759-parser=urllib.robotparser.RobotFileParser()

760-parser.set_url(url)

761-parser.read()

762-self.assertFalse(parser.can_fetch("*", robots_url))

763-self.assertFalse(parser.can_fetch("*", url+'/path/file.html'))

[email protected]_working_socket()