def test_exc_tuple(self): """ Supplying 3 args means that a return value from ``sys.exc_info()`` is being supplied. """ with self.assertRaises(TypeError) as ctx: events.get_exc_info('foo', 'bar', 'baz') self.assertTrue(unicode(ctx.exception).startswith( u"exc_info tuple must be a valid exception instance" ))
def test_missing_args(self): """ Supplying no args must raise a ``TypeError``. """ with self.assertRaises(TypeError) as ctx: events.get_exc_info() self.assertEqual( unicode(ctx.exception), u'Expected at least one argument', )
def test_not_an_exception(self): """ Supplying one arg that is not an exception instance must raise a ``TypeError``. """ with self.assertRaises(TypeError) as ctx: events.get_exc_info('foobar') self.assertEqual( unicode(ctx.exception), u"An exception instance must be supplied as the first argument " "(received:'foobar')", )
def test_return_sys_exc_info(self): """ Supplying an exc_info tuple must return a tuple in a ``sys.exc_info()`` style format. """ exc_info = (RuntimeError, RuntimeError(), None) self.assertEqual( events.get_exc_info(*exc_info), exc_info )
def test_exception(self): """ Supplying an exception instance must return a tuple in a ``sys.exc_info()`` style format. """ class TestException(Exception): pass exc = TestException() ret = events.get_exc_info(exc) self.assertTupleEqual(ret, (TestException, exc, None))
def test_exception_class(self): """ Supplying an exception CLASS must return a tuple in a ``sys.exc_info()`` style format. """ class TestException(Exception): pass ret = events.get_exc_info(TestException) self.assertEquals(len(ret), 3) exc_type, exc_value, exc_tb = ret self.assertIs(exc_type, TestException) self.assertIsInstance(exc_value, TestException) self.assertIsNone(exc_tb)
def test_4_args(self): """ Supplying 4 args must raise a ``TypeError``. """ with self.assertRaises(TypeError): events.get_exc_info('foo', 'bar', 'baz', 'gak')