From 430fb63dd2c9bb0ed412fb61be1da9b130deab14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarek=20Ziad=C3=A9?= Date: Sun, 18 Oct 2009 11:34:51 +0000 Subject: 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 ........ --- Lib/distutils/tests/support.py | 13 +++++++++--- Lib/distutils/tests/test_bdist_dumb.py | 6 ++++-- Lib/distutils/tests/test_bdist_rpm.py | 5 +++-- Lib/distutils/tests/test_build_ext.py | 5 +++-- Lib/distutils/tests/test_config.py | 2 +- Lib/distutils/tests/test_core.py | 11 ++++++---- Lib/distutils/tests/test_dist.py | 31 ++++++++++++++++++----------- Lib/distutils/tests/test_install.py | 1 + Lib/distutils/tests/test_install_data.py | 1 + Lib/distutils/tests/test_install_headers.py | 1 + Lib/distutils/tests/test_install_lib.py | 2 +- Lib/distutils/tests/test_sysconfig.py | 11 ++++++++-- Lib/distutils/tests/test_util.py | 11 +++++----- 13 files changed, 66 insertions(+), 34 deletions(-) diff --git a/Lib/distutils/tests/support.py b/Lib/distutils/tests/support.py index ea12211..e258d2e 100644 --- a/Lib/distutils/tests/support.py +++ b/Lib/distutils/tests/support.py @@ -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() diff --git a/Lib/distutils/tests/test_bdist_dumb.py b/Lib/distutils/tests/test_bdist_dumb.py index a838f73..5eaef2a 100644 --- a/Lib/distutils/tests/test_bdist_dumb.py +++ b/Lib/distutils/tests/test_bdist_dumb.py @@ -26,16 +26,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() @unittest.skipUnless(zlib, "requires zlib") diff --git a/Lib/distutils/tests/test_bdist_rpm.py b/Lib/distutils/tests/test_bdist_rpm.py index c271567..2aa257f 100644 --- a/Lib/distutils/tests/test_bdist_rpm.py +++ b/Lib/distutils/tests/test_bdist_rpm.py @@ -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): diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py index 7a27f34..ebbb399 100644 --- a/Lib/distutils/tests/test_build_ext.py +++ b/Lib/distutils/tests/test_build_ext.py @@ -35,7 +35,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": @@ -90,7 +90,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 diff --git a/Lib/distutils/tests/test_config.py b/Lib/distutils/tests/test_config.py index 879689d..71c6367 100644 --- a/Lib/distutils/tests/test_config.py +++ b/Lib/distutils/tests/test_config.py @@ -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() diff --git a/Lib/distutils/tests/test_core.py b/Lib/distutils/tests/test_core.py index b5f391f..b478fa6 100644 --- a/Lib/distutils/tests/test_core.py +++ b/Lib/distutils/tests/test_core.py @@ -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 diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py index 799b0c0..be1010c 100644 --- a/Lib/distutils/tests/test_dist.py +++ b/Lib/distutils/tests/test_dist.py @@ -38,15 +38,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=()): @@ -181,6 +183,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"} @@ -279,14 +290,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)) @@ -302,15 +313,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() != ''] diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py index 2087a0e..76fa02a 100644 --- a/Lib/distutils/tests/test_install.py +++ b/Lib/distutils/tests/test_install.py @@ -17,6 +17,7 @@ from distutils.errors import DistutilsOptionError from distutils.tests import support class InstallTestCase(support.TempdirManager, + support.EnvironGuard, support.LoggingSilencer, unittest.TestCase): diff --git a/Lib/distutils/tests/test_install_data.py b/Lib/distutils/tests/test_install_data.py index 7072136..377ae86 100644 --- a/Lib/distutils/tests/test_install_data.py +++ b/Lib/distutils/tests/test_install_data.py @@ -9,6 +9,7 @@ from distutils.tests import support class InstallDataTestCase(support.TempdirManager, support.LoggingSilencer, + support.EnvironGuard, unittest.TestCase): def test_simple_run(self): diff --git a/Lib/distutils/tests/test_install_headers.py b/Lib/distutils/tests/test_install_headers.py index 2564563..5b32b13 100644 --- a/Lib/distutils/tests/test_install_headers.py +++ b/Lib/distutils/tests/test_install_headers.py @@ -9,6 +9,7 @@ from distutils.tests import support class InstallHeadersTestCase(support.TempdirManager, support.LoggingSilencer, + support.EnvironGuard, unittest.TestCase): def test_simple_run(self): diff --git a/Lib/distutils/tests/test_install_lib.py b/Lib/distutils/tests/test_install_lib.py index 793b95c..b2185b8 100644 --- a/Lib/distutils/tests/test_install_lib.py +++ b/Lib/distutils/tests/test_install_lib.py @@ -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) diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py index eb36204..edc755e 100644 --- a/Lib/distutils/tests/test_sysconfig.py +++ b/Lib/distutils/tests/test_sysconfig.py @@ -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: diff --git a/Lib/distutils/tests/test_util.py b/Lib/distutils/tests/test_util.py index 84caea5..8068726 100644 --- a/Lib/distutils/tests/test_util.py +++ b/Lib/distutils/tests/test_util.py @@ -121,7 +121,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') @@ -129,7 +129,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 ' @@ -250,17 +250,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): -- cgit v0.12