tests/functional: remove duplicated 'which' function impl

Put the 'which' function into shared code.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-ID: <20241217155953.3950506-5-berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2024-12-17 15:59:25 +00:00 committed by Thomas Huth
parent c27f452d61
commit 0da341a78f
4 changed files with 13 additions and 25 deletions

View file

@ -10,6 +10,6 @@ from .asset import Asset
from .config import BUILD_DIR from .config import BUILD_DIR
from .cmd import has_cmd, has_cmds, run_cmd, is_readable_executable_file, \ from .cmd import has_cmd, has_cmds, run_cmd, is_readable_executable_file, \
interrupt_interactive_console_until_pattern, wait_for_console_pattern, \ interrupt_interactive_console_until_pattern, wait_for_console_pattern, \
exec_command, exec_command_and_wait_for_pattern, get_qemu_img exec_command, exec_command_and_wait_for_pattern, get_qemu_img, which
from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest
from .linuxkernel import LinuxKernelTest from .linuxkernel import LinuxKernelTest

View file

@ -18,6 +18,16 @@ import subprocess
from .config import BUILD_DIR from .config import BUILD_DIR
def which(tool):
""" looks up the full path for @tool, returns None if not found
or if @tool does not have executable permissions.
"""
paths=os.getenv('PATH')
for p in paths.split(os.path.pathsep):
p = os.path.join(p, tool)
if os.path.exists(p) and os.access(p, os.X_OK):
return p
return None
def has_cmd(name, args=None): def has_cmd(name, args=None):
""" """

View file

@ -47,7 +47,7 @@ from typing import (
) )
from qemu.machine import QEMUMachine from qemu.machine import QEMUMachine
from unittest import skipIf from unittest import skipIf
from qemu_test import QemuSystemTest, Asset from qemu_test import QemuSystemTest, Asset, which
deps = ["xorriso", "mformat"] # dependent tools needed in the test setup/box. deps = ["xorriso", "mformat"] # dependent tools needed in the test setup/box.
supported_platforms = ['x86_64'] # supported test platforms. supported_platforms = ['x86_64'] # supported test platforms.
@ -55,17 +55,6 @@ supported_platforms = ['x86_64'] # supported test platforms.
# default timeout of 120 secs is sometimes not enough for bits test. # default timeout of 120 secs is sometimes not enough for bits test.
BITS_TIMEOUT = 200 BITS_TIMEOUT = 200
def which(tool):
""" looks up the full path for @tool, returns None if not found
or if @tool does not have executable permissions.
"""
paths=os.getenv('PATH')
for p in paths.split(os.path.pathsep):
p = os.path.join(p, tool)
if os.path.exists(p) and os.access(p, os.X_OK):
return p
return None
def missing_deps(): def missing_deps():
""" returns True if any of the test dependent tools are absent. """ returns True if any of the test dependent tools are absent.
""" """

View file

@ -11,7 +11,7 @@
from unittest import skipIf, skipUnless from unittest import skipIf, skipUnless
from qemu_test import QemuSystemTest, Asset from qemu_test import QemuSystemTest, Asset
from qemu_test import wait_for_console_pattern, exec_command from qemu_test import wait_for_console_pattern, exec_command, which
import os import os
import time import time
import subprocess import subprocess
@ -19,17 +19,6 @@ from datetime import datetime
deps = ["xorriso"] # dependent tools needed in the test setup/box. deps = ["xorriso"] # dependent tools needed in the test setup/box.
def which(tool):
""" looks up the full path for @tool, returns None if not found
or if @tool does not have executable permissions.
"""
paths=os.getenv('PATH')
for p in paths.split(os.path.pathsep):
p = os.path.join(p, tool)
if os.path.exists(p) and os.access(p, os.X_OK):
return p
return None
def missing_deps(): def missing_deps():
""" returns True if any of the test dependent tools are absent. """ returns True if any of the test dependent tools are absent.
""" """