import threading import time import unittest from test import test_support class Thread(threading.Thread): def __init__(self): threading.Thread.__init__(self) self._stop = False self.ready = threading.Event() def stop(self): self._stop = True self.join() def run(self): self.ready.set() while not self._stop: time.sleep(0.5) class LeakTests(unittest.TestCase): def test_leak(self): def foo(): raise RuntimeError("foo") self.assertRaises(RuntimeError, foo) def setUp(self): self._thread = Thread() self._thread.start() self._thread.ready.wait() def tearDown(self): self._thread.stop() def test_main(): test_support.run_unittest(LeakTests) if __name__ == "__main__": test_main()