testbase.py revision 324c4644fee44b9898524c09511bd33c3f12e2df
1324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverimport unittest 2324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 3324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverclass BrokenTest(unittest.TestCase.failureException): 4324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def __repr__(self): 5324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver name, reason = self.args 6324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return '%s: %s: %s works now' % ( 7324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver (self.__class__.__name__, name, reason)) 8324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 9324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 10324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruverdef broken(reason, *exceptions): 11324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver '''Indicates a failing (or erroneous) test case fails that should succeed. 12324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver If the test fails with an exception, list the exception type in args''' 13324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def wrapper(test_method): 14324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver def replacement(*args, **kwargs): 15324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver try: 16324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver test_method(*args, **kwargs) 17324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver except exceptions or unittest.TestCase.failureException: 18324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver pass 19324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver else: 20324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver raise BrokenTest(test_method.__name__, reason) 21324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver replacement.__doc__ = test_method.__doc__ 22324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver replacement.__name__ = 'XXX_' + test_method.__name__ 23324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver replacement.todo = reason 24324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return replacement 25324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver return wrapper 26324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 27324c4644fee44b9898524c09511bd33c3f12e2dfBen Gruver 28