@@ -1441,6 +1441,34 @@ def test_multi_line_commands(self):
14411441 self .assertIn ("Function returned: 42" , stdout )
14421442 self .assertEqual (process .returncode , 0 )
14431443
1444+ def test_exec_in_closure_result_uses_pdb_stdout (self ):
1445+ """
1446+ Expression results executed via _exec_in_closure() should be written
1447+ to the debugger output stream (pdb stdout), not to sys.stdout.
1448+ """
1449+ self ._create_script ()
1450+ process , client_file = self ._connect_and_get_client_file ()
1451+
1452+ with kill_on_error (process ):
1453+ self ._read_until_prompt (client_file )
1454+
1455+ self ._send_command (client_file , "(lambda: 123)()" )
1456+ messages = self ._read_until_prompt (client_file )
1457+ result_msg = "" .join (msg .get ("message" , "" ) for msg in messages )
1458+ self .assertIn ("123" , result_msg )
1459+
1460+ self ._send_command (client_file , "sum(i for i in (1, 2, 3))" )
1461+ messages = self ._read_until_prompt (client_file )
1462+ result_msg = "" .join (msg .get ("message" , "" ) for msg in messages )
1463+ self .assertIn ("6" , result_msg )
1464+
1465+ self ._send_command (client_file , "c" )
1466+ stdout , _ = process .communicate (timeout = SHORT_TIMEOUT )
1467+
1468+ self .assertNotIn ("\n 123\n " , stdout )
1469+ self .assertNotIn ("\n 6\n " , stdout )
1470+ self .assertEqual (process .returncode , 0 )
1471+
14441472
14451473def _supports_remote_attaching ():
14461474 PROCESS_VM_READV_SUPPORTED = False
0 commit comments