Cleanup regrtest "main()" function

* Rename libregrtest.main_in_temp_cwd() to libregrtest.main()
* Add regrtest.main_in_temp_cwd() alias to libregrtest.main()
* Move old main_in_temp_cwd() code into libregrtest.Regrtest.main()
* Update multiple scripts to call libregrtest.main()
This commit is contained in:
Victor Stinner 2016-03-24 17:53:20 +01:00
parent 8c08e0db8f
commit 3aac0adfe0
7 changed files with 38 additions and 36 deletions

View File

@ -1,3 +1,2 @@
from test import regrtest from test.libregrtest import main
main()
regrtest.main_in_temp_cwd()

View File

@ -1,6 +1,5 @@
# This should be equivalent to running regrtest.py from the cmdline. # This should be equivalent to running regrtest.py from the cmdline.
# It can be especially handy if you're in an interactive shell, e.g., # It can be especially handy if you're in an interactive shell, e.g.,
# from test import autotest. # from test import autotest.
from test.libregrtest import main
from test import regrtest main()
regrtest.main()

View File

@ -1,2 +1,5 @@
# We import importlib *ASAP* in order to test #15386
import importlib
from test.libregrtest.cmdline import _parse_args, RESOURCE_NAMES from test.libregrtest.cmdline import _parse_args, RESOURCE_NAMES
from test.libregrtest.main import main, main_in_temp_cwd from test.libregrtest.main import main

View File

@ -415,6 +415,28 @@ class Regrtest:
os.system("leaks %d" % os.getpid()) os.system("leaks %d" % os.getpid())
def main(self, tests=None, **kwargs): def main(self, tests=None, **kwargs):
global TEMPDIR
if sysconfig.is_python_build():
try:
os.mkdir(TEMPDIR)
except FileExistsError:
pass
# 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).
test_cwd = 'test_python_{}'.format(os.getpid())
test_cwd = os.path.join(TEMPDIR, test_cwd)
# 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):
self._main(tests, kwargs)
def _main(self, tests, kwargs):
self.ns = self.parse_args(kwargs) self.ns = self.parse_args(kwargs)
if self.ns.slaveargs is not None: if self.ns.slaveargs is not None:
@ -473,26 +495,5 @@ def printlist(x, width=70, indent=4):
def main(tests=None, **kwargs): def main(tests=None, **kwargs):
"""Run the Python suite."""
Regrtest().main(tests=tests, **kwargs) Regrtest().main(tests=tests, **kwargs)
def main_in_temp_cwd():
"""Run main() in a temporary working directory."""
if sysconfig.is_python_build():
try:
os.mkdir(TEMPDIR)
except FileExistsError:
pass
# 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).
test_cwd = 'test_python_{}'.format(os.getpid())
test_cwd = os.path.join(TEMPDIR, test_cwd)
# 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()

View File

@ -11,11 +11,11 @@ import importlib
import os import os
import sys import sys
from test.libregrtest import main_in_temp_cwd from test.libregrtest import main
# alias needed by other scripts # Alias for backward compatibility (just in case)
main = main_in_temp_cwd main_in_temp_cwd = main
def _main(): def _main():

View File

@ -8,10 +8,10 @@ this script.
""" """
import importlib import importlib
import sys import sys
from test import regrtest from test import libregrtest
if __name__ == '__main__': if __name__ == '__main__':
__builtins__.__import__ = importlib.__import__ __builtins__.__import__ = importlib.__import__
sys.path_importer_cache.clear() sys.path_importer_cache.clear()
regrtest.main(quiet=True, verbose2=True) libregrtest.main(quiet=True, verbose2=True)

View File

@ -26,5 +26,5 @@ for dir in sys.path:
# Add the "test" directory to PYTHONPATH. # Add the "test" directory to PYTHONPATH.
sys.path = sys.path + [test] sys.path = sys.path + [test]
import regrtest # Standard Python tester. import libregrtest # Standard Python tester.
regrtest.main() libregrtest.main()