Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2.7] bpo-37359: Add --cleanup option to python3 -m test (GH-14332) #14333

Merged
merged 1 commit into from Jun 24, 2019
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -375,7 +375,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
'runleaks', 'huntrleaks=', 'memlimit=', 'randseed=',
'multiprocess=', 'slaveargs=', 'forever', 'header', 'pgo',
'failfast', 'match=', 'testdir=', 'list-tests', 'list-cases',
'coverage', 'matchfile=', 'fail-env-changed'])
'coverage', 'matchfile=', 'fail-env-changed', 'cleanup'])
except getopt.error, msg:
usage(2, msg)

@@ -388,6 +388,7 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
list_tests = False
list_cases_opt = False
fail_env_changed = False
cleanup_tests = False
for o, a in opts:
if o in ('-h', '--help'):
usage(0)
@@ -490,6 +491,8 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
list_cases_opt = True
elif o == '--fail-env-changed':
fail_env_changed = True
elif o == '--cleanup':
cleanup_tests = True
else:
print >>sys.stderr, ("No handler for option {}. Please "
"report this as a bug at http://bugs.python.org.").format(o)
@@ -527,6 +530,22 @@ def main(tests=None, testdir=None, verbose=0, quiet=False,
print >>sys.stderr, msg
sys.exit(2)

if cleanup_tests:
import glob

os.chdir(support.SAVEDCWD)
path = os.path.join(TEMPDIR, 'test_python_*')
print("Cleanup %s directory" % TEMPDIR)
for name in glob.glob(path):
if os.path.isdir(name):
print("Remove directory: %s" % name)
support.rmtree(name)
else:
print("Remove file: %s" % name)
support.unlink(name)
sys.exit(0)


if slaveargs is not None:
args, kwargs = json.loads(slaveargs)
if testdir:
@@ -855,6 +855,12 @@ $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
TESTOPTS= -l $(EXTRATESTOPTS)
TESTPROG= $(srcdir)/Lib/test/regrtest.py
TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS)

# Remove "test_python_*" directories of previous failed test jobs.
# Pass TESTOPTS options because it can contain --tempdir option.
cleantest: build_all
$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) --cleanup

test: @DEF_MAKE_RULE@ platform
-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
@@ -0,0 +1,4 @@
Add --cleanup option to python3 -m test to remove ``test_python_*``
directories of previous failed jobs. Add "make cleantest" to run
``python3 -m test --cleanup``.