Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion Lib/test/regrtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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)
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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:
Expand Down
6 changes: 6 additions & 0 deletions Makefile.pre.in
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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``.