[issue27787] Avoid test_main() in test_httplib; gc.collect() dangling threads

Martin Panter report at bugs.python.org
Wed Aug 17 10:33:36 EDT 2016


New submission from Martin Panter:

In Issue 12319, there are many iterations of a patch that adds a new TestCase subclass to Lib/test/test_httplib.py. However it never got run by the main regrtest infrastructure, because nobody remembered to add the class to the list of test classes. So I want to remove test_main(). It seems this would let the classes be automatically discovered (like normal unittest usage).

I understand @reap_threads is to avoid background threads continuing between tests (especially when a test fails). I improved the cleanup of the background thread in one test. There are three other test methods using test.ssl_servers.make_https_server(), which also runs a background thread, but that already seems to clean itself up properly, via case.addCleanup(server.join).

I found that the test infrastructure randomly complained about dangling threads without @reap_threads. It uses a set of weak references to thread objects. The solution seems to be to call gc.collect() before checking. This is what @reap_threads does, so maybe my patch would eliminate the need for @reap_threads in other test files as well. In fact, if everybody called join() on their threads, we may be able to eliminate @reap_threads altogether.

----------
components: Tests
files: httplib-tests.patch
keywords: patch
messages: 272954
nosy: martin.panter
priority: normal
severity: normal
stage: patch review
status: open
title: Avoid test_main() in test_httplib; gc.collect() dangling threads
type: enhancement
versions: Python 3.6
Added file: http://bugs.python.org/file44134/httplib-tests.patch

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue27787>
_______________________________________


More information about the Python-bugs-list mailing list