summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2019-07-26 21:22:44 -0400
committerNed Batchelder <ned@nedbatchelder.com>2019-07-26 21:25:22 -0400
commit07c3c5dbf5bc3ebe22855fd77a388f12a0bec066 (patch)
treef60c635bf03a1eb37b1388ec70b2de5cc59ba37c
parent4e0f1e1be25b38404b9f1481c1b2076949ed0613 (diff)
downloadpython-coveragepy-git-07c3c5dbf5bc3ebe22855fd77a388f12a0bec066.tar.gz
Don't be fooled by a class named test_something. Fixes #829
-rw-r--r--CHANGES.rst5
-rw-r--r--coverage/context.py4
-rw-r--r--tests/test_context.py5
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)