@@ -289,12 +289,12 @@ def setUp(self):
289
289
def http_server_with_basic_auth_handler (* args , ** kwargs ):
290
290
return BasicAuthHandler (* args , ** kwargs )
291
291
self .server = LoopbackHttpServerThread (http_server_with_basic_auth_handler )
292
+ self .addCleanup (self .server .stop )
292
293
self .server_url = 'http://127.0.0.1:%s' % self .server .port
293
294
self .server .start ()
294
295
self .server .ready .wait ()
295
296
296
297
def tearDown (self ):
297
- self .server .stop ()
298
298
super (BasicAuthTests , self ).tearDown ()
299
299
300
300
def test_basic_auth_success (self ):
@@ -438,17 +438,13 @@ class TestUrlopen(unittest.TestCase):
438
438
439
439
def setUp (self ):
440
440
super (TestUrlopen , self ).setUp ()
441
+
441
442
# Ignore proxies for localhost tests.
442
- self .old_environ = os .environ .copy ()
443
+ def restore_environ (old_environ ):
444
+ os .environ .clear ()
445
+ os .environ .update (old_environ )
446
+ self .addCleanup (restore_environ , os .environ .copy ())
443
447
os .environ ['NO_PROXY' ] = '*'
444
- self .server = None
445
-
446
- def tearDown (self ):
447
- if self .server is not None :
448
- self .server .stop ()
449
- os .environ .clear ()
450
- os .environ .update (self .old_environ )
451
- super (TestUrlopen , self ).tearDown ()
452
448
453
449
def urlopen (self , url , data = None , ** kwargs ):
454
450
l = []
@@ -469,6 +465,7 @@ def start_server(self, responses=None):
469
465
handler = GetRequestHandler (responses )
470
466
471
467
self .server = LoopbackHttpServerThread (handler )
468
+ self .addCleanup (self .server .stop )
472
469
self .server .start ()
473
470
self .server .ready .wait ()
474
471
port = self .server .port
@@ -592,7 +589,8 @@ def test_sending_headers(self):
592
589
handler = self .start_server ()
593
590
req = urllib .request .Request ("http://localhost:%s/" % handler .port ,
594
591
headers = {"Range" : "bytes=20-39" })
595
- urllib .request .urlopen (req )
592
+ with urllib .request .urlopen (req ):
593
+ pass
596
594
self .assertEqual (handler .headers_received ["Range" ], "bytes=20-39" )
597
595
598
596
def test_basic (self ):
@@ -608,22 +606,21 @@ def test_basic(self):
608
606
609
607
def test_info (self ):
610
608
handler = self .start_server ()
611
- try :
612
- open_url = urllib . request . urlopen (
613
- "http://localhost:%s" % handler . port )
609
+ open_url = urllib . request . urlopen (
610
+ "http://localhost:%s" % handler . port )
611
+ with open_url :
614
612
info_obj = open_url .info ()
615
- self .assertIsInstance (info_obj , email .message .Message ,
616
- "object returned by 'info' is not an "
617
- "instance of email.message.Message" )
618
- self .assertEqual (info_obj .get_content_subtype (), "plain" )
619
- finally :
620
- self .server .stop ()
613
+ self .assertIsInstance (info_obj , email .message .Message ,
614
+ "object returned by 'info' is not an "
615
+ "instance of email.message.Message" )
616
+ self .assertEqual (info_obj .get_content_subtype (), "plain" )
621
617
622
618
def test_geturl (self ):
623
619
# Make sure same URL as opened is returned by geturl.
624
620
handler = self .start_server ()
625
621
open_url = urllib .request .urlopen ("http://localhost:%s" % handler .port )
626
- url = open_url .geturl ()
622
+ with open_url :
623
+ url = open_url .geturl ()
627
624
self .assertEqual (url , "http://localhost:%s" % handler .port )
628
625
629
626
def test_iteration (self ):
0 commit comments