From e78b48ab20a7250ccb50c878183ae68ea1748c40 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 9 Jun 2012 10:57:00 +1200 Subject: Start conversion to nose. RIP pry. --- test/tutils.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'test/tutils.py') diff --git a/test/tutils.py b/test/tutils.py index 8ebb1ecd..c46221a9 100644 --- a/test/tutils.py +++ b/test/tutils.py @@ -133,3 +133,42 @@ class ProxTest(libpry.AutoTree): pthread = self.findAttr("proxy") return pthread.tmaster.log + + +def raises(exc, obj, *args, **kwargs): + """ + Assert that a callable raises a specified exception. + + :exc An exception class or a string. If a class, assert that an + exception of this type is raised. If a string, assert that the string + occurs in the string representation of the exception, based on a + case-insenstivie match. + + :obj A callable object. + + :args Arguments to be passsed to the callable. + + :kwargs Arguments to be passed to the callable. + """ + try: + apply(obj, args, kwargs) + except Exception, v: + if isinstance(exc, basestring): + if exc.lower() in str(v).lower(): + return + else: + raise AssertionError( + "Expected %s, but caught %s"%( + repr(str(exc)), v + ) + ) + else: + if isinstance(v, exc): + return + else: + raise AssertionError( + "Expected %s, but caught %s %s"%( + exc.__name__, v.__class__.__name__, str(v) + ) + ) + raise AssertionError("No exception raised.") -- cgit v1.2.3