diff --git a/headphones/unittestcompat.py b/headphones/unittestcompat.py index 8eb441f1..12a497be 100644 --- a/headphones/unittestcompat.py +++ b/headphones/unittestcompat.py @@ -1,20 +1,27 @@ import sys -from unittest import TestCase as TC +if sys.version_info < (2, 7): + import unittest2 as unittest + from unittest2 import TestCase as TC +else: + import unittest + from unittest import TestCase as TC -def _is26(): - if sys.version_info[0] == 2 and sys.version_info[1] == 6: - return True - return False +skip = unittest.skip -_dummy = _is26() +_dummy = False + +# less than 2.6 ... +if sys.version_info[0] == 2 and sys.version_info[1] <= 6: + _dummy = True def _d(f): def decorate(self, *args, **kw): - if _dummy: - return self.assertTrue(True) - return f(self, *args, **kw) + if not _dummy: + return f(self, *args, **kw) + return self.assertTrue(True) return decorate + class TestCase(TC): """ Wrapper for python 2.6 stubs @@ -38,6 +45,9 @@ class TestCase(TC): def assertRegexpMatches(self, *args, **kw): return super(TestCase, self).assertRegexpMatches(*args, **kw) + # ----------------------------------------------------------- + # NOT DUMMY ASSERTIONS + # ----------------------------------------------------------- def assertIsNone(self, val, msg=None): if not _dummy: return super(TestCase, self).assertIsNone(val, msg) @@ -50,24 +60,37 @@ class TestCase(TC): tst = val is not None return super(TestCase, self).assertTrue(tst, msg) + def assertRaises(self, exc, msg=None): + if not _dummy: + return super(TestCase, self).assertRaises(exc, msg) + return TestCase._TestCaseRaiseStub(self, exc, msg=msg) + + def assertRaisesRegexp(self, exc, regex, msg=None): + if not _dummy: + return super(TestCase, self).assertRaises(exc, msg) + return TestCase._TestCaseRaiseStub(self, exc, regex=regex, msg=msg) + class _TestCaseRaiseStub: - def __init__(self, exc, tc): + """ Internal stuff for stubbing `assertRaises*` """ + + def __init__(self, test_case, exc, regex=None, msg=None): self.exc = exc - self.tc = tc + self.test_case = test_case + self.regex = regex + self.msg = msg def __enter__(self): return self def __exit__(self, tp, value, traceback): tst = tp is self.exc - self.tc.assertTrue(tst) + self.test_case.assertTrue(tst, msg=self.msg) self.exception = value - return True - def assertRaises(self, exc, msg=None): - if not _dummy: - return super(TestCase, self).assertRaises(exc, msg) - return TestCase._TestCaseRaiseStub(exc, self) + # TODO: implement self.regex checking + + # True indicates, that exception is handled + return True def TestArgs(*parameters): def tuplify(x):