diff options
-rw-r--r-- | coverage/context.py | 16 | ||||
-rw-r--r-- | tests/test_context.py | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/coverage/context.py b/coverage/context.py index fb1b76ac..d2f75db2 100644 --- a/coverage/context.py +++ b/coverage/context.py @@ -78,5 +78,19 @@ def qualname_from_frame(frame): qname = cls.__module__ + '.' + cls.__name__ + "." + fname break else: - qname = func.__module__ + '.' + fname + # Support for old-style classes. + def mro(bases): + for base in bases: + f = base.__dict__.get(fname, None) + if f is func: + return base.__module__ + '.' + base.__name__ + "." + fname + for base in bases: + qname = mro(base.__bases__) + if qname is not None: + return qname + return None + qname = mro([self.__class__]) + if qname is None: + qname = func.__module__ + '.' + fname + return qname diff --git a/tests/test_context.py b/tests/test_context.py index 0aa31e4b..0baa51e9 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -284,4 +284,4 @@ class QualnameTest(CoverageTest): if not env.PY2: self.skipTest("Old-style classes are only in Python 2") self.assertEqual(OldStyle().meth(), "tests.test_context.OldStyle.meth") - self.assertEqual(OldChild().meth(), "tests.test_context.OldChild.meth") + self.assertEqual(OldChild().meth(), "tests.test_context.OldStyle.meth") |