[PATCH 1/2] meson: Annotate each test() with 'suite'

Michal Privoznik mprivozn at redhat.com
Tue Jul 18 15:27:32 UTC 2023


A test case can be part of a test suite (just like we already
have 'syntax-check'). This then allows developers to run only a
subset of tests. For instance - when using valgrind test setup
(`meson test -C _build/ --setup valgrind`) it makes zero sense to
run syntax-check tests or other script based tests (e.g.
check-augeas-*, check-remote_protocol, etc.). What does makes
sense is to run compiled binaries.

Strictly speaking, reaching that goal is as trivial as annotating
only those compiled tests (declared in tests/meson.build) and
running them selectively:

  meson test -C _build/ --setup valgrind --suite $TAG

But it may be also desirable to run test scripts separately.

Therefore, introduce two new tags: 'bin' for compiled tests, and
'script' for script based tests and annotate each test()
accordingly.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 docs/advanced-tests.rst |  2 +-
 docs/html/meson.build   |  1 +
 docs/meson.build        |  1 +
 src/access/meson.build  |  1 +
 src/meson.build         | 10 ++++++++++
 tests/meson.build       | 11 +++++++++--
 6 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/docs/advanced-tests.rst b/docs/advanced-tests.rst
index 370e24cc98..b9dae46c8a 100644
--- a/docs/advanced-tests.rst
+++ b/docs/advanced-tests.rst
@@ -16,7 +16,7 @@ by running
 
 ::
 
-  $ meson test --setup valgrind
+  $ meson test --setup valgrind --suite bin
 
 `Valgrind <https://valgrind.org/>`__ is a test that checks for
 memory management issues, such as leaks or use of uninitialized
diff --git a/docs/html/meson.build b/docs/html/meson.build
index 4d8d44d783..c0a666f4e1 100644
--- a/docs/html/meson.build
+++ b/docs/html/meson.build
@@ -126,4 +126,5 @@ test(
     '--nonet', '--noout', docs_html_paths,
   ],
   depends: docs_html_dep,
+  suite: 'script'
 )
diff --git a/docs/meson.build b/docs/meson.build
index 70d271ec6e..b20ef1c926 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -360,4 +360,5 @@ test(
     meson.project_build_root() / 'docs'
   ],
   env: runutf8,
+  suite: 'script'
 )
diff --git a/src/access/meson.build b/src/access/meson.build
index 07c703e8b5..e65f17c0a2 100644
--- a/src/access/meson.build
+++ b/src/access/meson.build
@@ -110,4 +110,5 @@ test(
   python3_prog,
   args: [ check_aclperms_prog.full_path(), access_perm_h, files('viraccessperm.c') ],
   env: runutf8,
+  suite: 'script'
 )
diff --git a/src/meson.build b/src/meson.build
index c2b882d464..28e4d0cc4e 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -923,6 +923,7 @@ if host_machine.system() == 'linux'
     python3_prog,
     args: [ check_symfile_prog.full_path(), libvirt_syms, libvirt_lib ],
     env: runutf8,
+    suite: 'script'
   )
 
   if conf.has('WITH_REMOTE')
@@ -931,6 +932,7 @@ if host_machine.system() == 'linux'
       python3_prog,
       args: [ check_symfile_prog.full_path(), libvirt_admin_syms, libvirt_admin_lib ],
       env: runutf8,
+      suite: 'script'
     )
   endif
 endif
@@ -944,6 +946,7 @@ test(
     files(sym_files, used_sym_files),
   ],
   env: runutf8,
+  suite: 'script'
 )
 
 test(
@@ -955,6 +958,7 @@ test(
     libvirt_admin_private_syms,
   ],
   env: runutf8,
+  suite: 'script'
 )
 
 test(
@@ -965,6 +969,7 @@ test(
     files('libvirt_public.syms'), libvirt_qemu_syms, libvirt_lxc_syms,
   ],
   env: runutf8,
+  suite: 'script'
 )
 
 test(
@@ -974,6 +979,7 @@ test(
     check_drivername_prog.full_path(), libvirt_admin_public_syms,
   ],
   env: runutf8,
+  suite: 'script'
 )
 
 test(
@@ -981,6 +987,7 @@ test(
   python3_prog,
   args: [ check_driverimpls_prog.full_path(), driver_source_files ],
   env: runutf8,
+  suite: 'script'
 )
 
 test(
@@ -988,6 +995,7 @@ test(
   python3_prog,
   args: [ check_aclrules_prog.full_path(), files('remote/remote_protocol.x'), stateful_driver_source_files ],
   env: runutf8,
+  suite: 'script'
 )
 
 if augparse_prog.found()
@@ -1000,6 +1008,7 @@ if augparse_prog.found()
         '-I', data['builddir'],
         data['file'].full_path(),
       ],
+      suite: 'script'
     )
   endforeach
 endif
@@ -1020,6 +1029,7 @@ if pdwtags_prog.found() and cc.get_id() != 'clang'
       ],
       env: runutf8,
       depends: [ lib ],
+      suite: 'script'
     )
   endforeach
 endif
diff --git a/tests/meson.build b/tests/meson.build
index 0082446029..e6589ec555 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -595,7 +595,14 @@ foreach data : tests
     # default meson timeout
     timeout = 30
   endif
-  test(data['name'], test_bin, env: tests_env, timeout: timeout, depends: tests_deps)
+  test(
+    data['name'],
+    test_bin,
+    env: tests_env,
+    timeout: timeout,
+    depends: tests_deps,
+    suite: 'bin'
+  )
 endforeach
 
 
@@ -695,7 +702,7 @@ endif
 
 foreach name : test_scripts
   script = find_program(name)
-  test(name, script, env: tests_env)
+  test(name, script, env: tests_env, suite: 'script')
 endforeach
 
 testenv = runutf8
-- 
2.41.0



More information about the libvir-list mailing list