diff options
author | Stephan Richter <stephan.richter@gmail.com> | 2019-01-23 17:17:55 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2019-06-10 17:15:32 -0400 |
commit | a9f5f7fadacaa8a84b4ac247e79bcb6f29935bb1 (patch) | |
tree | 3372327e0952661b81f7f3df6bfd3b6e140cedb4 /coverage/context.py | |
parent | 23b3854bd5a1f62e1a500f81d9088ded7c2d37f0 (diff) | |
download | python-coveragepy-git-a9f5f7fadacaa8a84b4ac247e79bcb6f29935bb1.tar.gz |
Make sure to report the full Python path for the test function. That way we can report on namespaces.
Diffstat (limited to 'coverage/context.py')
-rw-r--r-- | coverage/context.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/coverage/context.py b/coverage/context.py index 13800337..9ef680a3 100644 --- a/coverage/context.py +++ b/coverage/context.py @@ -46,32 +46,36 @@ def qualname_from_frame(frame): co = frame.f_code fname = co.co_name if not co.co_varnames: - return fname + func = frame.f_globals[fname] + return func.__module__ + '.' + fname first_arg = co.co_varnames[0] if co.co_argcount and first_arg == "self": self = frame.f_locals["self"] else: - return fname + func = frame.f_globals[fname] + return func.__module__ + '.' + fname method = getattr(self, fname, None) if method is None: - return fname + func = frame.f_globals[fname] + return func.__module__ + '.' + fname func = getattr(method, '__func__', None) if func is None: - return fname + cls = self.__class__ + return cls.__module__ + '.' + cls.__name__ + "." + fname if hasattr(func, '__qualname__'): - qname = func.__qualname__ + qname = func.__module__ + '.' + func.__qualname__ else: for cls in getattr(self.__class__, '__mro__', ()): f = cls.__dict__.get(fname, None) if f is None: continue if f is func: - qname = cls.__name__ + "." + fname + qname = cls.__module__ + '.' + cls.__name__ + "." + fname break else: - qname = fname + qname = func.__module__ + '.' + fname return qname |