[Python-checkins] r75491 - in python/branches/py3k: Lib/distutils/tests/support.py Lib/distutils/tests/test_bdist_dumb.py Lib/distutils/tests/test_bdist_rpm.py Lib/distutils/tests/test_build_ext.py Lib/distutils/tests/test_config.py Lib/distutils/tests/test_core.py Lib/distutils/tests/test_dist.py Lib/distutils/tests/test_install.py Lib/distutils/tests/test_install_data.py Lib/distutils/tests/test_install_headers.py Lib/distutils/tests/test_install_lib.py Lib/distutils/tests/test_sysconfig.py Lib/distutils/tests/test_util.py

tarek.ziade python-checkins at python.org
Sun Oct 18 13:34:51 CEST 2009


Author: tarek.ziade
Date: Sun Oct 18 13:34:51 2009
New Revision: 75491

Log:
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
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/distutils/tests/support.py
   python/branches/py3k/Lib/distutils/tests/test_bdist_dumb.py
   python/branches/py3k/Lib/distutils/tests/test_bdist_rpm.py
   python/branches/py3k/Lib/distutils/tests/test_build_ext.py
   python/branches/py3k/Lib/distutils/tests/test_config.py
   python/branches/py3k/Lib/distutils/tests/test_core.py
   python/branches/py3k/Lib/distutils/tests/test_dist.py
   python/branches/py3k/Lib/distutils/tests/test_install.py
   python/branches/py3k/Lib/distutils/tests/test_install_data.py
   python/branches/py3k/Lib/distutils/tests/test_install_headers.py
   python/branches/py3k/Lib/distutils/tests/test_install_lib.py
   python/branches/py3k/Lib/distutils/tests/test_sysconfig.py
   python/branches/py3k/Lib/distutils/tests/test_util.py

Modified: python/branches/py3k/Lib/distutils/tests/support.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/support.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/support.py	Sun Oct 18 13:34:51 2009
@@ -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 @@
 
     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()

Modified: python/branches/py3k/Lib/distutils/tests/test_bdist_dumb.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_bdist_dumb.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_bdist_dumb.py	Sun Oct 18 13:34:51 2009
@@ -26,16 +26,18 @@
 
 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")

Modified: python/branches/py3k/Lib/distutils/tests/test_bdist_rpm.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_bdist_rpm.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_bdist_rpm.py	Sun Oct 18 13:34:51 2009
@@ -29,11 +29,12 @@
     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):

Modified: python/branches/py3k/Lib/distutils/tests/test_build_ext.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_build_ext.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_build_ext.py	Sun Oct 18 13:34:51 2009
@@ -35,7 +35,7 @@
         # 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 @@
     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

Modified: python/branches/py3k/Lib/distutils/tests/test_config.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_config.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_config.py	Sun Oct 18 13:34:51 2009
@@ -55,7 +55,7 @@
         """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()
 

Modified: python/branches/py3k/Lib/distutils/tests/test_core.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_core.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_core.py	Sun Oct 18 13:34:51 2009
@@ -8,7 +8,7 @@
 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 @@
 """
 
 
-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

Modified: python/branches/py3k/Lib/distutils/tests/test_dist.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_dist.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_dist.py	Sun Oct 18 13:34:51 2009
@@ -38,15 +38,17 @@
 
 
 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 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 @@
 
             # 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 @@
     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() != '']

Modified: python/branches/py3k/Lib/distutils/tests/test_install.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_install.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_install.py	Sun Oct 18 13:34:51 2009
@@ -17,6 +17,7 @@
 from distutils.tests import support
 
 class InstallTestCase(support.TempdirManager,
+                      support.EnvironGuard,
                       support.LoggingSilencer,
                       unittest.TestCase):
 

Modified: python/branches/py3k/Lib/distutils/tests/test_install_data.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_install_data.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_install_data.py	Sun Oct 18 13:34:51 2009
@@ -9,6 +9,7 @@
 
 class InstallDataTestCase(support.TempdirManager,
                           support.LoggingSilencer,
+                          support.EnvironGuard,
                           unittest.TestCase):
 
     def test_simple_run(self):

Modified: python/branches/py3k/Lib/distutils/tests/test_install_headers.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_install_headers.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_install_headers.py	Sun Oct 18 13:34:51 2009
@@ -9,6 +9,7 @@
 
 class InstallHeadersTestCase(support.TempdirManager,
                              support.LoggingSilencer,
+                             support.EnvironGuard,
                              unittest.TestCase):
 
     def test_simple_run(self):

Modified: python/branches/py3k/Lib/distutils/tests/test_install_lib.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_install_lib.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_install_lib.py	Sun Oct 18 13:34:51 2009
@@ -10,9 +10,9 @@
 
 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)

Modified: python/branches/py3k/Lib/distutils/tests/test_sysconfig.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_sysconfig.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_sysconfig.py	Sun Oct 18 13:34:51 2009
@@ -17,8 +17,15 @@
     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 @@
         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:

Modified: python/branches/py3k/Lib/distutils/tests/test_util.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_util.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_util.py	Sun Oct 18 13:34:51 2009
@@ -121,7 +121,7 @@
                    ('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 @@
         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 @@
 
     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):


More information about the Python-checkins mailing list