From: Victor Stinner Date: Fri, 17 Jun 2011 10:20:46 +0000 (+0200) Subject: Issue #12333: restore the previous dir before removing the current directory X-Git-Tag: v3.3.0a1~2110 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac6602bdc17973c121ea6cce9ae6768a9e5db8c3;p=python Issue #12333: restore the previous dir before removing the current directory 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). --- diff --git a/Lib/packaging/tests/support.py b/Lib/packaging/tests/support.py index 501f1260a3..47ce513d18 100644 --- a/Lib/packaging/tests/support.py +++ b/Lib/packaging/tests/support.py @@ -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()