summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/distutils/tests/support.py4
-rw-r--r--Lib/distutils/tests/test_build_ext.py9
-rw-r--r--Lib/distutils/tests/test_config.py12
-rw-r--r--Lib/distutils/tests/test_dir_util.py13
-rw-r--r--Lib/distutils/tests/test_dist.py11
-rw-r--r--Lib/distutils/tests/test_file_util.py19
-rw-r--r--Lib/distutils/tests/test_sdist.py50
-rw-r--r--Misc/NEWS3
8 files changed, 59 insertions, 62 deletions
diff --git a/Lib/distutils/tests/support.py b/Lib/distutils/tests/support.py
index 91e704c..48bcbcc 100644
--- a/Lib/distutils/tests/support.py
+++ b/Lib/distutils/tests/support.py
@@ -1,5 +1,5 @@
"""Support code for distutils test cases."""
-
+import os
import shutil
import tempfile
@@ -31,7 +31,7 @@ class TempdirManager(object):
super().tearDown()
while self.tempdirs:
d = self.tempdirs.pop()
- shutil.rmtree(d)
+ shutil.rmtree(d, os.name in ('nt', 'cygwin'))
def mkdtemp(self):
"""Create a temporary directory that will be cleaned up.
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index 5e42943..91b3de8 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -7,6 +7,7 @@ from io import StringIO
from distutils.core import Extension, Distribution
from distutils.command.build_ext import build_ext
from distutils import sysconfig
+from distutils.tests.support import TempdirManager
import unittest
from test import support
@@ -19,11 +20,12 @@ def _get_source_filename():
srcdir = sysconfig.get_config_var('srcdir')
return os.path.join(srcdir, 'Modules', 'xxmodule.c')
-class BuildExtTestCase(unittest.TestCase):
+class BuildExtTestCase(TempdirManager, unittest.TestCase):
def setUp(self):
# Create a simple test environment
# Note that we're making changes to sys.path
- self.tmp_dir = tempfile.mkdtemp(prefix="pythontest_")
+ TempdirManager.setUp(self)
+ self.tmp_dir = self.mkdtemp()
self.sys_path = sys.path[:]
sys.path.append(self.tmp_dir)
shutil.copy(_get_source_filename(), self.tmp_dir)
@@ -74,8 +76,7 @@ class BuildExtTestCase(unittest.TestCase):
# Get everything back to normal
support.unload('xx')
sys.path = self.sys_path
- # XXX on Windows the test leaves a directory with xx module in TEMP
- shutil.rmtree(self.tmp_dir, os.name == 'nt' or sys.platform == 'cygwin')
+ TempdirManager.tearDown(self)
def test_solaris_enable_shared(self):
dist = Distribution({'name': 'xx'})
diff --git a/Lib/distutils/tests/test_config.py b/Lib/distutils/tests/test_config.py
index bdc9b2b..0df6af8 100644
--- a/Lib/distutils/tests/test_config.py
+++ b/Lib/distutils/tests/test_config.py
@@ -2,6 +2,7 @@
import sys
import os
import unittest
+import tempfile
from distutils.core import PyPIRCCommand
from distutils.core import Distribution
@@ -49,13 +50,15 @@ class PyPIRCCommandTestCase(support.TempdirManager, unittest.TestCase):
def setUp(self):
"""Patches the environment."""
+ support.TempdirManager.setUp(self)
+
if 'HOME' in os.environ:
self._old_home = os.environ['HOME']
else:
self._old_home = None
- curdir = os.path.dirname(__file__)
- os.environ['HOME'] = curdir
- self.rc = os.path.join(curdir, '.pypirc')
+ self.tmp_dir = self.mkdtemp()
+ os.environ['HOME'] = self.tmp_dir
+ self.rc = os.path.join(self.tmp_dir, '.pypirc')
self.dist = Distribution()
class command(PyPIRCCommand):
@@ -74,9 +77,8 @@ class PyPIRCCommandTestCase(support.TempdirManager, unittest.TestCase):
del os.environ['HOME']
else:
os.environ['HOME'] = self._old_home
- if os.path.exists(self.rc):
- os.remove(self.rc)
set_threshold(self.old_threshold)
+ support.TempdirManager.tearDown(self)
def test_server_registration(self):
# This test makes sure PyPIRCCommand knows how to:
diff --git a/Lib/distutils/tests/test_dir_util.py b/Lib/distutils/tests/test_dir_util.py
index edf93c4..bf416b6 100644
--- a/Lib/distutils/tests/test_dir_util.py
+++ b/Lib/distutils/tests/test_dir_util.py
@@ -9,8 +9,9 @@ from distutils.dir_util import create_tree
from distutils.dir_util import copy_tree
from distutils import log
+from distutils.tests import support
-class DirUtilTestCase(unittest.TestCase):
+class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
def _log(self, msg, *args):
if len(args) > 0:
@@ -19,18 +20,18 @@ class DirUtilTestCase(unittest.TestCase):
self._logs.append(msg)
def setUp(self):
+ support.TempdirManager.setUp(self)
self._logs = []
- self.root_target = os.path.join(os.path.dirname(__file__), 'deep')
+ tmp_dir = self.mkdtemp()
+ self.root_target = os.path.join(tmp_dir, 'deep')
self.target = os.path.join(self.root_target, 'here')
- self.target2 = os.path.join(os.path.dirname(__file__), 'deep2')
+ self.target2 = os.path.join(tmp_dir, 'deep2')
self.old_log = log.info
log.info = self._log
def tearDown(self):
- for target in (self.target, self.target2):
- if os.path.exists(target):
- shutil.rmtree(target)
log.info = self.old_log
+ support.TempdirManager.tearDown(self)
def test_mkpath_remove_tree_verbosity(self):
diff --git a/Lib/distutils/tests/test_dist.py b/Lib/distutils/tests/test_dist.py
index 8e7ef5d..3ac0fdd 100644
--- a/Lib/distutils/tests/test_dist.py
+++ b/Lib/distutils/tests/test_dist.py
@@ -9,6 +9,7 @@ import unittest
import warnings
from test.support import TESTFN
+from distutils.tests import support
class test_dist(distutils.cmd.Command):
@@ -120,7 +121,7 @@ class DistributionTestCase(unittest.TestCase):
self.assertEquals(len(warns), 0)
-class MetadataTestCase(unittest.TestCase):
+class MetadataTestCase(support.TempdirManager, unittest.TestCase):
def test_simple_metadata(self):
attrs = {"name": "package",
@@ -219,8 +220,8 @@ class MetadataTestCase(unittest.TestCase):
else:
user_filename = "pydistutils.cfg"
- curdir = os.path.dirname(__file__)
- user_filename = os.path.join(curdir, user_filename)
+ temp_dir = self.mkdtemp()
+ user_filename = os.path.join(temp_dir, user_filename)
f = open(user_filename, 'w')
f.write('.')
f.close()
@@ -230,14 +231,14 @@ class MetadataTestCase(unittest.TestCase):
# linux-style
if sys.platform in ('linux', 'darwin'):
- os.environ['HOME'] = curdir
+ os.environ['HOME'] = temp_dir
files = dist.find_config_files()
self.assert_(user_filename in files)
# win32-style
if sys.platform == 'win32':
# home drive should be found
- os.environ['HOME'] = curdir
+ os.environ['HOME'] = temp_dir
files = dist.find_config_files()
self.assert_(user_filename in files,
'%r not found in %r' % (user_filename, files))
diff --git a/Lib/distutils/tests/test_file_util.py b/Lib/distutils/tests/test_file_util.py
index 523f1ae..9373af8 100644
--- a/Lib/distutils/tests/test_file_util.py
+++ b/Lib/distutils/tests/test_file_util.py
@@ -5,8 +5,9 @@ import shutil
from distutils.file_util import move_file
from distutils import log
+from distutils.tests import support
-class FileUtilTestCase(unittest.TestCase):
+class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
def _log(self, msg, *args):
if len(args) > 0:
@@ -15,24 +16,20 @@ class FileUtilTestCase(unittest.TestCase):
self._logs.append(msg)
def setUp(self):
+ support.TempdirManager.setUp(self)
self._logs = []
self.old_log = log.info
log.info = self._log
- self.source = os.path.join(os.path.dirname(__file__), 'f1')
- self.target = os.path.join(os.path.dirname(__file__), 'f2')
- self.target_dir = os.path.join(os.path.dirname(__file__), 'd1')
+ tmp_dir = self.mkdtemp()
+ self.source = os.path.join(tmp_dir, 'f1')
+ self.target = os.path.join(tmp_dir, 'f2')
+ self.target_dir = os.path.join(tmp_dir, 'd1')
def tearDown(self):
log.info = self.old_log
- for f in (self.source, self.target, self.target_dir):
- if os.path.exists(f):
- if os.path.isfile(f):
- os.remove(f)
- else:
- shutil.rmtree(f)
+ support.TempdirManager.tearDown(self)
def test_move_file_verbosity(self):
-
f = open(self.source, 'w')
f.write('some content')
f.close()
diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py
index 0d839b5..b2e9800 100644
--- a/Lib/distutils/tests/test_sdist.py
+++ b/Lib/distutils/tests/test_sdist.py
@@ -5,6 +5,7 @@ import shutil
import zipfile
from os.path import join
import sys
+import tempfile
from distutils.command.sdist import sdist
from distutils.core import Distribution
@@ -12,9 +13,6 @@ from distutils.tests.test_config import PyPIRCCommandTestCase
from distutils.errors import DistutilsExecError
from distutils.spawn import find_executable
-CURDIR = os.path.dirname(__file__)
-TEMP_PKG = join(CURDIR, 'temppkg')
-
SETUP_PY = """
from distutils.core import setup
import somecode
@@ -29,28 +27,25 @@ recursive-include somecode *
class sdistTestCase(PyPIRCCommandTestCase):
def setUp(self):
+ # PyPIRCCommandTestCase creates a temp dir already
+ # and put it in self.tmp_dir
PyPIRCCommandTestCase.setUp(self)
+ # setting up an environment
self.old_path = os.getcwd()
+ os.mkdir(join(self.tmp_dir, 'somecode'))
+ os.mkdir(join(self.tmp_dir, 'dist'))
+ # creating a MANIFEST, a package, and a README
+ self._write(join(self.tmp_dir, 'MANIFEST.in'), MANIFEST_IN)
+ self._write(join(self.tmp_dir, 'README'), 'xxx')
+ self._write(join(self.tmp_dir, 'somecode', '__init__.py'), '#')
+ self._write(join(self.tmp_dir, 'setup.py'), SETUP_PY)
+ os.chdir(self.tmp_dir)
def tearDown(self):
+ # back to normal
os.chdir(self.old_path)
- if os.path.exists(TEMP_PKG):
- shutil.rmtree(TEMP_PKG)
PyPIRCCommandTestCase.tearDown(self)
- def _init_tmp_pkg(self):
- if os.path.exists(TEMP_PKG):
- shutil.rmtree(TEMP_PKG)
- os.mkdir(TEMP_PKG)
- os.mkdir(join(TEMP_PKG, 'somecode'))
- os.mkdir(join(TEMP_PKG, 'dist'))
- # creating a MANIFEST, a package, and a README
- self._write(join(TEMP_PKG, 'MANIFEST.in'), MANIFEST_IN)
- self._write(join(TEMP_PKG, 'README'), 'xxx')
- self._write(join(TEMP_PKG, 'somecode', '__init__.py'), '#')
- self._write(join(TEMP_PKG, 'setup.py'), SETUP_PY)
- os.chdir(TEMP_PKG)
-
def _write(self, path, content):
f = open(path, 'w')
try:
@@ -62,18 +57,17 @@ class sdistTestCase(PyPIRCCommandTestCase):
# this test creates a package with some vcs dirs in it
# and launch sdist to make sure they get pruned
# on all systems
- self._init_tmp_pkg()
# creating VCS directories with some files in them
- os.mkdir(join(TEMP_PKG, 'somecode', '.svn'))
- self._write(join(TEMP_PKG, 'somecode', '.svn', 'ok.py'), 'xxx')
+ os.mkdir(join(self.tmp_dir, 'somecode', '.svn'))
+ self._write(join(self.tmp_dir, 'somecode', '.svn', 'ok.py'), 'xxx')
- os.mkdir(join(TEMP_PKG, 'somecode', '.hg'))
- self._write(join(TEMP_PKG, 'somecode', '.hg',
+ os.mkdir(join(self.tmp_dir, 'somecode', '.hg'))
+ self._write(join(self.tmp_dir, 'somecode', '.hg',
'ok'), 'xxx')
- os.mkdir(join(TEMP_PKG, 'somecode', '.git'))
- self._write(join(TEMP_PKG, 'somecode', '.git',
+ os.mkdir(join(self.tmp_dir, 'somecode', '.git'))
+ self._write(join(self.tmp_dir, 'somecode', '.git',
'ok'), 'xxx')
# now building a sdist
@@ -96,7 +90,7 @@ class sdistTestCase(PyPIRCCommandTestCase):
cmd.run()
# now let's check what we have
- dist_folder = join(TEMP_PKG, 'dist')
+ dist_folder = join(self.tmp_dir, 'dist')
files = os.listdir(dist_folder)
self.assertEquals(files, ['fake-1.0.zip'])
@@ -116,8 +110,6 @@ class sdistTestCase(PyPIRCCommandTestCase):
find_executable('gzip') is None):
return
- self._init_tmp_pkg()
-
# now building a sdist
dist = Distribution()
dist.script_name = 'setup.py'
@@ -137,7 +129,7 @@ class sdistTestCase(PyPIRCCommandTestCase):
cmd.run()
# making sure we have two files
- dist_folder = join(TEMP_PKG, 'dist')
+ dist_folder = join(self.tmp_dir, 'dist')
result = os.listdir(dist_folder)
result.sort()
self.assertEquals(result,
diff --git a/Misc/NEWS b/Misc/NEWS
index 870b7cd..2a31483 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -166,6 +166,9 @@ Core and Builtins
Library
-------
+- Issue #5257: refactored all tests in distutils, so they use
+ support.TempdirManager, to avoid writing in the tests directory.
+
- Issue #4524: distutils build_script command failed with --with-suffix=3.
Initial patch by Amaury Forgeot d'Arc.