# HG changeset patch # Parent 2fce793ec0a24ddd731fc0c8535fa878794642b4 Issue #nnnnn: Clean up weak references before checking for dangling threads Also remove test_main() and its hard-coded list of test classes from test_httplib.py. diff -r 2fce793ec0a2 Lib/test/libregrtest/save_env.py --- a/Lib/test/libregrtest/save_env.py Wed Aug 17 14:04:19 2016 +0200 +++ b/Lib/test/libregrtest/save_env.py Wed Aug 17 14:20:51 2016 +0000 @@ -1,4 +1,5 @@ import builtins +import gc import locale import logging import os @@ -268,6 +269,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): saved_values = self.saved_values del self.saved_values + gc.collect() # Some resources use weak references for name, get, restore in self.resource_info(): current = get() original = saved_values.pop(name) diff -r 2fce793ec0a2 Lib/test/test_httplib.py --- a/Lib/test/test_httplib.py Wed Aug 17 14:04:19 2016 +0200 +++ b/Lib/test/test_httplib.py Wed Aug 17 14:20:51 2016 +0000 @@ -940,6 +940,7 @@ thread = threading.Thread(target=run_server) thread.start() + self.addCleanup(thread.join) conn = client.HTTPConnection(*serv.getsockname()) conn.request("CONNECT", "dummy:1234") response = conn.getresponse() @@ -953,7 +954,7 @@ finally: response.close() conn.close() - thread.join() + thread.join() self.assertEqual(result, b"proxied data\n") class ExtendedReadTest(TestCase): @@ -1711,13 +1712,5 @@ self.assertIn('header: {}'.format(expected_header), lines) -@support.reap_threads -def test_main(verbose=None): - support.run_unittest(HeaderTests, OfflineTest, BasicTest, TimeoutTest, - PersistenceTest, - HTTPSTest, RequestBodyTest, SourceAddressTest, - HTTPResponseTest, ExtendedReadTest, - ExtendedReadTestChunked, TunnelTests) - if __name__ == '__main__': test_main() diff -r 2fce793ec0a2 Misc/NEWS --- a/Misc/NEWS Wed Aug 17 14:04:19 2016 +0200 +++ b/Misc/NEWS Wed Aug 17 14:20:51 2016 +0000 @@ -13,6 +13,12 @@ Library ------- +Tests +----- + +- Issue #nnnnn: Call gc.collect() before checking each test for "dangling + threads", since the dangling threads are weak references. + What's New in Python 3.6.0 alpha 4 ==================================