diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-26 21:22:44 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-07-26 21:25:22 -0400 |
commit | 07c3c5dbf5bc3ebe22855fd77a388f12a0bec066 (patch) | |
tree | f60c635bf03a1eb37b1388ec70b2de5cc59ba37c | |
parent | 4e0f1e1be25b38404b9f1481c1b2076949ed0613 (diff) | |
download | python-coveragepy-git-07c3c5dbf5bc3ebe22855fd77a388f12a0bec066.tar.gz |
Don't be fooled by a class named test_something. Fixes #829
-rw-r--r-- | CHANGES.rst | 5 | ||||
-rw-r--r-- | coverage/context.py | 4 | ||||
-rw-r--r-- | tests/test_context.py | 5 |
3 files changed, 12 insertions, 2 deletions
diff --git a/CHANGES.rst b/CHANGES.rst index 9eace5d2..8833c0d0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -20,7 +20,10 @@ development at the same time, like 4.5.x and 5.0. Unreleased ---------- -- Nothing yet. +- A class named "test_something" no longer confuses the `test_function` dynamic + context setting. Fixes `issue 829`_. + +.. _issue 829: https://github.com/nedbat/coveragepy/issues/829 .. _changes_50a6: diff --git a/coverage/context.py b/coverage/context.py index 903fc51b..ea13da21 100644 --- a/coverage/context.py +++ b/coverage/context.py @@ -52,7 +52,9 @@ def qualname_from_frame(frame): method = getattr(self, fname, None) if method is None: - func = frame.f_globals[fname] + func = frame.f_globals.get(fname) + if func is None: + return None return func.__module__ + '.' + fname func = getattr(method, '__func__', None) diff --git a/tests/test_context.py b/tests/test_context.py index 5d40e339..21d29a0c 100644 --- a/tests/test_context.py +++ b/tests/test_context.py @@ -285,3 +285,8 @@ class QualnameTest(CoverageTest): 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.OldStyle.meth") + + def test_bug_829(self): + # A class with a name like a function shouldn't confuse qualname_from_frame. + class test_something(object): + self.assertEqual(get_qualname(), None) |