On Tue, Jun 8, 2021 at 11:09 AM Cleber Rosa <cr...@redhat.com> wrote: > > In this context, and according to the qemu.utils.list_feature() utility > function, a feature is something is available as a QEMU command line > option that can take the "help" value. > > This builds on top of that utility function, and allows test writers > to require, for instance, the "x-remote" (option) machine type > (feature). > > This example is actually applied here to the reespective test, given > that the option is conditionally built, and the test will ERROR > without it. > > Signed-off-by: Cleber Rosa <cr...@redhat.com> > --- > tests/acceptance/avocado_qemu/__init__.py | 29 ++++++++++++++++++++++- > tests/acceptance/multiprocess.py | 1 + > 2 files changed, 29 insertions(+), 1 deletion(-) > > diff --git a/tests/acceptance/avocado_qemu/__init__.py > b/tests/acceptance/avocado_qemu/__init__.py > index 93c4b9851f..432caff4e6 100644 > --- a/tests/acceptance/avocado_qemu/__init__.py > +++ b/tests/acceptance/avocado_qemu/__init__.py > @@ -11,6 +11,7 @@ > import logging > import os > import shutil > +import subprocess > import sys > import uuid > import tempfile > @@ -45,7 +46,8 @@ > from qemu.utils import ( > get_info_usernet_hostfwd_port, > kvm_available, > - tcg_available, > + list_feature, > + tcg_available > ) > > def is_readable_executable_file(path): > @@ -182,6 +184,31 @@ def _get_unique_tag_val(self, tag_name): > return vals.pop() > return None > > + def require_feature(self, feature, option=None): > + """ > + Requires a feature to be available for the test to continue > + > + It takes into account the currently set qemu binary, and only checks > + for by running a "qemu -$feature help" command. If the specific > option > + is given, it checks if it's listed for the given feature. > + > + If the check fails, the test is canceled. > + > + :param feature: name of a QEMU feature, such as "accel" or "machine" > + :type feature: str > + :param option: the specific value for the feature. For instance, > + if feature is "machine", option can be "q35". > + type option: str > + """ > + try: > + options_available = list_feature(self.qemu_bin, feature)
Looking at this code, the previous patch makes more sense the way it is now :) Maybe, splitting it into multiple `list_` functions will make the code here more complex. Anyway, I'll let you decide. Reviewed-by: Willian Rampazzo <willi...@redhat.com>