From 34c374a1e1dad468869c8e5dc6fb2ea7b1d90c7e Mon Sep 17 00:00:00 2001 From: Lance Stout Date: Fri, 17 Dec 2010 13:11:03 -0500 Subject: Make tests pass for catching exceptions. May now use sys.excepthook to catch exceptions from threaded handlers. --- tests/test_stream_exceptions.py | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) (limited to 'tests') diff --git a/tests/test_stream_exceptions.py b/tests/test_stream_exceptions.py index b7be6485..e1b70d39 100644 --- a/tests/test_stream_exceptions.py +++ b/tests/test_stream_exceptions.py @@ -10,6 +10,7 @@ class TestStreamExceptions(SleekTest): """ def tearDown(self): + sys.excepthook = sys.__excepthook__ self.stream_close() def testXMPPErrorException(self): @@ -78,9 +79,16 @@ class TestStreamExceptions(SleekTest): def testUnknownException(self): """Test raising an generic exception in a threaded handler.""" + raised_errors = [] + def message(msg): raise ValueError("Did something wrong") + def catch_error(*args, **kwargs): + raised_errors.append(True) + + sys.excepthook = catch_error + self.stream_start() self.xmpp.add_event_handler('message', message) @@ -90,21 +98,20 @@ class TestStreamExceptions(SleekTest): """) - if sys.version_info < (3, 0): - self.send(""" - - - - - SleekXMPP got into trouble. - - - - """) - else: - # Unfortunately, tracebacks do not make for very portable tests. - pass + self.send(""" + + + + + SleekXMPP got into trouble. + + + + """) + + self.assertEqual(raised_errors, [True], "Exception was not raised: %s" % raised_errors) + suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamExceptions) -- cgit v1.2.3