summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_optparse.py20
-rw-r--r--Lib/test/test_posixpath.py7
-rw-r--r--Lib/test/test_site.py2
-rw-r--r--Lib/test/test_tempfile.py9
-rw-r--r--Lib/test/test_urllib.py24
-rw-r--r--Lib/test/test_xmlrpc.py38
6 files changed, 36 insertions, 64 deletions
diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py
index be2867c..5cf77e4 100644
--- a/Lib/test/test_optparse.py
+++ b/Lib/test/test_optparse.py
@@ -1448,15 +1448,9 @@ class TestHelp(BaseTest):
# we must restore its original value -- otherwise, this test
# screws things up for other tests when it's part of the Python
# test suite.
- orig_columns = os.environ.get('COLUMNS')
- os.environ['COLUMNS'] = str(columns)
- try:
+ with test_support.EnvironmentVarGuard() as env:
+ env.set('COLUMNS', str(columns))
return InterceptingOptionParser(option_list=options)
- finally:
- if orig_columns is None:
- del os.environ['COLUMNS']
- else:
- os.environ['COLUMNS'] = orig_columns
def assertHelpEquals(self, expected_output):
save_argv = sys.argv[:]
@@ -1479,16 +1473,10 @@ class TestHelp(BaseTest):
self.assertHelpEquals(_expected_help_long_opts_first)
def test_help_title_formatter(self):
- save = os.environ.get("COLUMNS")
- try:
- os.environ["COLUMNS"] = "80"
+ with test_support.EnvironmentVarGuard() as env:
+ env.set("COLUMNS", "80")
self.parser.formatter = TitledHelpFormatter()
self.assertHelpEquals(_expected_help_title_formatter)
- finally:
- if save is not None:
- os.environ["COLUMNS"] = save
- else:
- del os.environ["COLUMNS"]
def test_wrap_columns(self):
# Ensure that wrapping respects $COLUMNS environment variable.
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index 7de94e7..17be3d2 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -419,10 +419,9 @@ class PosixPathTest(unittest.TestCase):
self.assert_(isinstance(posixpath.expanduser(b"~root/"), bytes))
self.assert_(isinstance(posixpath.expanduser(b"~foo/"), bytes))
- orig_home = os.environ['HOME']
- os.environ['HOME'] = '/'
- self.assertEqual(posixpath.expanduser("~"), "/")
- os.environ['HOME'] = orig_home
+ with test_support.EnvironmentVarGuard() as env:
+ env.set('HOME', '/')
+ self.assertEqual(posixpath.expanduser("~"), "/")
self.assertRaises(TypeError, posixpath.expanduser)
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
index 1bf143a..8d101b3 100644
--- a/Lib/test/test_site.py
+++ b/Lib/test/test_site.py
@@ -5,7 +5,7 @@ executing have not been removed.
"""
import unittest
-from test.support import run_unittest, TESTFN
+from test.support import run_unittest, TESTFN, EnvironmentVarGuard
import builtins
import os
import sys
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index 27a2183..844e608 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -149,13 +149,11 @@ class test__candidate_tempdir_list(TC):
# _candidate_tempdir_list contains the expected directories
# Make sure the interesting environment variables are all set.
- added = []
- try:
+ with test_support.EnvironmentVarGuard() as env:
for envname in 'TMPDIR', 'TEMP', 'TMP':
dirname = os.getenv(envname)
if not dirname:
- os.environ[envname] = os.path.abspath(envname)
- added.append(envname)
+ env.set(envname, os.path.abspath(envname))
cand = tempfile._candidate_tempdir_list()
@@ -173,9 +171,6 @@ class test__candidate_tempdir_list(TC):
# Not practical to try to verify the presence of OS-specific
# paths in this list.
- finally:
- for p in added:
- del os.environ[p]
test_classes.append(test__candidate_tempdir_list)
diff --git a/Lib/test/test_urllib.py b/Lib/test/test_urllib.py
index c16f30d..d616eb1 100644
--- a/Lib/test/test_urllib.py
+++ b/Lib/test/test_urllib.py
@@ -117,27 +117,19 @@ class urlopen_FileTests(unittest.TestCase):
class ProxyTests(unittest.TestCase):
def setUp(self):
- # Save all proxy related env vars
- self._saved_environ = dict([(k, v) for k, v in os.environ.items()
- if k.lower().find('proxy') >= 0])
- # Delete all proxy related env vars
- for k in self._saved_environ:
- del os.environ[k]
+ # Records changes to env vars
+ self.env = support.EnvironmentVarGuard()
def tearDown(self):
# Restore all proxy related env vars
- for k, v in self._saved_environ.items():
- os.environ[k] = v
+ self.env.__exit__()
+ del self.env
def test_getproxies_environment_keep_no_proxies(self):
- try:
- os.environ['NO_PROXY'] = 'localhost'
- proxies = urllib.request.getproxies_environment()
- # getproxies_environment use lowered case truncated (no '_proxy') keys
- self.assertEquals('localhost', proxies['no'])
- finally:
- # The old value will be restored by tearDown, if applicable.
- del os.environ['NO_PROXY']
+ self.env.set('NO_PROXY', 'localhost')
+ proxies = urllib.request.getproxies_environment()
+ # getproxies_environment use lowered case truncated (no '_proxy') keys
+ self.assertEquals('localhost', proxies['no'])
class urlopen_HttpTests(unittest.TestCase):
diff --git a/Lib/test/test_xmlrpc.py b/Lib/test/test_xmlrpc.py
index 624793d..3734750 100644
--- a/Lib/test/test_xmlrpc.py
+++ b/Lib/test/test_xmlrpc.py
@@ -571,25 +571,25 @@ class CGIHandlerTestCase(unittest.TestCase):
self.cgi = None
def test_cgi_get(self):
- os.environ['REQUEST_METHOD'] = 'GET'
- # if the method is GET and no request_text is given, it runs handle_get
- # get sysout output
- tmp = sys.stdout
- sys.stdout = open(support.TESTFN, "w")
- self.cgi.handle_request()
- sys.stdout.close()
- sys.stdout = tmp
+ with support.EnvironmentVarGuard() as env:
+ env.set('REQUEST_METHOD', 'GET')
+ # if the method is GET and no request_text is given, it runs handle_get
+ # get sysout output
+ tmp = sys.stdout
+ sys.stdout = open(support.TESTFN, "w")
+ self.cgi.handle_request()
+ sys.stdout.close()
+ sys.stdout = tmp
- # parse Status header
- handle = open(support.TESTFN, "r").read()
- status = handle.split()[1]
- message = ' '.join(handle.split()[2:4])
+ # parse Status header
+ handle = open(support.TESTFN, "r").read()
+ status = handle.split()[1]
+ message = ' '.join(handle.split()[2:4])
- self.assertEqual(status, '400')
- self.assertEqual(message, 'Bad Request')
+ self.assertEqual(status, '400')
+ self.assertEqual(message, 'Bad Request')
- os.remove(support.TESTFN)
- os.environ['REQUEST_METHOD'] = ''
+ os.remove(support.TESTFN)
def test_cgi_xmlrpc_response(self):
data = """<?xml version='1.0'?>
@@ -612,11 +612,9 @@ class CGIHandlerTestCase(unittest.TestCase):
sys.stdin = open("xmldata.txt", "r")
sys.stdout = open(support.TESTFN, "w")
- os.environ['CONTENT_LENGTH'] = str(len(data))
- try:
+ with support.EnvironmentVarGuard() as env:
+ env.set('CONTENT_LENGTH', str(len(data)))
self.cgi.handle_request()
- finally:
- del os.environ['CONTENT_LENGTH']
sys.stdin.close()
sys.stdout.close()