From 2dd380575cc4a2a298b4ecfaeffa48d3186b46eb Mon Sep 17 00:00:00 2001 From: xoraxax Date: Fri, 20 Apr 2007 00:39:27 +0200 Subject: [PATCH] [svn r42188] Revive test/compat.py again, seems to work fine for me. Can be used by patching sys.modules["unittest"] in the conftest.py file. --HG-- branch : trunk --- py/test/compat.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 py/test/compat.py diff --git a/py/test/compat.py b/py/test/compat.py new file mode 100644 index 000000000..a858408a6 --- /dev/null +++ b/py/test/compat.py @@ -0,0 +1,59 @@ +import py +from py.__.test.outcome import Failed, Passed + + +class TestCaseUnit(py.test.collect.Function): + """ compatibility Unit executor for TestCase methods + honouring setUp and tearDown semantics. + """ + def execute(self, session): + boundmethod = self.obj + instance = boundmethod.im_self + instance.setUp() + try: + boundmethod() + finally: + instance.tearDown() + return Passed() + +class TestCase(object): + """compatibility class of unittest's TestCase. """ + Function = TestCaseUnit + + def setUp(self): + pass + + def tearDown(self): + pass + + def fail(self, msg=None): + """ fail immediate with given message. """ + raise Failed(msg=msg) + + def assertRaises(self, excclass, func, *args, **kwargs): + py.test.raises(excclass, func, *args, **kwargs) + failUnlessRaises = assertRaises + + # dynamically construct (redundant) methods + aliasmap = [ + ('x', 'not x', 'assert_, failUnless'), + ('x', 'x', 'failIf'), + ('x,y', 'x!=y', 'failUnlessEqual,assertEqual, assertEquals'), + ('x,y', 'x==y', 'failIfEqual,assertNotEqual, assertNotEquals'), + ] + items = [] + for sig, expr, names in aliasmap: + names = map(str.strip, names.split(',')) + sigsubst = expr.replace('y', '%s').replace('x', '%s') + for name in names: + items.append(""" + def %(name)s(self, %(sig)s, msg=""): + __tracebackhide__ = True + if %(expr)s: + raise Failed(msg=msg + (%(sigsubst)r %% (%(sig)s))) + """ % locals() ) + + source = "".join(items) + exec py.code.Source(source).compile() + +__all__ = ['TestCase']