All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Thomas Huth" <thuth@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PATCH 07/22] tests/functional: switch to new test skip decorators
Date: Fri, 29 Nov 2024 17:31:05 +0000	[thread overview]
Message-ID: <20241129173120.761728-8-berrange@redhat.com> (raw)
In-Reply-To: <20241129173120.761728-1-berrange@redhat.com>

This ensures consistency of behaviour across all the tests, and requires
that we provide gitlab bug links when marking a test to be skipped due
to unreliability.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 tests/functional/test_acpi_bits.py           | 24 +++-------------
 tests/functional/test_arm_aspeed.py          |  6 ++--
 tests/functional/test_arm_bflt.py            |  7 +++--
 tests/functional/test_arm_bpim2u.py          |  7 +++--
 tests/functional/test_arm_integratorcp.py    | 27 ++++++------------
 tests/functional/test_arm_orangepi.py        |  8 +++---
 tests/functional/test_linux_initrd.py        |  7 ++---
 tests/functional/test_m68k_nextcube.py       | 14 +++------
 tests/functional/test_mips64el_loongson3v.py |  8 +++---
 tests/functional/test_mips64el_malta.py      | 30 +++++++-------------
 tests/functional/test_ppc64_hv.py            | 17 ++---------
 tests/functional/test_ppc_40p.py             |  8 ++----
 tests/functional/test_rx_gdbsim.py           |  6 ++--
 tests/functional/test_sh4_r2d.py             |  8 ++----
 14 files changed, 62 insertions(+), 115 deletions(-)

diff --git a/tests/functional/test_acpi_bits.py b/tests/functional/test_acpi_bits.py
index 4162faf414..4de5fae37e 100755
--- a/tests/functional/test_acpi_bits.py
+++ b/tests/functional/test_acpi_bits.py
@@ -48,28 +48,13 @@
     Sequence,
 )
 from qemu.machine import QEMUMachine
-from unittest import skipIf
-from qemu_test import QemuBaseTest, Asset, which
+from qemu_test import (QemuBaseTest, Asset, skipIfMissingCommands,
+                       skipIfNotMachine)
 
-deps = ["xorriso", "mformat"] # dependent tools needed in the test setup/box.
-supported_platforms = ['x86_64'] # supported test platforms.
 
 # default timeout of 120 secs is sometimes not enough for bits test.
 BITS_TIMEOUT = 200
 
-def missing_deps():
-    """ returns True if any of the test dependent tools are absent.
-    """
-    for dep in deps:
-        if which(dep) is None:
-            return True
-    return False
-
-def supported_platform():
-    """ checks if the test is running on a supported platform.
-    """
-    return platform.machine() in supported_platforms
-
 class QEMUBitsMachine(QEMUMachine): # pylint: disable=too-few-public-methods
     """
     A QEMU VM, with isa-debugcon enabled and bits iso passed
@@ -112,9 +97,8 @@ def base_args(self):
         """return the base argument to QEMU binary"""
         return self._base_args
 
-@skipIf(not supported_platform() or missing_deps(),
-        'unsupported platform or dependencies (%s) not installed' \
-        % ','.join(deps))
+@skipIfMissingCommands("xorriso", "mformat")
+@skipIfNotMachine("x86_64")
 class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes
     """
     ACPI and SMBIOS tests using biosbits.
diff --git a/tests/functional/test_arm_aspeed.py b/tests/functional/test_arm_aspeed.py
index 068740a813..db872ff05e 100755
--- a/tests/functional/test_arm_aspeed.py
+++ b/tests/functional/test_arm_aspeed.py
@@ -13,7 +13,9 @@
 
 from qemu_test import (LinuxKernelTest, Asset,
                        exec_command_and_wait_for_pattern,
-                       interrupt_interactive_console_until_pattern, has_cmd)
+                       interrupt_interactive_console_until_pattern,
+                       skipIfMissingCommands,
+)
 from qemu_test.utils import archive_extract
 from zipfile import ZipFile
 from unittest import skipUnless
@@ -218,7 +220,7 @@ def test_arm_ast2600_evb_buildroot(self):
          'images/ast2600-evb/buildroot-2023.02-tpm/flash.img'),
         'a46009ae8a5403a0826d607215e731a8c68d27c14c41e55331706b8f9c7bd997')
 
-    @skipUnless(*has_cmd('swtpm'))
+    @skipIfMissingCommands('swtpm')
     def test_arm_ast2600_evb_buildroot_tpm(self):
         self.set_machine('ast2600-evb')
 
diff --git a/tests/functional/test_arm_bflt.py b/tests/functional/test_arm_bflt.py
index cd417ebcfc..74d04fd381 100755
--- a/tests/functional/test_arm_bflt.py
+++ b/tests/functional/test_arm_bflt.py
@@ -10,8 +10,9 @@
 import bz2
 
 from qemu_test import QemuUserTest, Asset, has_cmd
+from qemu_test import (QemuUserTest, Asset, skipIfMissingCommands,
+                       skipUntrustedTest)
 from qemu_test.utils import cpio_extract
-from unittest import skipUnless
 
 
 class LoadBFLT(QemuUserTest):
@@ -20,8 +21,8 @@ class LoadBFLT(QemuUserTest):
         ('https://elinux.org/images/5/51/Stm32_mini_rootfs.cpio.bz2'),
          'eefb788e4980c9e8d6c9d60ce7d15d4da6bf4fbc6a80f487673824600d5ba9cc')
 
-    @skipUnless(*has_cmd('cpio'))
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipIfMissingCommands('cpio')
+    @skipUntrustedTest()
     def test_stm32(self):
         # See https://elinux.org/STM32#User_Space
         rootfs_path_bz2 = self.ASSET_ROOTFS.fetch()
diff --git a/tests/functional/test_arm_bpim2u.py b/tests/functional/test_arm_bpim2u.py
index 7b1b0a270f..d2108fd4ea 100755
--- a/tests/functional/test_arm_bpim2u.py
+++ b/tests/functional/test_arm_bpim2u.py
@@ -8,10 +8,11 @@
 import os
 
 from qemu_test import (LinuxKernelTest, exec_command_and_wait_for_pattern,
-                       Asset, interrupt_interactive_console_until_pattern)
+                       Asset, interrupt_interactive_console_until_pattern,
+                       skipBigDataTest)
 from qemu_test.utils import (archive_extract, gzip_uncompress, lzma_uncompress,
                              image_pow2ceil_expand)
-from unittest import skipUnless
+
 
 class BananaPiMachine(LinuxKernelTest):
 
@@ -143,7 +144,7 @@ def test_arm_bpim2u_gmac(self):
         os.remove(dtb_path)
         os.remove(rootfs_path)
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_LARGE_STORAGE'), 'storage limited')
+    @skipBigDataTest()
     def test_arm_bpim2u_openwrt_22_03_3(self):
         self.set_machine('bpim2u')
         # This test download a 8.9 MiB compressed image and expand it
diff --git a/tests/functional/test_arm_integratorcp.py b/tests/functional/test_arm_integratorcp.py
index c2c6ff6ac5..a13e82bd31 100755
--- a/tests/functional/test_arm_integratorcp.py
+++ b/tests/functional/test_arm_integratorcp.py
@@ -15,21 +15,8 @@
 import os
 import logging
 
-from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
-from unittest import skipUnless
-
-
-NUMPY_AVAILABLE = True
-try:
-    import numpy as np
-except ImportError:
-    NUMPY_AVAILABLE = False
-
-CV2_AVAILABLE = True
-try:
-    import cv2
-except ImportError:
-    CV2_AVAILABLE = False
+from qemu_test import (QemuSystemTest, Asset, wait_for_console_pattern,
+                       skipIfMissingImports, skipUntrustedTest)
 
 
 class IntegratorMachine(QemuSystemTest):
@@ -62,7 +49,7 @@ def boot_integratorcp(self):
                          '-append', 'printk.time=0 console=ttyAMA0')
         self.vm.launch()
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipUntrustedTest()
     def test_integratorcp_console(self):
         """
         Boots the Linux kernel and checks that the console is operational
@@ -70,13 +57,15 @@ def test_integratorcp_console(self):
         self.boot_integratorcp()
         wait_for_console_pattern(self, 'Log in as root')
 
-    @skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
-    @skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipIfMissingImports("numpy", "cv2")
+    @skipUntrustedTest()
     def test_framebuffer_tux_logo(self):
         """
         Boot Linux and verify the Tux logo is displayed on the framebuffer.
         """
+        import numpy as np
+        import cv2
+
         screendump_path = os.path.join(self.workdir, "screendump.pbm")
         tuxlogo_path = self.ASSET_TUXLOGO.fetch()
 
diff --git a/tests/functional/test_arm_orangepi.py b/tests/functional/test_arm_orangepi.py
index 676327e8ef..7974010320 100755
--- a/tests/functional/test_arm_orangepi.py
+++ b/tests/functional/test_arm_orangepi.py
@@ -10,10 +10,10 @@
 
 from qemu_test import (LinuxKernelTest, exec_command_and_wait_for_pattern,
                        Asset, interrupt_interactive_console_until_pattern,
-                       wait_for_console_pattern)
+                       wait_for_console_pattern, skipBigDataTest)
 from qemu_test.utils import (archive_extract, gzip_uncompress, lzma_uncompress,
                              image_pow2ceil_expand)
-from unittest import skipUnless
+
 
 class BananaPiMachine(LinuxKernelTest):
 
@@ -149,7 +149,7 @@ def test_arm_orangepi_sd(self):
         os.remove(dtb_path)
         os.remove(rootfs_path)
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_LARGE_STORAGE'), 'storage limited')
+    @skipBigDataTest()
     def test_arm_orangepi_armbian(self):
         self.set_machine('orangepi-pc')
         # This test download a 275 MiB compressed image and expand it
@@ -185,7 +185,7 @@ def test_arm_orangepi_armbian(self):
                                       'to <orangepipc>')
         self.wait_for_console_pattern('Starting Load Kernel Modules...')
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_LARGE_STORAGE'), 'storage limited')
+    @skipBigDataTest()
     def test_arm_orangepi_uboot_netbsd9(self):
         self.set_machine('orangepi-pc')
         # This test download a 304MB compressed image and expand it to 2GB
diff --git a/tests/functional/test_linux_initrd.py b/tests/functional/test_linux_initrd.py
index c71a59d4c9..2207f83fbf 100755
--- a/tests/functional/test_linux_initrd.py
+++ b/tests/functional/test_linux_initrd.py
@@ -10,12 +10,10 @@
 # This work is licensed under the terms of the GNU GPL, version 2 or
 # later.  See the COPYING file in the top-level directory.
 
-import os
 import logging
 import tempfile
 
-from qemu_test import QemuSystemTest, Asset
-from unittest import skipUnless
+from qemu_test import QemuSystemTest, Asset, skipFlakyTest
 
 
 class LinuxInitrd(QemuSystemTest):
@@ -60,7 +58,8 @@ def test_with_2gib_file_should_exit_error_msg_with_linux_v3_6(self):
                 max_size + 1)
             self.assertRegex(self.vm.get_log(), expected_msg)
 
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    # XXX file tracking bug
+    @skipFlakyTest(bug_url=None)
     def test_with_2gib_file_should_work_with_linux_v4_16(self):
         """
         QEMU has supported up to 4 GiB initrd for recent kernel
diff --git a/tests/functional/test_m68k_nextcube.py b/tests/functional/test_m68k_nextcube.py
index 0124622c40..82d3d335d0 100755
--- a/tests/functional/test_m68k_nextcube.py
+++ b/tests/functional/test_m68k_nextcube.py
@@ -10,16 +10,9 @@
 import os
 import time
 
-from qemu_test import QemuSystemTest, Asset
-from unittest import skipUnless
-
+from qemu_test import QemuSystemTest, Asset, skipIfMissingImports
 from qemu_test.tesseract import tesseract_available, tesseract_ocr
-
-PIL_AVAILABLE = True
-try:
-    from PIL import Image
-except ImportError:
-    PIL_AVAILABLE = False
+from unittest import skipUnless
 
 
 class NextCubeMachine(QemuSystemTest):
@@ -43,12 +36,13 @@ def check_bootrom_framebuffer(self, screenshot_path):
         self.vm.cmd('human-monitor-command',
                     command_line='screendump %s' % screenshot_path)
 
-    @skipUnless(PIL_AVAILABLE, 'Python PIL not installed')
+    @skipIfMissingImports("PIL")
     def test_bootrom_framebuffer_size(self):
         self.set_machine('next-cube')
         screenshot_path = os.path.join(self.workdir, "dump.ppm")
         self.check_bootrom_framebuffer(screenshot_path)
 
+        from PIL import Image
         width, height = Image.open(screenshot_path).size
         self.assertEqual(width, 1120)
         self.assertEqual(height, 832)
diff --git a/tests/functional/test_mips64el_loongson3v.py b/tests/functional/test_mips64el_loongson3v.py
index 06032a3a6b..2d1a94e517 100755
--- a/tests/functional/test_mips64el_loongson3v.py
+++ b/tests/functional/test_mips64el_loongson3v.py
@@ -9,10 +9,10 @@
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
-import os
-
 from unittest import skipUnless
-from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
+from qemu_test import (QemuSystemTest, Asset, wait_for_console_pattern,
+                       skipUntrustedTest)
+
 
 class MipsLoongson3v(QemuSystemTest):
     timeout = 60
@@ -22,7 +22,7 @@ class MipsLoongson3v(QemuSystemTest):
          'releases/download/20210112/pmon-3avirt.bin'),
         'fcdf6bb2cb7885a4a62f31fcb0d5e368bac7b6cea28f40c6dfa678af22fea20a')
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipUntrustedTest()
     def test_pmon_serial_console(self):
         self.set_machine('loongson3-virt')
 
diff --git a/tests/functional/test_mips64el_malta.py b/tests/functional/test_mips64el_malta.py
index b5959d33ea..ccb9616f68 100755
--- a/tests/functional/test_mips64el_malta.py
+++ b/tests/functional/test_mips64el_malta.py
@@ -13,21 +13,9 @@
 import logging
 
 from qemu_test import (LinuxKernelTest, Asset,
-                       exec_command_and_wait_for_pattern)
+                       exec_command_and_wait_for_pattern,
+                       skipIfMissingImports, skipFlakyTest, skipUntrustedTest)
 from qemu_test.utils import gzip_uncompress
-from unittest import skipUnless
-
-NUMPY_AVAILABLE = True
-try:
-    import numpy as np
-except ImportError:
-    NUMPY_AVAILABLE = False
-
-CV2_AVAILABLE = True
-try:
-    import cv2
-except ImportError:
-    CV2_AVAILABLE = False
 
 
 class MaltaMachineConsole(LinuxKernelTest):
@@ -76,7 +64,7 @@ def test_mips64el_malta(self):
          'rootfs.mipsel64r1.cpio.gz'),
         '75ba10cd35fb44e32948eeb26974f061b703c81c4ba2fab1ebcacf1d1bec3b61')
 
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipUntrustedTest()
     def test_mips64el_malta_5KEc_cpio(self):
         kernel_path = self.ASSET_KERNEL_3_19_3.fetch()
         initrd_path_gz = self.ASSET_CPIO_R1.fetch()
@@ -106,8 +94,7 @@ def test_mips64el_malta_5KEc_cpio(self):
         self.vm.wait()
 
 
-@skipUnless(NUMPY_AVAILABLE, 'Python NumPy not installed')
-@skipUnless(CV2_AVAILABLE, 'Python OpenCV not installed')
+@skipIfMissingImports('numpy', 'cv2')
 class MaltaMachineFramebuffer(LinuxKernelTest):
 
     timeout = 30
@@ -126,6 +113,10 @@ def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
         """
         Boot Linux kernel and check Tux logo is displayed on the framebuffer.
         """
+
+        import numpy as np
+        import cv2
+
         screendump_path = os.path.join(self.workdir, 'screendump.pbm')
 
         kernel_path_gz = self.ASSET_KERNEL_4_7_0.fetch()
@@ -171,11 +162,12 @@ def do_test_i6400_framebuffer_logo(self, cpu_cores_count):
     def test_mips_malta_i6400_framebuffer_logo_1core(self):
         self.do_test_i6400_framebuffer_logo(1)
 
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    # XXX file tracking bug
+    @skipFlakyTest(bug_url=None)
     def test_mips_malta_i6400_framebuffer_logo_7cores(self):
         self.do_test_i6400_framebuffer_logo(7)
 
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    @skipFlakyTest(bug_url=None)
     def test_mips_malta_i6400_framebuffer_logo_8cores(self):
         self.do_test_i6400_framebuffer_logo(8)
 
diff --git a/tests/functional/test_ppc64_hv.py b/tests/functional/test_ppc64_hv.py
index cc77cd22b1..9ad69b4a15 100755
--- a/tests/functional/test_ppc64_hv.py
+++ b/tests/functional/test_ppc64_hv.py
@@ -9,24 +9,13 @@
 # This work is licensed under the terms of the GNU GPL, version 2 or
 # later.  See the COPYING file in the top-level directory.
 
-from unittest import skipIf, skipUnless
 from qemu_test import (QemuSystemTest, Asset, wait_for_console_pattern,
-                       exec_command, which)
+                       exec_command, skipIfMissingCommands, skipBigDataTest)
 import os
 import time
 import subprocess
 from datetime import datetime
 
-deps = ["xorriso"] # dependent tools needed in the test setup/box.
-
-def missing_deps():
-    """ returns True if any of the test dependent tools are absent.
-    """
-    for dep in deps:
-        if which(dep) is None:
-            return True
-    return False
-
 # Alpine is a light weight distro that supports QEMU. These tests boot
 # that on the machine then run a QEMU guest inside it in KVM mode,
 # that runs the same Alpine distro image.
@@ -34,8 +23,8 @@ def missing_deps():
 # large download, but it may be more polite to create qcow2 image with
 # QEMU already installed and use that.
 # XXX: The order of these tests seems to matter, see git blame.
-@skipIf(missing_deps(), 'dependencies (%s) not installed' % ','.join(deps))
-@skipUnless(os.getenv('QEMU_TEST_ALLOW_LARGE_STORAGE'), 'storage limited')
+@skipIfMissingCommands("xorriso")
+@skipBigDataTest()
 class HypervisorTest(QemuSystemTest):
 
     timeout = 1000
diff --git a/tests/functional/test_ppc_40p.py b/tests/functional/test_ppc_40p.py
index 496282b164..885b8e4ba2 100755
--- a/tests/functional/test_ppc_40p.py
+++ b/tests/functional/test_ppc_40p.py
@@ -7,10 +7,8 @@
 # This work is licensed under the terms of the GNU GPL, version 2 or
 # later. See the COPYING file in the top-level directory.
 
-import os
-
-from unittest import skipUnless
-from qemu_test import QemuSystemTest, Asset, wait_for_console_pattern
+from qemu_test import (QemuSystemTest, Asset, wait_for_console_pattern,
+                       skipUntrustedTest)
 
 
 class IbmPrep40pMachine(QemuSystemTest):
@@ -36,7 +34,7 @@ class IbmPrep40pMachine(QemuSystemTest):
     # All rights reserved.
     # U.S. Government Users Restricted Rights - Use, duplication or disclosure
     # restricted by GSA ADP Schedule Contract with IBM Corp.
-    @skipUnless(os.getenv('QEMU_TEST_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+    @skipUntrustedTest()
     def test_factory_firmware_and_netbsd(self):
         self.set_machine('40p')
         self.require_accelerator("tcg")
diff --git a/tests/functional/test_rx_gdbsim.py b/tests/functional/test_rx_gdbsim.py
index 6306863519..7461be0b46 100755
--- a/tests/functional/test_rx_gdbsim.py
+++ b/tests/functional/test_rx_gdbsim.py
@@ -12,10 +12,9 @@
 
 import os
 
-from unittest import skipUnless
 from qemu_test import (QemuSystemTest, Asset,
                        exec_command_and_wait_for_pattern,
-                       wait_for_console_pattern)
+                       wait_for_console_pattern, skipFlakyTest)
 from qemu_test.utils import gzip_uncompress
 
 
@@ -54,7 +53,8 @@ def test_uboot(self):
         # FIXME limit baudrate on chardev, else we type too fast
         #exec_command_and_wait_for_pattern(self, 'version', gcc_version)
 
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
+    # XXX file tracking bug
+    @skipFlakyTest(bug_url=None)
     def test_linux_sash(self):
         """
         Boots a Linux kernel and checks that the console is operational.
diff --git a/tests/functional/test_sh4_r2d.py b/tests/functional/test_sh4_r2d.py
index c3cfff79ad..e2fcde2d6b 100755
--- a/tests/functional/test_sh4_r2d.py
+++ b/tests/functional/test_sh4_r2d.py
@@ -4,11 +4,8 @@
 #
 # SPDX-License-Identifier: GPL-2.0-or-later
 
-import os
-
-from qemu_test import LinuxKernelTest, Asset
+from qemu_test import LinuxKernelTest, Asset, skipFlakyTest
 from qemu_test.utils import archive_extract
-from unittest import skipUnless
 
 class R2dTest(LinuxKernelTest):
 
@@ -18,7 +15,8 @@ class R2dTest(LinuxKernelTest):
 
     # This test has a 6-10% failure rate on various hosts that look
     # like issues with a buggy kernel.
-    @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable')
+    # XXX file tracking bug
+    @skipFlakyTest(bug_url=None)
     def test_r2d(self):
         self.set_machine('r2d')
         file_path = self.ASSET_DAY09.fetch()
-- 
2.46.0



  parent reply	other threads:[~2024-11-29 17:32 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-29 17:30 [PATCH 00/22 for 10.0] tests/functional: various improvements wrt assets/scratch files Daniel P. Berrangé
2024-11-29 17:30 ` [PATCH 01/22] tests/functional: increase timeouts for arm sx1 test Daniel P. Berrangé
2024-11-30  9:55   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 02/22] tests/functional: remove unused system imports Daniel P. Berrangé
2024-11-30  9:59   ` Thomas Huth
2024-12-02  9:22     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 03/22] tests/functional: remove duplicated 'qemu_test' import statements Daniel P. Berrangé
2024-11-30 10:09   ` Thomas Huth
2024-12-02 11:40     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 04/22] tests/functional: remove pointless with statement Daniel P. Berrangé
2024-11-30 10:10   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 05/22] tests/functional: remove duplicated 'which' function impl Daniel P. Berrangé
2024-11-30 10:16   ` Thomas Huth
2024-12-02 11:44     ` Daniel P. Berrangé
2024-12-02 12:45       ` Thomas Huth
2024-11-30 15:08   ` Richard Henderson
2024-12-02 11:45     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 06/22] tests/functional: introduce some helpful decorators Daniel P. Berrangé
2024-12-02  8:27   ` Thomas Huth
2024-12-02 11:49     ` Daniel P. Berrangé
2024-11-29 17:31 ` Daniel P. Berrangé [this message]
2024-12-02  8:57   ` [PATCH 07/22] tests/functional: switch to new test skip decorators Thomas Huth
2024-12-02 11:51     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 08/22] tests/functional: add helpers for building file paths Daniel P. Berrangé
2024-12-02  9:19   ` Thomas Huth
2024-12-03 13:53     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 09/22] tests/functional: switch over to using self.log_file(...) Daniel P. Berrangé
2024-12-02  9:22   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 10/22] tests/functional: switch over to using self.build_file(...) Daniel P. Berrangé
2024-12-02  9:26   ` Thomas Huth
2024-12-02 12:00     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 11/22] tests/functional: switch over to using self.data_file(...) Daniel P. Berrangé
2024-12-02  9:32   ` Thomas Huth
2024-12-03  5:39     ` Ani Sinha
2024-12-03  8:11       ` Daniel P. Berrangé
2024-12-03  8:50         ` Thomas Huth
2024-12-03  9:05           ` Ani Sinha
2024-11-29 17:31 ` [PATCH 12/22] tests/functional: switch over to using self.scratch_file() Daniel P. Berrangé
2024-12-02  9:56   ` Thomas Huth
2024-12-02 12:03     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 13/22] tests/functional: switch over to using self.socket_dir(...) Daniel P. Berrangé
2024-12-02  9:59   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 14/22] tests/functional: remove redundant 'rmtree' call Daniel P. Berrangé
2024-11-30 10:32   ` Thomas Huth
2024-11-29 17:31 ` [PATCH 15/22] tests/functional: add common zip_extract helper Daniel P. Berrangé
2024-12-02 10:04   ` Thomas Huth
2024-12-02 12:04     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 16/22] tests/functional: add common deb_extract helper Daniel P. Berrangé
2024-12-02 10:14   ` Thomas Huth
2024-12-02 12:08     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 17/22] tests/functional: generalize archive_extract Daniel P. Berrangé
2024-12-02 10:20   ` Thomas Huth
2024-12-02 12:11     ` Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 18/22] tests/functional: add 'archive_extract' to QemuBaseTest Daniel P. Berrangé
2024-12-02 10:30   ` Thomas Huth
2024-12-02 12:13     ` Daniel P. Berrangé
2024-12-02 12:52       ` Thomas Huth
2024-12-02 13:28         ` Daniel P. Berrangé
2024-12-06 13:10         ` Thomas Huth
2024-11-29 17:31 ` [PATCH 19/22] tests/functional: convert tests to new archive_extract helper Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 20/22] tests/functional: generalize uncompress Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 21/22] tests/functional: add 'uncompress' to QemuBaseTest Daniel P. Berrangé
2024-11-29 17:31 ` [PATCH 22/22] tests/functional: convert tests to new uncompress helper Daniel P. Berrangé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241129173120.761728-8-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.