]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-142318: Fix typing `'q'` at interactive help screen exiting Tachyon (#142319)
authorStan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Fri, 5 Dec 2025 19:36:28 +0000 (19:36 +0000)
committerGitHub <noreply@github.com>
Fri, 5 Dec 2025 19:36:28 +0000 (19:36 +0000)
Lib/profiling/sampling/live_collector/collector.py
Lib/test/test_profiling/test_sampling_profiler/test_live_collector_interaction.py
Misc/NEWS.d/next/Library/2025-12-05-18-25-29.gh-issue-142318.EzcQ3N.rst [new file with mode: 0644]

index 4b69275a2f077f2b65be0bc831552fb672f6e6e4..7adbf1bbe7f6250e38270bec4d72729ae13deea7 100644 (file)
@@ -861,10 +861,12 @@ class LiveStatsCollector(Collector):
         # Handle help toggle keys
         if ch == ord("h") or ch == ord("H") or ch == ord("?"):
             self.show_help = not self.show_help
+            return
 
         # If showing help, any other key closes it
-        elif self.show_help and ch != -1:
+        if self.show_help and ch != -1:
             self.show_help = False
+            return
 
         # Handle regular commands
         if ch == ord("q") or ch == ord("Q"):
index 388f462cf21b3d8b1716607d4f67e46c10648d93..a58703665528544e8be0196fd3de39ff6ebb6cc8 100644 (file)
@@ -173,6 +173,19 @@ class TestLiveCollectorInteractiveControls(unittest.TestCase):
 
         self.assertTrue(self.collector.show_help)
 
+    def test_help_dismiss_with_q_does_not_quit(self):
+        """Test that pressing 'q' while help is shown only closes help, not quit"""
+        self.assertFalse(self.collector.show_help)
+        self.display.simulate_input(ord("h"))
+        self.collector._handle_input()
+        self.assertTrue(self.collector.show_help)
+
+        self.display.simulate_input(ord("q"))
+        self.collector._handle_input()
+
+        self.assertFalse(self.collector.show_help)
+        self.assertTrue(self.collector.running)
+
     def test_filter_clear(self):
         """Test clearing filter."""
         self.collector.filter_pattern = "test"
diff --git a/Misc/NEWS.d/next/Library/2025-12-05-18-25-29.gh-issue-142318.EzcQ3N.rst b/Misc/NEWS.d/next/Library/2025-12-05-18-25-29.gh-issue-142318.EzcQ3N.rst
new file mode 100644 (file)
index 0000000..8710ebf
--- /dev/null
@@ -0,0 +1,2 @@
+Fix typing ``'q'`` at the help of the interactive tachyon profiler exiting
+the profiler.