Kaydet (Commit) 9d17da33 authored tarafından Alexander Belopolsky's avatar Alexander Belopolsky

Issue #9315: Fix for the trace module to record correct class name

when tracing methods.  Unit tests. Patch by Eli Bendersky.
üst c0c0b146
This diff is collapsed.
"""This package contains modules that help testing the trace.py module. Note
that the exact location of functions in these modules is important, as trace.py
takes the real line numbers into account.
"""
def func(x):
b = x + 1
return b + 2
......@@ -56,7 +56,7 @@ import threading
import time
import token
import tokenize
import types
import inspect
import gc
try:
......@@ -398,7 +398,7 @@ def find_lines(code, strs):
# and check the constants for references to other code objects
for c in code.co_consts:
if isinstance(c, types.CodeType):
if inspect.iscode(c):
# find another code object, so recurse into it
linenos.update(find_lines(c, strs))
return linenos
......@@ -545,7 +545,7 @@ class Trace:
## use of gc.get_referrers() was suggested by Michael Hudson
# all functions which refer to this code object
funcs = [f for f in gc.get_referrers(code)
if hasattr(f, "func_doc")]
if inspect.isfunction(f)]
# require len(func) == 1 to avoid ambiguity caused by calls to
# new.function(): "In the face of ambiguity, refuse the
# temptation to guess."
......@@ -557,17 +557,13 @@ class Trace:
if hasattr(c, "__bases__")]
if len(classes) == 1:
# ditto for new.classobj()
clsname = str(classes[0])
clsname = classes[0].__name__
# cache the result - assumption is that new.* is
# not called later to disturb this relationship
# _caller_cache could be flushed if functions in
# the new module get called.
self._caller_cache[code] = clsname
if clsname is not None:
# final hack - module name shows up in str(cls), but we've already
# computed module name, so remove it
clsname = clsname.split(".")[1:]
clsname = ".".join(clsname)
funcname = "%s.%s" % (clsname, funcname)
return filename, modulename, funcname
......
......@@ -255,6 +255,9 @@ Library
- Issue #9164: Ensure sysconfig handles dupblice archs while building on OSX
- Issue #9315: Fix for the trace module to record correct class name
for tracing methods.
Extension Modules
-----------------
......@@ -337,6 +340,8 @@ Build
Tests
-----
- Issue #9315: Added tests for the trace module. Patch by Eli Bendersky.
- Strengthen test_unicode with explicit type checking for assertEqual tests.
- Issue #8857: Provide a test case for socket.getaddrinfo.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment