From e0be91a4c9804828f4a2531cfdb785ff978e10cf Mon Sep 17 00:00:00 2001 From: Jeff Forcier Date: Mon, 10 Sep 2012 11:34:52 -0700 Subject: [PATCH] Fixes to failing-test teardowns to avoid more exceptions or hangs (cherry picked from commit 734f3d6f42ef1564f473fee5526e0354fc8196fc) Conflicts: test.py --- test.py | 8 +++++++- tests/test_client.py | 8 +++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/test.py b/test.py index c0e9d15..28ebbdb 100755 --- a/test.py +++ b/test.py @@ -28,6 +28,7 @@ import sys import unittest from optparse import OptionParser import paramiko +import threading sys.path.append('tests') @@ -141,7 +142,12 @@ def main(): if len(args) > 0: filter = '|'.join(args) suite = filter_suite_by_re(suite, filter) - runner.run(suite) + result = runner.run(suite) + # Clean up stale threads from poorly cleaned-up tests. + # TODO: make that not a problem, jeez + for thread in threading.enumerate(): + if thread is not threading.currentThread(): + thread._Thread__stop() if __name__ == '__main__': diff --git a/tests/test_client.py b/tests/test_client.py index 2f9b9a7..08ef1f9 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -68,11 +68,9 @@ class SSHClientTest (unittest.TestCase): thread.start() def tearDown(self): - if hasattr(self, 'tc'): - self.tc.close() - self.ts.close() - self.socks.close() - self.sockl.close() + for attr in "tc ts socks sockl".split(): + if hasattr(self, attr): + getattr(self, attr).close() def _run(self): self.socks, addr = self.sockl.accept()