]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-124613: Don't run perf tests in JIT builds (#124792)
authorPablo Galindo Salgado <Pablogsal@gmail.com>
Mon, 30 Sep 2024 17:57:00 +0000 (18:57 +0100)
committerGitHub <noreply@github.com>
Mon, 30 Sep 2024 17:57:00 +0000 (17:57 +0000)
* gh-124613: Don't run perf tests in JIT builds

Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
* Apply suggestions from code review

Co-authored-by: Victor Stinner <vstinner@python.org>
---------

Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
Co-authored-by: Victor Stinner <vstinner@python.org>
Lib/test/test_perf_profiler.py

index b68a55259c62e1831f5fa839a30900f9a35b847b..672851425ffb53421df42649d0c45665dd7da0b7 100644 (file)
@@ -23,6 +23,15 @@ if support.check_sanitizer(address=True, memory=True, ub=True):
     raise unittest.SkipTest("test crash randomly on ASAN/MSAN/UBSAN build")
 
 
+def is_jit_build():
+    cflags = (sysconfig.get_config_var("PY_CORE_CFLAGS") or '')
+    return "_Py_JIT" in cflags
+
+
+if is_jit_build():
+    raise unittest.SkipTest("Perf support is not available in JIT builds")
+
+
 def supports_trampoline_profiling():
     perf_trampoline = sysconfig.get_config_var("PY_HAVE_PERF_TRAMPOLINE")
     if not perf_trampoline:
@@ -229,7 +238,7 @@ def is_unwinding_reliable_with_frame_pointers():
     cflags = sysconfig.get_config_var("PY_CORE_CFLAGS")
     if not cflags:
         return False
-    return "no-omit-frame-pointer" in cflags and "_Py_JIT" not in cflags
+    return "no-omit-frame-pointer" in cflags
 
 
 def perf_command_works():
@@ -382,6 +391,7 @@ class TestPerfProfilerMixin:
             self.assertNotIn(f"py::bar:{script}", stdout)
             self.assertNotIn(f"py::baz:{script}", stdout)
 
+
 @unittest.skipUnless(perf_command_works(), "perf command doesn't work")
 @unittest.skipUnless(
     is_unwinding_reliable_with_frame_pointers(),
@@ -494,7 +504,9 @@ def _is_perf_version_at_least(major, minor):
 
 
 @unittest.skipUnless(perf_command_works(), "perf command doesn't work")
-@unittest.skipUnless(_is_perf_version_at_least(6, 6), "perf command may not work due to a perf bug")
+@unittest.skipUnless(
+    _is_perf_version_at_least(6, 6), "perf command may not work due to a perf bug"
+)
 class TestPerfProfilerWithDwarf(unittest.TestCase, TestPerfProfilerMixin):
     def run_perf(self, script_dir, script, activate_trampoline=True):
         if activate_trampoline: