bpo-30132: distutils BuildExtTestCase use temp_cwd (#1380)
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 2 May 2017 11:11:50 +0000 (13:11 +0200)
committerGitHub <noreply@github.com>
Tue, 2 May 2017 11:11:50 +0000 (13:11 +0200)
BuildExtTestCase of test_distutils now uses support.temp_cwd() in
setUp() to remove files created in the current working in all
BuildExtTestCase unit tests, not only test_build_ext().

Move also tearDown() just after setUp().

Lib/distutils/tests/test_build_ext.py

index 96e5f030957fda9ddac6e63f2d592982a4888878..a72218274ca90eb9baccc67a78427ad7347adf8e 100644 (file)
@@ -37,17 +37,28 @@ class BuildExtTestCase(TempdirManager,
         from distutils.command import build_ext
         build_ext.USER_BASE = site.USER_BASE
 
-    def build_ext(self, *args, **kwargs):
-        return build_ext(*args, **kwargs)
-
-    def test_build_ext(self):
         # bpo-30132: On Windows, a .pdb file may be created in the current
         # working directory. Create a temporary working directory to cleanup
         # everything at the end of the test.
-        with support.temp_cwd():
-            self._test_build_ext()
+        self.temp_cwd = support.temp_cwd()
+        self.temp_cwd.__enter__()
+        self.addCleanup(self.temp_cwd.__exit__, None, None, None)
+
+    def tearDown(self):
+        # Get everything back to normal
+        support.unload('xx')
+        sys.path = self.sys_path[0]
+        sys.path[:] = self.sys_path[1]
+        import site
+        site.USER_BASE = self.old_user_base
+        from distutils.command import build_ext
+        build_ext.USER_BASE = self.old_user_base
+        super(BuildExtTestCase, self).tearDown()
 
-    def _test_build_ext(self):
+    def build_ext(self, *args, **kwargs):
+        return build_ext(*args, **kwargs)
+
+    def test_build_ext(self):
         cmd = support.missing_compiler_executable()
         if cmd is not None:
             self.skipTest('The %r command is not found' % cmd)
@@ -91,17 +102,6 @@ class BuildExtTestCase(TempdirManager,
         self.assertIsInstance(xx.Null(), xx.Null)
         self.assertIsInstance(xx.Str(), xx.Str)
 
-    def tearDown(self):
-        # Get everything back to normal
-        support.unload('xx')
-        sys.path = self.sys_path[0]
-        sys.path[:] = self.sys_path[1]
-        import site
-        site.USER_BASE = self.old_user_base
-        from distutils.command import build_ext
-        build_ext.USER_BASE = self.old_user_base
-        super(BuildExtTestCase, self).tearDown()
-
     def test_solaris_enable_shared(self):
         dist = Distribution({'name': 'xx'})
         cmd = self.build_ext(dist)