[3.15] gh-150966: Fix live profiling error tests (GH-151020) (#151604)

gh-150966: Fix live profiling error tests (GH-151020)
(cherry picked from commit 6b142ab9a0)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
This commit is contained in:
Miss Islington (bot) 2026-06-17 16:58:42 +02:00 committed by GitHub
parent 821e5d79fa
commit 1e7fb93df7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 5 deletions

View file

@ -825,17 +825,34 @@ def test_get_all_lines_full_display(self):
class TestLiveModeErrors(unittest.TestCase):
"""Tests running error commands in the live mode fails gracefully."""
class QuitWhenFinishedDisplay(MockDisplay):
def __init__(self, collector):
super().__init__()
self.collector = collector
def get_input(self):
ch = super().get_input()
if ch != -1:
return ch
# Sampling only stops once the target process has exited, at
# which point the collector is marked finished. Quit then so the
# run can surface the target's stderr. We must not rely on the
# target's pid still being signalable: once it exits it lingers
# as a zombie (it is reaped after sample_live returns), so a
# liveness check would never observe it gone and would hang.
if self.collector.finished:
return ord('q')
return -1
def mock_curses_wrapper(self, func):
func(mock.MagicMock())
def mock_init_curses_side_effect(self, n_times, mock_self, stdscr):
mock_self.display = MockDisplay()
# Allow the loop to run for a bit (approx 0.5s) before quitting
# This ensures we don't exit too early while the subprocess is
# still failing
mock_self.display = self.QuitWhenFinishedDisplay(mock_self)
# Feed non-input events so live mode keeps polling while the target
# process is still running; once it exits the display quits on its own.
for _ in range(n_times):
mock_self.display.simulate_input(-1)
mock_self.display.simulate_input(ord('q'))
def test_run_failed_module_live(self):
"""Test that running a existing module that fails exits with clean error."""

View file

@ -0,0 +1,2 @@
Avoid prematurely terminating failing live sampling profiler test targets,
which made stderr assertions flaky on ASAN buildbots.