Skip to content

Commit 8734b59

Browse files
committed
Add EnvironmentVarGuard for test_urllib, test_urllib2.py, urllib2_localnet.py
1 parent a15ae90 commit 8734b59

File tree

3 files changed

+42
-48
lines changed

3 files changed

+42
-48
lines changed

Lib/test/test_urllib.py

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -258,34 +258,31 @@ class ProxyTests_withOrderedEnv(unittest.TestCase):
258258

259259
def setUp(self):
260260
# We need to test conditions, where variable order _is_ significant
261-
self._saved_env = os.environ
262-
# Monkey patch os.environ, start with empty fake environment
263-
os.environ = collections.OrderedDict()
264-
265-
def tearDown(self):
266-
os.environ = self._saved_env
261+
self.env = self.enterContext(os_helper.EnvironmentVarGuard())
262+
# Start with empty fake environment
263+
self.env.clear()
267264

268265
def test_getproxies_environment_prefer_lowercase(self):
269266
# Test lowercase preference with removal
270-
os.environ['no_proxy'] = ''
271-
os.environ['No_Proxy'] = 'localhost'
267+
self.env['no_proxy'] = ''
268+
self.env['No_Proxy'] = 'localhost'
272269
self.assertFalse(urllib.request.proxy_bypass_environment('localhost'))
273270
self.assertFalse(urllib.request.proxy_bypass_environment('arbitrary'))
274-
os.environ['http_proxy'] = ''
275-
os.environ['HTTP_PROXY'] = 'http://somewhere:3128'
271+
self.env['http_proxy'] = ''
272+
self.env['HTTP_PROXY'] = 'http://somewhere:3128'
276273
proxies = urllib.request.getproxies_environment()
277274
self.assertEqual({}, proxies)
278275
# Test lowercase preference of proxy bypass and correct matching including ports
279-
os.environ['no_proxy'] = 'localhost, noproxy.com, my.proxy:1234'
280-
os.environ['No_Proxy'] = 'xyz.com'
276+
self.env['no_proxy'] = 'localhost, noproxy.com, my.proxy:1234'
277+
self.env['No_Proxy'] = 'xyz.com'
281278
self.assertTrue(urllib.request.proxy_bypass_environment('localhost'))
282279
self.assertTrue(urllib.request.proxy_bypass_environment('noproxy.com:5678'))
283280
self.assertTrue(urllib.request.proxy_bypass_environment('my.proxy:1234'))
284281
self.assertFalse(urllib.request.proxy_bypass_environment('my.proxy'))
285282
self.assertFalse(urllib.request.proxy_bypass_environment('arbitrary'))
286283
# Test lowercase preference with replacement
287-
os.environ['http_proxy'] = 'http://somewhere:3128'
288-
os.environ['Http_Proxy'] = 'http://somewhereelse:3128'
284+
self.env['http_proxy'] = 'http://somewhere:3128'
285+
self.env['Http_Proxy'] = 'http://somewhereelse:3128'
289286
proxies = urllib.request.getproxies_environment()
290287
self.assertEqual('http://somewhere:3128', proxies['http'])
291288

Lib/test/test_urllib2.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,30 +1444,32 @@ def test_proxy(self):
14441444
[tup[0:2] for tup in o.calls])
14451445

14461446
def test_proxy_no_proxy(self):
1447-
os.environ['no_proxy'] = 'python.org'
1448-
o = OpenerDirector()
1449-
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com"))
1450-
o.add_handler(ph)
1451-
req = Request("http://www.perl.org/")
1452-
self.assertEqual(req.host, "www.perl.org")
1453-
o.open(req)
1454-
self.assertEqual(req.host, "proxy.example.com")
1455-
req = Request("http://www.python.org")
1456-
self.assertEqual(req.host, "www.python.org")
1457-
o.open(req)
1458-
self.assertEqual(req.host, "www.python.org")
1459-
del os.environ['no_proxy']
1447+
with os_helper.EnvironmentVarGuard() as env:
1448+
env['no_proxy'] = 'python.org'
1449+
o = OpenerDirector()
1450+
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com"))
1451+
o.add_handler(ph)
1452+
req = Request("http://www.perl.org/")
1453+
self.assertEqual(req.host, "www.perl.org")
1454+
o.open(req)
1455+
self.assertEqual(req.host, "proxy.example.com")
1456+
req = Request("http://www.python.org")
1457+
self.assertEqual(req.host, "www.python.org")
1458+
o.open(req)
1459+
self.assertEqual(req.host, "www.python.org")
1460+
del env['no_proxy']
14601461

14611462
def test_proxy_no_proxy_all(self):
1462-
os.environ['no_proxy'] = '*'
1463-
o = OpenerDirector()
1464-
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com"))
1465-
o.add_handler(ph)
1466-
req = Request("http://www.python.org")
1467-
self.assertEqual(req.host, "www.python.org")
1468-
o.open(req)
1469-
self.assertEqual(req.host, "www.python.org")
1470-
del os.environ['no_proxy']
1463+
with os_helper.EnvironmentVarGuard() as env:
1464+
env['no_proxy'] = '*'
1465+
o = OpenerDirector()
1466+
ph = urllib.request.ProxyHandler(dict(http="proxy.example.com"))
1467+
o.add_handler(ph)
1468+
req = Request("http://www.python.org")
1469+
self.assertEqual(req.host, "www.python.org")
1470+
o.open(req)
1471+
self.assertEqual(req.host, "www.python.org")
1472+
del env['no_proxy']
14711473

14721474
def test_proxy_https(self):
14731475
o = OpenerDirector()

Lib/test/test_urllib2_localnet.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from test import support
1212
from test.support import hashlib_helper
1313
from test.support import threading_helper
14+
from test.support import os_helper
1415

1516
try:
1617
import ssl
@@ -330,12 +331,9 @@ class ProxyAuthTests(unittest.TestCase):
330331
def setUp(self):
331332
super(ProxyAuthTests, self).setUp()
332333
# Ignore proxy bypass settings in the environment.
333-
def restore_environ(old_environ):
334-
os.environ.clear()
335-
os.environ.update(old_environ)
336-
self.addCleanup(restore_environ, os.environ.copy())
337-
os.environ['NO_PROXY'] = ''
338-
os.environ['no_proxy'] = ''
334+
env = self.enterContext(os_helper.EnvironmentVarGuard())
335+
env['NO_PROXY'] = ''
336+
env['no_proxy'] = ''
339337

340338
self.digest_auth_handler = DigestAuthHandler()
341339
self.digest_auth_handler.set_users({self.USER: self.PASSWD})
@@ -456,12 +454,9 @@ def setUp(self):
456454
self.addCleanup(urllib.request.urlcleanup)
457455

458456
# Ignore proxies for localhost tests.
459-
def restore_environ(old_environ):
460-
os.environ.clear()
461-
os.environ.update(old_environ)
462-
self.addCleanup(restore_environ, os.environ.copy())
463-
os.environ['NO_PROXY'] = '*'
464-
os.environ['no_proxy'] = '*'
457+
env = self.enterContext(os_helper.EnvironmentVarGuard())
458+
env['NO_PROXY'] = '*'
459+
env['no_proxy'] = '*'
465460

466461
def urlopen(self, url, data=None, **kwargs):
467462
l = []

0 commit comments

Comments
 (0)