From b525e18500885731f958bd4a0114f26cea336500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20D=C3=B6rwald?= Date: Sun, 26 Apr 2009 21:39:21 +0000 Subject: Merged revisions 71984 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r71984 | walter.doerwald | 2009-04-26 22:51:44 +0200 (So, 26 Apr 2009) | 2 lines Use test.test_support.EnvironmentVarGuard where tests change environment vars. ........ --- Lib/test/test_optparse.py | 20 ++++---------------- Lib/test/test_posixpath.py | 7 +++---- Lib/test/test_site.py | 2 +- Lib/test/test_tempfile.py | 9 ++------- Lib/test/test_urllib.py | 24 ++++++++---------------- Lib/test/test_xmlrpc.py | 38 ++++++++++++++++++-------------------- 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 = """ @@ -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() -- cgit v0.12