summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_perf_profiler.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/Lib/test/test_perf_profiler.py b/Lib/test/test_perf_profiler.py
index 496983f..7c1bbee 100644
--- a/Lib/test/test_perf_profiler.py
+++ b/Lib/test/test_perf_profiler.py
@@ -479,17 +479,23 @@ class TestPerfProfiler(unittest.TestCase, TestPerfProfilerMixin):
if f"py::foo_fork:{script}" in line or f"py::bar_fork:{script}" in line:
self.assertIn(line, child_perf_file_contents)
-def _is_kernel_version_at_least(major, minor):
+
+def _is_perf_vesion_at_least(major, minor):
+ # The output of perf --version looks like "perf version 6.7-3" but
+ # it can also be perf version "perf version 5.15.143"
try:
- with open("/proc/version") as f:
- version = f.readline().split()[2]
- except FileNotFoundError:
+ output = subprocess.check_output(["perf", "--version"], text=True)
+ except (subprocess.CalledProcessError, FileNotFoundError):
return False
+ version = output.split()[2]
+ version = version.split("-")[0]
version = version.split(".")
- return int(version[0]) > major or (int(version[0]) == major and int(version[1]) >= minor)
+ version = tuple(map(int, version))
+ return version >= (major, minor)
+
@unittest.skipUnless(perf_command_works(), "perf command doesn't work")
-@unittest.skipUnless(_is_kernel_version_at_least(6, 6), "perf command may not work due to a perf bug")
+@unittest.skipUnless(_is_perf_vesion_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: