]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-125378: Trigger a repeat for the full multi-line statement for empty line command...
authorTian Gao <gaogaotiantian@hotmail.com>
Sat, 19 Oct 2024 21:46:57 +0000 (14:46 -0700)
committerGitHub <noreply@github.com>
Sat, 19 Oct 2024 21:46:57 +0000 (17:46 -0400)
Lib/pdb.py
Lib/test/test_pdb.py
Misc/NEWS.d/next/Library/2024-10-19-01-30-40.gh-issue-125378.WTosxX.rst [new file with mode: 0644]

index cd7a7042fa6987cca6685e480c3110e896bfabe0..832213abbb98e6618d76444e3860fbcfa752abc5 100644 (file)
@@ -755,6 +755,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
                             else:
                                 line = line.rstrip('\r\n')
                         buffer += '\n' + line
+                    self.lastcmd = buffer
             save_stdout = sys.stdout
             save_stdin = sys.stdin
             save_displayhook = sys.displayhook
index 7e6f276d355a14f226689ff0a6cacdaf6a8a9d6d..1ea93ed037005de1389c2d7fbbc9f2508069cf7c 100644 (file)
@@ -2448,7 +2448,12 @@ def test_pdb_multiline_statement():
     ...     'def f(x):',
     ...     '  return x * 2',
     ...     '',
-    ...     'f(2)',
+    ...     'val = 2',
+    ...     'if val > 0:',
+    ...     '  val = f(val)',
+    ...     '',
+    ...     '',  # empty line should repeat the multi-line statement
+    ...     'val',
     ...     'c'
     ... ]):
     ...     test_function()
@@ -2457,8 +2462,13 @@ def test_pdb_multiline_statement():
     (Pdb) def f(x):
     ...     return x * 2
     ...
-    (Pdb) f(2)
-    4
+    (Pdb) val = 2
+    (Pdb) if val > 0:
+    ...     val = f(val)
+    ...
+    (Pdb)
+    (Pdb) val
+    8
     (Pdb) c
     """
 
diff --git a/Misc/NEWS.d/next/Library/2024-10-19-01-30-40.gh-issue-125378.WTosxX.rst b/Misc/NEWS.d/next/Library/2024-10-19-01-30-40.gh-issue-125378.WTosxX.rst
new file mode 100644 (file)
index 0000000..dc76889
--- /dev/null
@@ -0,0 +1 @@
+Fixed the bug in :mod:`pdb` where after a multi-line command, an empty line repeats the first line of the multi-line command, instead of the full command.