Merged revisions 75491 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r75491 | tarek.ziade | 2009-10-18 13:34:51 +0200 (Sun, 18 Oct 2009) | 9 lines

  Merged revisions 75485 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r75485 | tarek.ziade | 2009-10-18 11:28:26 +0200 (Sun, 18 Oct 2009) | 1 line

    Changed distutils tests to avoid environment alteration
  ........
................
This commit is contained in:
Tarek Ziadé 2009-10-18 12:41:30 +00:00
parent 6eb181a668
commit f456a155c6
13 changed files with 66 additions and 34 deletions

View File

@ -2,11 +2,11 @@
import os
import shutil
import tempfile
from copy import deepcopy
from distutils import log
from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL
from distutils.core import Distribution
from test.support import EnvironmentVarGuard
class LoggingSilencer(object):
@ -111,8 +111,15 @@ class EnvironGuard(object):
def setUp(self):
super(EnvironGuard, self).setUp()
self.environ = EnvironmentVarGuard()
self.old_environ = deepcopy(os.environ)
def tearDown(self):
self.environ.__exit__()
for key, value in self.old_environ.items():
if os.environ.get(key) != value:
os.environ[key] = value
for key in tuple(os.environ.keys()):
if key not in self.old_environ:
del os.environ[key]
super(EnvironGuard, self).tearDown()

View File

@ -19,16 +19,18 @@ setup(name='foo', version='0.1', py_modules=['foo'],
class BuildDumbTestCase(support.TempdirManager,
support.LoggingSilencer,
support.EnvironGuard,
unittest.TestCase):
def setUp(self):
super(BuildDumbTestCase, self).setUp()
self.old_location = os.getcwd()
self.old_sys_argv = sys.argv[:]
self.old_sys_argv = sys.argv, sys.argv[:]
def tearDown(self):
os.chdir(self.old_location)
sys.argv = self.old_sys_argv[:]
sys.argv = self.old_sys_argv[0]
sys.argv[:] = self.old_sys_argv[1]
super(BuildDumbTestCase, self).tearDown()
def test_simple_built(self):

View File

@ -29,11 +29,12 @@ class BuildRpmTestCase(support.TempdirManager,
def setUp(self):
super(BuildRpmTestCase, self).setUp()
self.old_location = os.getcwd()
self.old_sys_argv = sys.argv[:]
self.old_sys_argv = sys.argv, sys.argv[:]
def tearDown(self):
os.chdir(self.old_location)
sys.argv = self.old_sys_argv[:]
sys.argv = self.old_sys_argv[0]
sys.argv[:] = self.old_sys_argv[1]
super(BuildRpmTestCase, self).tearDown()
def test_quiet(self):

View File

@ -32,7 +32,7 @@ class BuildExtTestCase(TempdirManager,
# Note that we're making changes to sys.path
super(BuildExtTestCase, self).setUp()
self.tmp_dir = self.mkdtemp()
self.sys_path = sys.path[:]
self.sys_path = sys.path, sys.path[:]
sys.path.append(self.tmp_dir)
shutil.copy(_get_source_filename(), self.tmp_dir)
if sys.version > "2.6":
@ -87,7 +87,8 @@ class BuildExtTestCase(TempdirManager,
def tearDown(self):
# Get everything back to normal
support.unload('xx')
sys.path = self.sys_path
sys.path = self.sys_path[0]
sys.path[:] = self.sys_path[1]
if sys.version > "2.6":
import site
site.USER_BASE = self.old_user_base

View File

@ -55,7 +55,7 @@ class PyPIRCCommandTestCase(support.TempdirManager,
"""Patches the environment."""
super(PyPIRCCommandTestCase, self).setUp()
self.tmp_dir = self.mkdtemp()
self.environ['HOME'] = self.tmp_dir
os.environ['HOME'] = self.tmp_dir
self.rc = os.path.join(self.tmp_dir, '.pypirc')
self.dist = Distribution()

View File

@ -8,7 +8,7 @@ import sys
import test.support
from test.support import captured_stdout
import unittest
from distutils.tests import support
# setup script that uses __file__
setup_using___file__ = """\
@ -29,17 +29,20 @@ setup()
"""
class CoreTestCase(unittest.TestCase):
class CoreTestCase(support.EnvironGuard, unittest.TestCase):
def setUp(self):
super(CoreTestCase, self).setUp()
self.old_stdout = sys.stdout
self.cleanup_testfn()
self.old_argv = sys.argv[:]
self.old_argv = sys.argv, sys.argv[:]
def tearDown(self):
sys.stdout = self.old_stdout
self.cleanup_testfn()
sys.argv = self.old_argv[:]
sys.argv = self.old_argv[0]
sys.argv[:] = self.old_argv[1]
super(CoreTestCase, self).tearDown()
def cleanup_testfn(self):
path = test.support.TESTFN

View File

@ -37,15 +37,17 @@ class TestDistribution(Distribution):
class DistributionTestCase(support.LoggingSilencer,
support.EnvironGuard,
unittest.TestCase):
def setUp(self):
super(DistributionTestCase, self).setUp()
self.argv = sys.argv[:]
self.argv = sys.argv, sys.argv[:]
del sys.argv[1:]
def tearDown(self):
sys.argv[:] = self.argv
sys.argv = self.argv[0]
sys.argv[:] = self.argv[1]
super(DistributionTestCase, self).tearDown()
def create_distribution(self, configfiles=()):
@ -159,6 +161,15 @@ class DistributionTestCase(support.LoggingSilencer,
class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
unittest.TestCase):
def setUp(self):
super(MetadataTestCase, self).setUp()
self.argv = sys.argv, sys.argv[:]
def tearDown(self):
sys.argv = self.argv[0]
sys.argv[:] = self.argv[1]
super(MetadataTestCase, self).tearDown()
def test_simple_metadata(self):
attrs = {"name": "package",
"version": "1.0"}
@ -257,14 +268,14 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
# linux-style
if sys.platform in ('linux', 'darwin'):
self.environ['HOME'] = temp_dir
os.environ['HOME'] = temp_dir
files = dist.find_config_files()
self.assertTrue(user_filename in files)
# win32-style
if sys.platform == 'win32':
# home drive should be found
self.environ['HOME'] = temp_dir
os.environ['HOME'] = temp_dir
files = dist.find_config_files()
self.assertTrue(user_filename in files,
'%r not found in %r' % (user_filename, files))
@ -280,15 +291,11 @@ class MetadataTestCase(support.TempdirManager, support.EnvironGuard,
def test_show_help(self):
# smoke test, just makes sure some help is displayed
dist = Distribution()
old_argv = sys.argv
sys.argv = []
try:
dist.help = 1
dist.script_name = 'setup.py'
with captured_stdout() as s:
dist.parse_command_line()
finally:
sys.argv = old_argv
dist.help = 1
dist.script_name = 'setup.py'
with captured_stdout() as s:
dist.parse_command_line()
output = [line for line in s.getvalue().split('\n')
if line.strip() != '']

View File

@ -17,6 +17,7 @@ from distutils.errors import DistutilsOptionError
from distutils.tests import support
class InstallTestCase(support.TempdirManager,
support.EnvironGuard,
support.LoggingSilencer,
unittest.TestCase):

View File

@ -9,6 +9,7 @@ from distutils.tests import support
class InstallDataTestCase(support.TempdirManager,
support.LoggingSilencer,
support.EnvironGuard,
unittest.TestCase):
def test_simple_run(self):

View File

@ -9,6 +9,7 @@ from distutils.tests import support
class InstallHeadersTestCase(support.TempdirManager,
support.LoggingSilencer,
support.EnvironGuard,
unittest.TestCase):
def test_simple_run(self):

View File

@ -10,9 +10,9 @@ from distutils.errors import DistutilsOptionError
class InstallLibTestCase(support.TempdirManager,
support.LoggingSilencer,
support.EnvironGuard,
unittest.TestCase):
def test_finalize_options(self):
pkg_dir, dist = self.create_dist()
cmd = install_lib(dist)

View File

@ -17,8 +17,15 @@ class SysconfigTestCase(support.EnvironGuard,
def tearDown(self):
if self.makefile is not None:
os.unlink(self.makefile)
self.cleanup_testfn()
super(SysconfigTestCase, self).tearDown()
def cleanup_testfn(self):
if os.path.isfile(TESTFN):
os.remove(TESTFN)
elif os.path.isdir(TESTFN):
shutil.rmtree(TESTFN)
def test_get_config_h_filename(self):
config_h = sysconfig.get_config_h_filename()
self.assertTrue(os.path.isfile(config_h), config_h)
@ -51,8 +58,8 @@ class SysconfigTestCase(support.EnvironGuard,
if get_default_compiler() != 'unix':
return
self.environ['AR'] = 'my_ar'
self.environ['ARFLAGS'] = '-arflags'
os.environ['AR'] = 'my_ar'
os.environ['ARFLAGS'] = '-arflags'
# make sure AR gets caught
class compiler:

View File

@ -94,7 +94,7 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
('Darwin Kernel Version 8.11.1: '
'Wed Oct 10 18:23:28 PDT 2007; '
'root:xnu-792.25.20~1/RELEASE_I386'), 'i386'))
self.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3'
get_config_vars()['CFLAGS'] = ('-fno-strict-aliasing -DNDEBUG -g '
'-fwrapv -O3 -Wall -Wstrict-prototypes')
@ -102,7 +102,7 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
self.assertEquals(get_platform(), 'macosx-10.3-i386')
# macbook with fat binaries (fat, universal or fat64)
self.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.4'
get_config_vars()['CFLAGS'] = ('-arch ppc -arch i386 -isysroot '
'/Developer/SDKs/MacOSX10.4u.sdk '
'-fno-strict-aliasing -fno-common '
@ -223,17 +223,18 @@ class UtilTestCase(support.EnvironGuard, unittest.TestCase):
def test_check_environ(self):
util._environ_checked = 0
if 'HOME' in os.environ:
del os.environ['HOME']
# posix without HOME
if os.name == 'posix': # this test won't run on windows
check_environ()
import pwd
self.assertEquals(self.environ['HOME'],
pwd.getpwuid(os.getuid())[5])
self.assertEquals(os.environ['HOME'], pwd.getpwuid(os.getuid())[5])
else:
check_environ()
self.assertEquals(self.environ['PLAT'], get_platform())
self.assertEquals(os.environ['PLAT'], get_platform())
self.assertEquals(util._environ_checked, 1)
def test_split_quoted(self):