def frame_to_func_descriptor( frame: FrameType) -> Tuple[str, str, str, List[str]]: """Retrieve module-name, class-name, function-name and tags including all fallbacks""" func_name = frame.f_code.co_name filename = frame.f_code.co_filename tags = [] if func_name == "wrapper" and "function" in frame.f_locals: mod_name, class_name, unwrapped_func_name = func_to_descriptor( frame.f_locals["function"]) tags.append("#wrapper") else: unwrapped_func_name = func_name try: func = frame_to_func(frame) mod_name, class_name, _ = func_to_descriptor(func) except Exception: # pylint: disable=broad-except tags.append("#naming-fallback-funcPtr") mod = inspect.getmodule(frame) if mod is not None: mod_name = mod.__name__ else: tags.append("#naming-fallback-inspect") mod_name = _fullmodname(filename) class_name = frame_to_classname(frame) return mod_name, class_name, unwrapped_func_name, tags
def test_issue9936(self): tracer = trace.Trace(trace=0, count=1) modname = 'test.tracedmodules.testmod' if modname in sys.modules: del sys.modules[modname] cmd = 'import test.tracedmodules.testmod as t;t.func(0); t.func2();' with captured_stdout() as stdout: self._coverage(tracer, cmd) stdout.seek(0) stdout.readline() coverage = {} for line in stdout: lines, cov, module = line.split()[:3] coverage[module] = int(lines), int(cov[:-1]) modname = trace._fullmodname(sys.modules[modname].__file__) self.assertIn(modname, coverage) self.assertEqual(coverage[modname], (5, 100))
def test_issue9936(self): tracer = trace.Trace(trace=0, count=1) modname = "test.tracedmodules.testmod" # Ensure that the module is executed in import if modname in sys.modules: del sys.modules[modname] cmd = "import test.tracedmodules.testmod as t;" "t.func(0); t.func2();" with captured_stdout() as stdout: self._coverage(tracer, cmd) stdout.seek(0) stdout.readline() coverage = {} for line in stdout: lines, cov, module = line.split()[:3] coverage[module] = (int(lines), int(cov[:-1])) # XXX This is needed to run regrtest.py as a script modname = trace._fullmodname(sys.modules[modname].__file__) self.assertIn(modname, coverage) self.assertEqual(coverage[modname], (5, 100))
def test_issue9936(self): tracer = trace.Trace(trace=0, count=1) modname = 'test.tracedmodules.testmod' # Ensure that the module is executed in import if modname in sys.modules: del sys.modules[modname] cmd = ("import test.tracedmodules.testmod as t;" "t.func(0); t.func2();") with captured_stdout() as stdout: self._coverage(tracer, cmd) stdout.seek(0) stdout.readline() coverage = {} for line in stdout: lines, cov, module = line.split()[:3] coverage[module] = (int(lines), int(cov[:-1])) # XXX This is needed to run regrtest.py as a script modname = trace._fullmodname(sys.modules[modname].__file__) self.assertIn(modname, coverage) self.assertEqual(coverage[modname], (5, 100))
def update_event(self, inp=-1): self.set_output_val(0, trace._fullmodname(self.input(0)))