mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
tests/functional: skip tests if assets are not available
If downloading of assets has been disabled, then skip running a test if the assets it has registered are not already downloaded. Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20241217155953.3950506-31-berrange@redhat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
parent
c5be9dd32f
commit
6ff217c2d1
2 changed files with 18 additions and 1 deletions
|
@ -65,6 +65,12 @@ class Asset:
|
|||
def valid(self):
|
||||
return self.cache_file.exists() and self._check(self.cache_file)
|
||||
|
||||
def fetchable(self):
|
||||
return not os.environ.get("QEMU_TEST_NO_DOWNLOAD", False)
|
||||
|
||||
def available(self):
|
||||
return self.valid() or self.fetchable()
|
||||
|
||||
def _wait_for_other_download(self, tmp_cache_file):
|
||||
# Another thread already seems to download the asset, so wait until
|
||||
# it is done, while also checking the size to see whether it is stuck
|
||||
|
@ -103,7 +109,7 @@ class Asset:
|
|||
self.cache_file, self.url)
|
||||
return str(self.cache_file)
|
||||
|
||||
if os.environ.get("QEMU_TEST_NO_DOWNLOAD", False):
|
||||
if not self.fetchable():
|
||||
raise Exception("Asset cache is invalid and downloads disabled")
|
||||
|
||||
self.log.info("Downloading %s to %s...", self.url, self.cache_file)
|
||||
|
|
|
@ -184,6 +184,14 @@ class QemuBaseTest(unittest.TestCase):
|
|||
def log_file(self, *args):
|
||||
return str(Path(self.outputdir, *args))
|
||||
|
||||
def assets_available(self):
|
||||
for name, asset in vars(self.__class__).items():
|
||||
if name.startswith("ASSET_") and type(asset) == Asset:
|
||||
if not asset.available():
|
||||
self.log.debug(f"Asset {asset.url} not available")
|
||||
return False
|
||||
return True
|
||||
|
||||
def setUp(self, bin_prefix):
|
||||
self.assertIsNotNone(self.qemu_bin, 'QEMU_TEST_QEMU_BINARY must be set')
|
||||
self.arch = self.qemu_bin.split('-')[-1]
|
||||
|
@ -209,6 +217,9 @@ class QemuBaseTest(unittest.TestCase):
|
|||
self.machinelog.setLevel(logging.DEBUG)
|
||||
self.machinelog.addHandler(self._log_fh)
|
||||
|
||||
if not self.assets_available():
|
||||
self.skipTest('One or more assets is not available')
|
||||
|
||||
def tearDown(self):
|
||||
if "QEMU_TEST_KEEP_SCRATCH" not in os.environ:
|
||||
shutil.rmtree(self.workdir)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue