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.
........
This commit is contained in:
Walter Dörwald 2009-04-26 21:04:55 +00:00
parent 9a0517c2cc
commit 536120e34d
6 changed files with 36 additions and 56 deletions

View File

@ -1464,15 +1464,9 @@ class TestHelp(BaseTest):
# we must restore its original value -- otherwise, this test # we must restore its original value -- otherwise, this test
# screws things up for other tests when it's part of the Python # screws things up for other tests when it's part of the Python
# test suite. # test suite.
orig_columns = os.environ.get('COLUMNS') with test_support.EnvironmentVarGuard() as env:
os.environ['COLUMNS'] = str(columns) env.set('COLUMNS', str(columns))
try:
return InterceptingOptionParser(option_list=options) 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): def assertHelpEquals(self, expected_output):
if type(expected_output) is types.UnicodeType: if type(expected_output) is types.UnicodeType:
@ -1499,16 +1493,10 @@ class TestHelp(BaseTest):
self.assertHelpEquals(_expected_help_long_opts_first) self.assertHelpEquals(_expected_help_long_opts_first)
def test_help_title_formatter(self): def test_help_title_formatter(self):
save = os.environ.get("COLUMNS") with test_support.EnvironmentVarGuard() as env:
try: env.set("COLUMNS", "80")
os.environ["COLUMNS"] = "80"
self.parser.formatter = TitledHelpFormatter() self.parser.formatter = TitledHelpFormatter()
self.assertHelpEquals(_expected_help_title_formatter) 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): def test_wrap_columns(self):
# Ensure that wrapping respects $COLUMNS environment variable. # Ensure that wrapping respects $COLUMNS environment variable.

View File

@ -345,10 +345,9 @@ class PosixPathTest(unittest.TestCase):
self.assert_(isinstance(posixpath.expanduser("~root/"), basestring)) self.assert_(isinstance(posixpath.expanduser("~root/"), basestring))
self.assert_(isinstance(posixpath.expanduser("~foo/"), basestring)) self.assert_(isinstance(posixpath.expanduser("~foo/"), basestring))
orig_home = os.environ['HOME'] with test_support.EnvironmentVarGuard() as env:
os.environ['HOME'] = '/' env.set('HOME', '/')
self.assertEqual(posixpath.expanduser("~"), "/") self.assertEqual(posixpath.expanduser("~"), "/")
os.environ['HOME'] = orig_home
self.assertRaises(TypeError, posixpath.expanduser) self.assertRaises(TypeError, posixpath.expanduser)

View File

@ -5,7 +5,7 @@ executing have not been removed.
""" """
import unittest import unittest
from test.test_support import TestSkipped, run_unittest, TESTFN from test.test_support import TestSkipped, run_unittest, TESTFN, EnvironmentVarGuard
import __builtin__ import __builtin__
import os import os
import sys import sys

View File

@ -149,13 +149,11 @@ class test__candidate_tempdir_list(TC):
# _candidate_tempdir_list contains the expected directories # _candidate_tempdir_list contains the expected directories
# Make sure the interesting environment variables are all set. # Make sure the interesting environment variables are all set.
added = [] with test_support.EnvironmentVarGuard() as env:
try:
for envname in 'TMPDIR', 'TEMP', 'TMP': for envname in 'TMPDIR', 'TEMP', 'TMP':
dirname = os.getenv(envname) dirname = os.getenv(envname)
if not dirname: if not dirname:
os.environ[envname] = os.path.abspath(envname) env.set(envname, os.path.abspath(envname))
added.append(envname)
cand = tempfile._candidate_tempdir_list() 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 # Not practical to try to verify the presence of OS-specific
# paths in this list. # paths in this list.
finally:
for p in added:
del os.environ[p]
test_classes.append(test__candidate_tempdir_list) test_classes.append(test__candidate_tempdir_list)

View File

@ -98,20 +98,20 @@ class urlopen_FileTests(unittest.TestCase):
class ProxyTests(unittest.TestCase): class ProxyTests(unittest.TestCase):
def setUp(self): def setUp(self):
# Save all proxy related env vars # Records changes to env vars
self._saved_environ = dict([(k, v) for k, v in os.environ.iteritems() self.env = test_support.EnvironmentVarGuard()
if k.lower().find('proxy') >= 0])
# Delete all proxy related env vars # Delete all proxy related env vars
for k in self._saved_environ: for k, v in os.environ.iteritems():
del os.environ[k] if 'proxy' in k.lower():
env.unset(k)
def tearDown(self): def tearDown(self):
# Restore all proxy related env vars # Restore all proxy related env vars
for k, v in self._saved_environ.iteritems(): self.env.__exit__()
os.environ[k] = v del self.env
def test_getproxies_environment_keep_no_proxies(self): def test_getproxies_environment_keep_no_proxies(self):
os.environ['NO_PROXY'] = 'localhost' self.env.set('NO_PROXY', 'localhost')
proxies = urllib.getproxies_environment() proxies = urllib.getproxies_environment()
# getproxies_environment use lowered case truncated (no '_proxy') keys # getproxies_environment use lowered case truncated (no '_proxy') keys
self.assertEquals('localhost', proxies['no']) self.assertEquals('localhost', proxies['no'])

View File

@ -583,25 +583,25 @@ class CGIHandlerTestCase(unittest.TestCase):
self.cgi = None self.cgi = None
def test_cgi_get(self): def test_cgi_get(self):
os.environ['REQUEST_METHOD'] = 'GET' with test_support.EnvironmentVarGuard() as env:
# if the method is GET and no request_text is given, it runs handle_get env.set('REQUEST_METHOD', 'GET')
# get sysout output # if the method is GET and no request_text is given, it runs handle_get
tmp = sys.stdout # get sysout output
sys.stdout = open(test_support.TESTFN, "w") tmp = sys.stdout
self.cgi.handle_request() sys.stdout = open(test_support.TESTFN, "w")
sys.stdout.close() self.cgi.handle_request()
sys.stdout = tmp sys.stdout.close()
sys.stdout = tmp
# parse Status header # parse Status header
handle = open(test_support.TESTFN, "r").read() handle = open(test_support.TESTFN, "r").read()
status = handle.split()[1] status = handle.split()[1]
message = ' '.join(handle.split()[2:4]) message = ' '.join(handle.split()[2:4])
self.assertEqual(status, '400') self.assertEqual(status, '400')
self.assertEqual(message, 'Bad Request') self.assertEqual(message, 'Bad Request')
os.remove(test_support.TESTFN) os.remove(test_support.TESTFN)
os.environ['REQUEST_METHOD'] = ''
def test_cgi_xmlrpc_response(self): def test_cgi_xmlrpc_response(self):
data = """<?xml version='1.0'?> data = """<?xml version='1.0'?>
@ -624,11 +624,9 @@ class CGIHandlerTestCase(unittest.TestCase):
sys.stdin = open("xmldata.txt", "r") sys.stdin = open("xmldata.txt", "r")
sys.stdout = open(test_support.TESTFN, "w") sys.stdout = open(test_support.TESTFN, "w")
os.environ['CONTENT_LENGTH'] = str(len(data)) with test_support.EnvironmentVarGuard() as env:
try: env.set('CONTENT_LENGTH', str(len(data)))
self.cgi.handle_request() self.cgi.handle_request()
finally:
del os.environ['CONTENT_LENGTH']
sys.stdin.close() sys.stdin.close()
sys.stdout.close() sys.stdout.close()