From e7b5032abbc28fca28201de8ab0469bae257493e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 9 Jul 2026 21:27:40 +0200 Subject: [PATCH] gh-121608: Fix test_samply_profiler: only check samply once (GH-153424) Only run samply_command_works() once. Remove also dead code. (cherry picked from commit 311444998140240c164092640897013500b05963) Co-authored-by: Victor Stinner --- Lib/test/test_samply_profiler.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Lib/test/test_samply_profiler.py b/Lib/test/test_samply_profiler.py index f9ab9207c3c23d..6c3be8f38ed0c0 100644 --- a/Lib/test/test_samply_profiler.py +++ b/Lib/test/test_samply_profiler.py @@ -31,12 +31,7 @@ def supports_trampoline_profiling(): raise unittest.SkipTest("perf trampoline profiling not supported") -def samply_command_works(): - try: - cmd = ["samply", "--help"] - except (subprocess.SubprocessError, OSError): - return False - +def _samply_command_works(): # Check that we can run a simple samply run with temp_dir() as script_dir: try: @@ -90,8 +85,10 @@ def run_samply(cwd, *args, **env_vars): with gzip.open(output_file, mode="rt", encoding="utf-8") as f: return f.read() +SAMPLY_COMMAND_WORKS = _samply_command_works() + -@unittest.skipUnless(samply_command_works(), "samply command doesn't work") +@unittest.skipUnless(SAMPLY_COMMAND_WORKS, "samply command doesn't work") class TestSamplyProfilerMixin: def run_samply(self, script_dir, perf_mode, script): raise NotImplementedError() @@ -145,7 +142,7 @@ def baz(n): self.assertNotIn(f"py::baz:{script}", output) -@unittest.skipUnless(samply_command_works(), "samply command doesn't work") +@unittest.skipUnless(SAMPLY_COMMAND_WORKS, "samply command doesn't work") class TestSamplyProfiler(unittest.TestCase, TestSamplyProfilerMixin): def run_samply(self, script_dir, script, activate_trampoline=True): if activate_trampoline: @@ -240,7 +237,7 @@ def compile_trampolines_for_all_functions(): self.assertIn(line, child_perf_file_contents) -@unittest.skipUnless(samply_command_works(), "samply command doesn't work") +@unittest.skipUnless(SAMPLY_COMMAND_WORKS, "samply command doesn't work") class TestSamplyProfilerWithJitDump(unittest.TestCase, TestSamplyProfilerMixin): # Regression test for gh-150723: exercises the binary jitdump backend # (-Xperf_jit) end to end through samply, unlike TestSamplyProfiler which