From 1c22a33a5614870605ff40bcc6997d29cbc16844 Mon Sep 17 00:00:00 2001 From: Tian Gao Date: Tue, 4 Mar 2025 14:43:47 -0500 Subject: [PATCH] Add a test for pdb when user quits after interact command --- Lib/test/test_pdb.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 7ecb8d4cd4d5fa..a3246e4ec76b50 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -4342,6 +4342,32 @@ def test_quit(self): # The quit prompt should be printed exactly twice self.assertEqual(stdout.count("Quit anyway"), 2) + def test_quit_after_interact(self): + """ + interact command will set sys.ps1 temporarily, we need to make sure + that it's restored and pdb does not believe it's in interactive mode + after interact is done. + """ + script = """ + x = 1 + breakpoint() + """ + + commands = """ + interact + quit() + q + y + """ + + stdout, stderr = self._run_script(script, commands) + # Normal exit should not print anything to stderr + self.assertEqual(stderr, "") + # The quit prompt should be printed exactly once + self.assertEqual(stdout.count("Quit anyway"), 1) + # BdbQuit should not be printed + self.assertNotIn("BdbQuit", stdout) + def test_set_trace_with_skip(self): """GH-82897 Inline set_trace() should break unconditionally. This example is a