| Index: tools/telemetry/third_party/coverage/coverage/backunittest.py
|
| diff --git a/tools/telemetry/third_party/coverage/coverage/backunittest.py b/tools/telemetry/third_party/coverage/coverage/backunittest.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..09574ccb61d1e53d2fe2abf7fb0bc5cf3c1d8207
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/coverage/coverage/backunittest.py
|
| @@ -0,0 +1,42 @@
|
| +# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
|
| +# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
|
| +
|
| +"""Implementations of unittest features from the future."""
|
| +
|
| +# Use unittest2 if it's available, otherwise unittest. This gives us
|
| +# back-ported features for 2.6.
|
| +try:
|
| + import unittest2 as unittest
|
| +except ImportError:
|
| + import unittest
|
| +
|
| +
|
| +def unittest_has(method):
|
| + """Does `unittest.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
|
| +
|
| + # Many Pythons have this method defined. But PyPy3 has a bug with it
|
| + # somehow (https://bitbucket.org/pypy/pypy/issues/2092), so always use our
|
| + # own implementation that works everywhere, at least for the ways we're
|
| + # calling it.
|
| + def assertCountEqual(self, s1, s2):
|
| + """Assert these have the same elements, regardless of order."""
|
| + self.assertEqual(sorted(s1), sorted(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)
|
|
|