[PATCH] tests/acceptance: allow control over tags during check-acceptance

Willian Rampazzo posted 1 patch 2 years, 10 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210706190646.209440-1-willianr@redhat.com
There is a newer version of this series
docs/devel/testing.rst |  7 +++++++
tests/Makefile.include | 10 ++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)
[PATCH] tests/acceptance: allow control over tags during check-acceptance
Posted by Willian Rampazzo 2 years, 10 months ago
Although it is possible to run a specific test using the avocado
command-line, a user may want to use a specific tag while running the
``make check-acceptance`` during the development or debugging.

This allows using the TAGS environment variable where the user takes
total control of which tests should run based on the tags defined.

This also makes the check-acceptance command flexible to restrict tests
based on tags while running on CI.

e.g.:

TAGS="foo bar baz" make check-acceptance

Signed-off-by: Willian Rampazzo <willianr@redhat.com>
---
 docs/devel/testing.rst |  7 +++++++
 tests/Makefile.include | 10 ++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
index 4e42392810..6e03c3449b 100644
--- a/docs/devel/testing.rst
+++ b/docs/devel/testing.rst
@@ -760,6 +760,13 @@ in the current directory, tagged as "quick", run:
 
   avocado run -t quick .
 
+It is also possible to run tests based on tags using the
+``make check-acceptance`` command and the ``TAGS`` environment variable:
+
+.. code::
+
+   TAGS=quick make check-acceptance
+
 The ``avocado_qemu.Test`` base test class
 -----------------------------------------
 
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 8f220e15d1..5869ab8a04 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -92,7 +92,11 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
 # Any number of command separated loggers are accepted.  For more
 # information please refer to "avocado --help".
 AVOCADO_SHOW=app
-AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
+ifndef TAGS
+	AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
+else
+	AVOCADO_TAGS=$(addprefix -t , $(TAGS))
+endif
 
 $(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
 	$(call quiet-command, \
@@ -125,10 +129,12 @@ get-vm-image-fedora-31-%: check-venv
 get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD))
 
 check-acceptance: check-venv $(TESTS_RESULTS_DIR) get-vm-images
+	@echo "AVOCADO_TAGS $(AVOCADO_TAGS)"
 	$(call quiet-command, \
             $(TESTS_VENV_DIR)/bin/python -m avocado \
             --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
-            --filter-by-tags-include-empty --filter-by-tags-include-empty-key \
+            $(if $(TAGS),, --filter-by-tags-include-empty \
+			--filter-by-tags-include-empty-key) \
             $(AVOCADO_TAGS) \
             $(if $(GITLAB_CI),,--failfast) tests/acceptance, \
             "AVOCADO", "tests/acceptance")
-- 
2.31.1


Re: [PATCH] tests/acceptance: allow control over tags during check-acceptance
Posted by Philippe Mathieu-Daudé 2 years, 10 months ago
On 7/6/21 9:06 PM, Willian Rampazzo wrote:
> Although it is possible to run a specific test using the avocado
> command-line, a user may want to use a specific tag while running the
> ``make check-acceptance`` during the development or debugging.
> 
> This allows using the TAGS environment variable where the user takes
> total control of which tests should run based on the tags defined.
> 
> This also makes the check-acceptance command flexible to restrict tests
> based on tags while running on CI.
> 
> e.g.:
> 
> TAGS="foo bar baz" make check-acceptance

I'm worried 'TAGS' is a bit too generic...
Maybe rename AVOCADO_TAGS -> AVOCADO_CMDLINE_TAGS and
TAGS -> AVOCADO_TAGS?

> Signed-off-by: Willian Rampazzo <willianr@redhat.com>
> ---
>  docs/devel/testing.rst |  7 +++++++
>  tests/Makefile.include | 10 ++++++++--
>  2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
> index 4e42392810..6e03c3449b 100644
> --- a/docs/devel/testing.rst
> +++ b/docs/devel/testing.rst
> @@ -760,6 +760,13 @@ in the current directory, tagged as "quick", run:
>  
>    avocado run -t quick .
>  
> +It is also possible to run tests based on tags using the
> +``make check-acceptance`` command and the ``TAGS`` environment variable:
> +
> +.. code::
> +
> +   TAGS=quick make check-acceptance
> +
>  The ``avocado_qemu.Test`` base test class
>  -----------------------------------------
>  
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 8f220e15d1..5869ab8a04 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -92,7 +92,11 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
>  # Any number of command separated loggers are accepted.  For more
>  # information please refer to "avocado --help".
>  AVOCADO_SHOW=app
> -AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
> +ifndef TAGS
> +	AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
> +else
> +	AVOCADO_TAGS=$(addprefix -t , $(TAGS))
> +endif
>  
>  $(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
>  	$(call quiet-command, \
> @@ -125,10 +129,12 @@ get-vm-image-fedora-31-%: check-venv
>  get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD))
>  
>  check-acceptance: check-venv $(TESTS_RESULTS_DIR) get-vm-images
> +	@echo "AVOCADO_TAGS $(AVOCADO_TAGS)"
>  	$(call quiet-command, \
>              $(TESTS_VENV_DIR)/bin/python -m avocado \
>              --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
> -            --filter-by-tags-include-empty --filter-by-tags-include-empty-key \
> +            $(if $(TAGS),, --filter-by-tags-include-empty \
> +			--filter-by-tags-include-empty-key) \
>              $(AVOCADO_TAGS) \
>              $(if $(GITLAB_CI),,--failfast) tests/acceptance, \
>              "AVOCADO", "tests/acceptance")
> 


Re: [PATCH] tests/acceptance: allow control over tags during check-acceptance
Posted by Willian Rampazzo 2 years, 10 months ago
On Tue, Jul 6, 2021 at 5:46 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> On 7/6/21 9:06 PM, Willian Rampazzo wrote:
> > Although it is possible to run a specific test using the avocado
> > command-line, a user may want to use a specific tag while running the
> > ``make check-acceptance`` during the development or debugging.
> >
> > This allows using the TAGS environment variable where the user takes
> > total control of which tests should run based on the tags defined.
> >
> > This also makes the check-acceptance command flexible to restrict tests
> > based on tags while running on CI.
> >
> > e.g.:
> >
> > TAGS="foo bar baz" make check-acceptance
>
> I'm worried 'TAGS' is a bit too generic...
> Maybe rename AVOCADO_TAGS -> AVOCADO_CMDLINE_TAGS and
> TAGS -> AVOCADO_TAGS?

I'm fine with those changes.

>
> > Signed-off-by: Willian Rampazzo <willianr@redhat.com>
> > ---
> >  docs/devel/testing.rst |  7 +++++++
> >  tests/Makefile.include | 10 ++++++++--
> >  2 files changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/docs/devel/testing.rst b/docs/devel/testing.rst
> > index 4e42392810..6e03c3449b 100644
> > --- a/docs/devel/testing.rst
> > +++ b/docs/devel/testing.rst
> > @@ -760,6 +760,13 @@ in the current directory, tagged as "quick", run:
> >
> >    avocado run -t quick .
> >
> > +It is also possible to run tests based on tags using the
> > +``make check-acceptance`` command and the ``TAGS`` environment variable:
> > +
> > +.. code::
> > +
> > +   TAGS=quick make check-acceptance
> > +
> >  The ``avocado_qemu.Test`` base test class
> >  -----------------------------------------
> >
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index 8f220e15d1..5869ab8a04 100644
> > --- a/tests/Makefile.include
> > +++ b/tests/Makefile.include
> > @@ -92,7 +92,11 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results
> >  # Any number of command separated loggers are accepted.  For more
> >  # information please refer to "avocado --help".
> >  AVOCADO_SHOW=app
> > -AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
> > +ifndef TAGS
> > +     AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGETS)))
> > +else
> > +     AVOCADO_TAGS=$(addprefix -t , $(TAGS))
> > +endif
> >
> >  $(TESTS_VENV_DIR): $(TESTS_VENV_REQ)
> >       $(call quiet-command, \
> > @@ -125,10 +129,12 @@ get-vm-image-fedora-31-%: check-venv
> >  get-vm-images: check-venv $(patsubst %,get-vm-image-fedora-31-%, $(FEDORA_31_DOWNLOAD))
> >
> >  check-acceptance: check-venv $(TESTS_RESULTS_DIR) get-vm-images
> > +     @echo "AVOCADO_TAGS $(AVOCADO_TAGS)"
> >       $(call quiet-command, \
> >              $(TESTS_VENV_DIR)/bin/python -m avocado \
> >              --show=$(AVOCADO_SHOW) run --job-results-dir=$(TESTS_RESULTS_DIR) \
> > -            --filter-by-tags-include-empty --filter-by-tags-include-empty-key \
> > +            $(if $(TAGS),, --filter-by-tags-include-empty \
> > +                     --filter-by-tags-include-empty-key) \
> >              $(AVOCADO_TAGS) \
> >              $(if $(GITLAB_CI),,--failfast) tests/acceptance, \
> >              "AVOCADO", "tests/acceptance")
> >
>