Skip to content

Commit 464aedb

Browse files
committed
gh-151022: Strengthen large linetable test
1 parent 2b79b7c commit 464aedb

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

Lib/test/test_external_inspection.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ def _extract_coroutine_stacks_lineno_only(self, stack_trace):
438438
# ============================================================================
439439

440440

441+
@requires_remote_subprocess_debugging()
441442
class TestSelfStackTrace(RemoteInspectionTestBase):
442443
@skip_if_not_supported
443444
@unittest.skipIf(
@@ -452,13 +453,27 @@ def test_self_trace_with_large_linetable(self):
452453
assignments = "\\n".join(
453454
f"value_{i} = {i}" for i in range(1000)
454455
)
456+
expected_lineno = len(assignments.splitlines()) + 1
455457
source = (
456458
f"{assignments}\\n"
459+
"stack_trace = "
457460
"_remote_debugging.RemoteUnwinder(os.getpid()).get_stack_trace()\\n"
458461
)
459462
code = compile(source, "large_linetable.py", "exec")
460463
assert len(code.co_linetable) > 4096, len(code.co_linetable)
461-
exec(code)
464+
namespace = {"os": os, "_remote_debugging": _remote_debugging}
465+
exec(code, namespace)
466+
large_linetable_frames = [
467+
frame
468+
for interpreter in namespace["stack_trace"]
469+
for thread in interpreter.threads
470+
for frame in thread.frame_info
471+
if frame.filename == "large_linetable.py"
472+
]
473+
assert len(large_linetable_frames) == 1, large_linetable_frames
474+
assert large_linetable_frames[0].location.lineno == expected_lineno, (
475+
large_linetable_frames[0]
476+
)
462477
""")
463478

464479
result = subprocess.run(

0 commit comments

Comments
 (0)