diff mbox series

[v3,2/5] tests/acceptance: Make pick_default_qemu_bin() more generic

Message ID 20210315230838.2973103-3-f4bug@amsat.org
State New
Headers show
Series tests/acceptance: Add bFLT loader linux-user test | expand

Commit Message

Philippe Mathieu-Daudé March 15, 2021, 11:08 p.m. UTC
Make pick_default_qemu_bin() generic to find qemu-system or
qemu-user binaries.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 tests/acceptance/avocado_qemu/__init__.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Wainer dos Santos Moschetta March 17, 2021, 1:32 p.m. UTC | #1
Hi,

On 3/15/21 8:08 PM, Philippe Mathieu-Daudé wrote:
> Make pick_default_qemu_bin() generic to find qemu-system or
> qemu-user binaries.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   tests/acceptance/avocado_qemu/__init__.py | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
> index 4f814047176..08b3fa1124f 100644
> --- a/tests/acceptance/avocado_qemu/__init__.py
> +++ b/tests/acceptance/avocado_qemu/__init__.py
> @@ -48,7 +48,7 @@ def is_readable_executable_file(path):
>       return os.path.isfile(path) and os.access(path, os.R_OK | os.X_OK)
>   
>   
> -def pick_default_qemu_bin(arch=None):
> +def pick_default_qemu_bin(bin_fmt, arch=None):
I suggest that bin_fmt defaults to "qemu-system-%" (or "qemu-system-", 
see below) so that you don't need to change the existing callers.
>       """
>       Picks the path of a QEMU binary, starting either in the current working
>       directory or in the source tree root directory.
> @@ -67,7 +67,7 @@ def pick_default_qemu_bin(arch=None):
>       # qemu binary path does not match arch for powerpc, handle it
>       if 'ppc64le' in arch:
>           arch = 'ppc64'
> -    qemu_bin_relative_path = "./qemu-system-%s" % arch
> +    qemu_bin_relative_path = os.path.join(".", bin_fmt % arch)

Above construct fails (unless I missed something):

   >>> bin_fmt="qemu-system-%"

   >>> arch="aarch64"
   >>> qemu_bin_relative_path = os.path.join(".", bin_fmt % arch)
   Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   ValueError: incomplete format

Instead it could be "bin_prefix" where the value is either 
"qemu-system-" or "qemu-", then "arch" is just appended.

>       if is_readable_executable_file(qemu_bin_relative_path):
>           return qemu_bin_relative_path
>   
> @@ -187,14 +187,14 @@ def require_accelerator(self, accelerator):
>               self.cancel("%s accelerator does not seem to be "
>                           "available" % accelerator)
>   
> -    def setUp(self):
> +    def setUp(self, bin_fmt):
>           self.arch = self.params.get('arch',
>                                       default=self._get_unique_tag_val('arch'))
>   
>           self.machine = self.params.get('machine',
>                                          default=self._get_unique_tag_val('machine'))
>   
> -        default_qemu_bin = pick_default_qemu_bin(arch=self.arch)
> +        default_qemu_bin = pick_default_qemu_bin(bin_fmt, arch=self.arch)
>           self.qemu_bin = self.params.get('qemu_bin',
>                                           default=default_qemu_bin)
>           if self.qemu_bin is None:
> @@ -217,7 +217,7 @@ def fetch_asset(self, name,
>   class Test(QemuBaseTest):
>       def setUp(self):
>           self._vms = {}
> -        super(Test, self).setUp()
> +        super(Test, self).setUp("qemu-system-%s")
>   
>       def _new_vm(self, *args):
>           self._sd = tempfile.TemporaryDirectory(prefix="avo_qemu_sock_")
diff mbox series

Patch

diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py
index 4f814047176..08b3fa1124f 100644
--- a/tests/acceptance/avocado_qemu/__init__.py
+++ b/tests/acceptance/avocado_qemu/__init__.py
@@ -48,7 +48,7 @@  def is_readable_executable_file(path):
     return os.path.isfile(path) and os.access(path, os.R_OK | os.X_OK)
 
 
-def pick_default_qemu_bin(arch=None):
+def pick_default_qemu_bin(bin_fmt, arch=None):
     """
     Picks the path of a QEMU binary, starting either in the current working
     directory or in the source tree root directory.
@@ -67,7 +67,7 @@  def pick_default_qemu_bin(arch=None):
     # qemu binary path does not match arch for powerpc, handle it
     if 'ppc64le' in arch:
         arch = 'ppc64'
-    qemu_bin_relative_path = "./qemu-system-%s" % arch
+    qemu_bin_relative_path = os.path.join(".", bin_fmt % arch)
     if is_readable_executable_file(qemu_bin_relative_path):
         return qemu_bin_relative_path
 
@@ -187,14 +187,14 @@  def require_accelerator(self, accelerator):
             self.cancel("%s accelerator does not seem to be "
                         "available" % accelerator)
 
-    def setUp(self):
+    def setUp(self, bin_fmt):
         self.arch = self.params.get('arch',
                                     default=self._get_unique_tag_val('arch'))
 
         self.machine = self.params.get('machine',
                                        default=self._get_unique_tag_val('machine'))
 
-        default_qemu_bin = pick_default_qemu_bin(arch=self.arch)
+        default_qemu_bin = pick_default_qemu_bin(bin_fmt, arch=self.arch)
         self.qemu_bin = self.params.get('qemu_bin',
                                         default=default_qemu_bin)
         if self.qemu_bin is None:
@@ -217,7 +217,7 @@  def fetch_asset(self, name,
 class Test(QemuBaseTest):
     def setUp(self):
         self._vms = {}
-        super(Test, self).setUp()
+        super(Test, self).setUp("qemu-system-%s")
 
     def _new_vm(self, *args):
         self._sd = tempfile.TemporaryDirectory(prefix="avo_qemu_sock_")