diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-01 17:10:57 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2015-01-01 17:10:57 -0500 |
commit | 0bc8f31f5d694578cec3d0b8b4951db06fc921fb (patch) | |
tree | 776baa73594ac24508fa1d41979fec6d02e5e362 /setuptools/tests/contexts.py | |
parent | 189b1c027e626496b7b7bb1b5996123f54286075 (diff) | |
download | python-setuptools-git-0bc8f31f5d694578cec3d0b8b4951db06fc921fb.tar.gz |
Move contexts to their own module
Diffstat (limited to 'setuptools/tests/contexts.py')
-rw-r--r-- | setuptools/tests/contexts.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/setuptools/tests/contexts.py b/setuptools/tests/contexts.py new file mode 100644 index 00000000..a9626ae6 --- /dev/null +++ b/setuptools/tests/contexts.py @@ -0,0 +1,59 @@ +import tempfile +import os +import shutil +import sys +import contextlib + +from ..compat import StringIO + + +@contextlib.contextmanager +def tempdir(cd=lambda dir:None): + temp_dir = tempfile.mkdtemp() + orig_dir = os.getcwd() + try: + cd(temp_dir) + yield temp_dir + finally: + cd(orig_dir) + shutil.rmtree(temp_dir) + + +@contextlib.contextmanager +def environment(**updates): + old_env = os.environ.copy() + os.environ.update(updates) + try: + yield + finally: + for key in updates: + del os.environ[key] + os.environ.update(old_env) + + +@contextlib.contextmanager +def argv(repl): + old_argv = sys.argv[:] + sys.argv[:] = repl + yield + sys.argv[:] = old_argv + + +@contextlib.contextmanager +def quiet(): + """ + Redirect stdout/stderr to StringIO objects to prevent console output from + distutils commands. + """ + + old_stdout = sys.stdout + old_stderr = sys.stderr + new_stdout = sys.stdout = StringIO() + new_stderr = sys.stderr = StringIO() + try: + yield new_stdout, new_stderr + finally: + new_stdout.seek(0) + new_stderr.seek(0) + sys.stdout = old_stdout + sys.stderr = old_stderr |