]> granicus.if.org Git - python/commitdiff
Issue #12333: restore the previous dir before removing the current directory
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 17 Jun 2011 10:20:46 +0000 (12:20 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 17 Jun 2011 10:20:46 +0000 (12:20 +0200)
packaging.tests.support.TempdirManager: removing the current directory is not
allowed on Windows or Solaris. Store the current directory and restore it
before removing the temporary directory (which is used as the working directory
during the tests).

Lib/packaging/tests/support.py

index 501f1260a36bb5212292c2e1c1d71ddac58216e7..47ce513d185def13fca83f358ac0b9db19c98b68 100644 (file)
@@ -37,7 +37,7 @@ import tempfile
 from packaging import logger
 from packaging.dist import Distribution
 from packaging.tests import unittest
-from test.support import requires_zlib
+from test.support import requires_zlib, unlink
 
 __all__ = ['LoggingCatcher', 'TempdirManager', 'EnvironRestorer',
            'DummyCommand', 'unittest', 'create_distribution',
@@ -121,20 +121,17 @@ class TempdirManager:
 
     def setUp(self):
         super(TempdirManager, self).setUp()
+        self._olddir = os.getcwd()
         self._basetempdir = tempfile.mkdtemp()
         self._files = []
 
     def tearDown(self):
-        shutil.rmtree(self._basetempdir, os.name in ('nt', 'cygwin'))
+        os.chdir(self._olddir)
+        shutil.rmtree(self._basetempdir)
 
         for handle, name in self._files:
             handle.close()
-            if os.path.exists(name):
-                try:
-                    os.remove(name)
-                except OSError as exc:
-                    if exc.errno != errno.ENOENT:
-                        raise
+            unlink(name)
 
         super(TempdirManager, self).tearDown()