summaryrefslogtreecommitdiff
path: root/Lib/distutils/tests/support.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/distutils/tests/support.py')
-rw-r--r--Lib/distutils/tests/support.py41
1 files changed, 30 insertions, 11 deletions
diff --git a/Lib/distutils/tests/support.py b/Lib/distutils/tests/support.py
index 2a03765293..783318e8d3 100644
--- a/Lib/distutils/tests/support.py
+++ b/Lib/distutils/tests/support.py
@@ -2,11 +2,19 @@
import os
import shutil
import tempfile
+from copy import deepcopy
+import warnings
-from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL
from distutils import log
-from distutils.dist import Distribution
-from distutils.cmd import Command
+from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL
+from distutils.core import Distribution
+
+def capture_warnings(func):
+ def _capture_warnings(*args, **kw):
+ with warnings.catch_warnings():
+ warnings.simplefilter("ignore")
+ return func(*args, **kw)
+ return _capture_warnings
class LoggingSilencer(object):
@@ -19,18 +27,12 @@ class LoggingSilencer(object):
self._old_log = log.Log._log
log.Log._log = self._log
self.logs = []
- self._old_warn = Command.warn
- Command.warn = self._warn
def tearDown(self):
log.set_threshold(self.threshold)
log.Log._log = self._old_log
- Command.warn = self._old_warn
super(LoggingSilencer, self).tearDown()
- def _warn(self, msg):
- self.logs.append(('', msg, ''))
-
def _log(self, level, msg, args):
if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
raise ValueError('%s wrong log level' % str(level))
@@ -47,7 +49,6 @@ class LoggingSilencer(object):
def clear_logs(self):
self.logs = []
-
class TempdirManager(object):
"""Mix-in class that handles temporary directories for test cases.
@@ -62,7 +63,7 @@ class TempdirManager(object):
super(TempdirManager, self).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.
@@ -76,6 +77,7 @@ class TempdirManager(object):
def write_file(self, path, content='xxx'):
"""Writes a file in the given path.
+
path can be a string or a sequence.
"""
if isinstance(path, (list, tuple)):
@@ -112,3 +114,20 @@ class DummyCommand:
def ensure_finalized(self):
pass
+
+class EnvironGuard(object):
+
+ def setUp(self):
+ super(EnvironGuard, self).setUp()
+ self.old_environ = deepcopy(os.environ)
+
+ def tearDown(self):
+ for key, value in self.old_environ.items():
+ if os.environ.get(key) != value:
+ os.environ[key] = value
+
+ for key in os.environ.keys():
+ if key not in self.old_environ:
+ del os.environ[key]
+
+ super(EnvironGuard, self).tearDown()