From 4041ccc90b65d22ea54faa381870ce6f303a5870 Mon Sep 17 00:00:00 2001 From: stratakis Date: Thu, 2 Jul 2026 17:07:24 +0200 Subject: [PATCH] gh-98894: Check tracer exit status in test_dtrace (GH-152893) Fail functional dtrace and SystemTap cases directly when the tracer exits non-zero. (cherry picked from commit 311e7e79f4e305f1217ef548a62ea219a47c0d7b) Co-authored-by: stratakis --- Lib/test/test_dtrace.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_dtrace.py b/Lib/test/test_dtrace.py index 788d31c60f4d978..e1662a70b26d3e3 100644 --- a/Lib/test/test_dtrace.py +++ b/Lib/test/test_dtrace.py @@ -125,7 +125,8 @@ def generate_trace_command(self, script_file, subcommand=None): command += ["-c", subcommand] return command - def trace(self, script_file, subcommand=None, *, timeout=None): + def trace(self, script_file, subcommand=None, *, timeout=None, + check_returncode=False): command = self.generate_trace_command(script_file, subcommand) proc = create_process_group(command, stdout=subprocess.PIPE, @@ -136,6 +137,11 @@ def trace(self, script_file, subcommand=None, *, timeout=None): except subprocess.TimeoutExpired: kill_process_group(proc) raise + if check_returncode and proc.returncode: + raise AssertionError( + f"Command {' '.join(command)!r} failed " + f"with exit code {proc.returncode}: output={stdout!r}" + ) return stdout def trace_python(self, script_file, python_file, optimize_python=None): @@ -143,7 +149,8 @@ def trace_python(self, script_file, python_file, optimize_python=None): if optimize_python: python_flags.extend(["-O"] * optimize_python) subcommand = " ".join([sys.executable] + python_flags + [python_file]) - return self.trace(script_file, subcommand, timeout=60) + return self.trace(script_file, subcommand, timeout=60, + check_returncode=True) def assert_usable(self): try: