From f5da86062ed852cbe6bcf57cc23b1228f15de922 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Mon, 15 Sep 2014 21:35:07 -0400 Subject: Move test helpers into the coverage package so others can use them --HG-- rename : tests/backunittest.py => coverage/backunittest.py --- coverage/backunittest.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 coverage/backunittest.py (limited to 'coverage/backunittest.py') diff --git a/coverage/backunittest.py b/coverage/backunittest.py new file mode 100644 index 00000000..6498397f --- /dev/null +++ b/coverage/backunittest.py @@ -0,0 +1,41 @@ +"""Implementations of unittest features from the future.""" + +# Use unittest2 if it's available, otherwise unittest. This gives us +# backported features for 2.6. +try: + import unittest2 as unittest # pylint: disable=F0401 +except ImportError: + import unittest + + +def unittest_has(method): + """Does `unitttest.TestCase` have `method` defined?""" + return hasattr(unittest.TestCase, method) + + +class TestCase(unittest.TestCase): + """Just like unittest.TestCase, but with assert methods added. + + Designed to be compatible with 3.1 unittest. Methods are only defined if + `unittest` doesn't have them. + + """ + # pylint: disable=missing-docstring + + if not unittest_has('assertCountEqual'): + if unittest_has('assertSameElements'): + def assertCountEqual(self, *args, **kwargs): + # pylint: disable=no-member + return self.assertSameElements(*args, **kwargs) + else: + def assertCountEqual(self, s1, s2): + """Assert these have the same elements, regardless of order.""" + self.assertEqual(set(s1), set(s2)) + + if not unittest_has('assertRaisesRegex'): + def assertRaisesRegex(self, *args, **kwargs): + return self.assertRaisesRegexp(*args, **kwargs) + + if not unittest_has('assertRegex'): + def assertRegex(self, *args, **kwargs): + return self.assertRegexpMatches(*args, **kwargs) -- cgit v1.2.1