[Python-checkins] cpython: Issue #17283: Share code between __main__.py and regrtest.py in Lib/test.
chris.jerdonek
python-checkins at python.org
Wed Feb 27 18:06:33 CET 2013
http://hg.python.org/cpython/rev/e0f3dcd30af8
changeset: 82416:e0f3dcd30af8
user: Chris Jerdonek <chris.jerdonek at gmail.com>
date: Wed Feb 27 09:02:53 2013 -0800
summary:
Issue #17283: Share code between __main__.py and regrtest.py in Lib/test.
This commit also removes TESTCWD from regrtest.py's global namespace.
files:
Lib/test/__main__.py | 14 +----------
Lib/test/regrtest.py | 38 ++++++++++++++++---------------
Misc/NEWS | 3 ++
3 files changed, 25 insertions(+), 30 deletions(-)
diff --git a/Lib/test/__main__.py b/Lib/test/__main__.py
--- a/Lib/test/__main__.py
+++ b/Lib/test/__main__.py
@@ -1,13 +1,3 @@
-from test import regrtest, support
+from test import regrtest
-
-TEMPDIR, TESTCWD = regrtest._make_temp_dir_for_build(regrtest.TEMPDIR)
-regrtest.TEMPDIR = TEMPDIR
-regrtest.TESTCWD = TESTCWD
-
-# Run the tests in a context manager that temporary changes the CWD to a
-# temporary and writable directory. If it's not possible to create or
-# change the CWD, the original CWD will be used. The original CWD is
-# available from support.SAVEDCWD.
-with support.temp_cwd(TESTCWD, quiet=True):
- regrtest.main()
+regrtest.main_in_temp_cwd()
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -200,7 +200,14 @@
RESOURCE_NAMES = ('audio', 'curses', 'largefile', 'network',
'decimal', 'cpu', 'subprocess', 'urlfetch', 'gui')
-TEMPDIR = os.path.abspath(tempfile.gettempdir())
+# When tests are run from the Python build directory, it is best practice
+# to keep the test files in a subfolder. This eases the cleanup of leftover
+# files using the "make distclean" command.
+if sysconfig.is_python_build():
+ TEMPDIR = os.path.join(sysconfig.get_config_var('srcdir'), 'build')
+else:
+ TEMPDIR = tempfile.gettempdir()
+TEMPDIR = os.path.abspath(TEMPDIR)
class _ArgParser(argparse.ArgumentParser):
@@ -1543,13 +1550,9 @@
initial_indent=blanks, subsequent_indent=blanks))
-def _make_temp_dir_for_build(TEMPDIR):
- # When tests are run from the Python build directory, it is best practice
- # to keep the test files in a subfolder. It eases the cleanup of leftover
- # files using command "make distclean".
+def main_in_temp_cwd():
+ """Run main() in a temporary working directory."""
if sysconfig.is_python_build():
- TEMPDIR = os.path.join(sysconfig.get_config_var('srcdir'), 'build')
- TEMPDIR = os.path.abspath(TEMPDIR)
try:
os.mkdir(TEMPDIR)
except FileExistsError:
@@ -1558,10 +1561,16 @@
# Define a writable temp dir that will be used as cwd while running
# the tests. The name of the dir includes the pid to allow parallel
# testing (see the -j option).
- TESTCWD = 'test_python_{}'.format(os.getpid())
+ test_cwd = 'test_python_{}'.format(os.getpid())
+ test_cwd = os.path.join(TEMPDIR, test_cwd)
- TESTCWD = os.path.join(TEMPDIR, TESTCWD)
- return TEMPDIR, TESTCWD
+ # Run the tests in a context manager that temporarily changes the CWD to a
+ # temporary and writable directory. If it's not possible to create or
+ # change the CWD, the original CWD will be used. The original CWD is
+ # available from support.SAVEDCWD.
+ with support.temp_cwd(test_cwd, quiet=True):
+ main()
+
if __name__ == '__main__':
# Remove regrtest.py's own directory from the module search path. Despite
@@ -1585,11 +1594,4 @@
# sanity check
assert __file__ == os.path.abspath(sys.argv[0])
- TEMPDIR, TESTCWD = _make_temp_dir_for_build(TEMPDIR)
-
- # Run the tests in a context manager that temporary changes the CWD to a
- # temporary and writable directory. If it's not possible to create or
- # change the CWD, the original CWD will be used. The original CWD is
- # available from support.SAVEDCWD.
- with support.temp_cwd(TESTCWD, quiet=True):
- main()
+ main_in_temp_cwd()
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -878,6 +878,9 @@
Tests
-----
+- Issue #17283: Share code between `__main__.py` and `regrtest.py` in
+ `Lib/test`.
+
- Issue #17249: convert a test in test_capi to use unittest and reap threads.
- Issue #17107: Test client-side SNI support in urllib.request thanks to
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list