]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
meson: Disable all tests when tests are disabled
authorAndrea Bolognani <abologna@redhat.com>
Tue, 3 Oct 2023 12:58:56 +0000 (14:58 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Thu, 26 Oct 2023 09:31:24 +0000 (11:31 +0200)
Currently, passing -Dtests=disabled only disables a subset of
tests: those that are written in C and thus require compilation.
Other tests, such as the syntax-check ones and those that are
implemented as scripts, are always enabled.

There's a potentially dangerous consequence of this behavior:
when tests are disabled, 'meson test' will succeed as if they
had been enabled. No indication of this will be shown, so the
user will likely make the reasonable assumption that everything
is fine when in fact the significantly reduced coverage might
be hiding failures.

To solve this issues, disable *all* tests when asked to do so,
and inject an intentionally failing test to ensure that 'meson
test' doesn't succeed.

Best viewed with 'git show -w'.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
build-aux/meson.build
docs/html/meson.build
docs/meson.build
meson.build
src/access/meson.build
src/meson.build

index b5d88a4c44354a613e80a68d06b10bc8bfccb89a..84405c5ec85c75472318af47ec3fcb6a08b3f08c 100644 (file)
@@ -1,6 +1,6 @@
 # Skip syntax-check if not building from git because we get the list of files
 # to check using git commands and it fails if we are not in git repository.
-if git
+if git and build_tests[0]
   flake8_path = ''
   if flake8_prog.found()
     flake8_path = flake8_prog.full_path()
index c0a666f4e1b2bd196870860b8f903ec23670df93..b4e81f8501885d617404f637d4b4e92b486807e7 100644 (file)
@@ -119,12 +119,14 @@ html_xslt_gen = []
 
 # --- end of XSLT processing ---
 
-test(
-  'check-html',
-  xmllint_prog,
-  args: [
-    '--nonet', '--noout', docs_html_paths,
-  ],
-  depends: docs_html_dep,
-  suite: 'script'
-)
+if build_tests[0]
+  test(
+    'check-html',
+    xmllint_prog,
+    args: [
+      '--nonet', '--noout', docs_html_paths,
+    ],
+    depends: docs_html_dep,
+    suite: 'script'
+  )
+endif
index b20ef1c926114021662b2188a7795da749fafc76..52763a859716ee44412065afab3df9fc24cfb7e8 100644 (file)
@@ -351,14 +351,16 @@ run_target(
   depends: install_web_deps,
 )
 
-test(
-  'check-html-references',
-  python3_prog,
-  args: [
-    check_html_references_prog.full_path(),
-    '--webroot',
-    meson.project_build_root() / 'docs'
-  ],
-  env: runutf8,
-  suite: 'script'
-)
+if build_tests[0]
+  test(
+    'check-html-references',
+    python3_prog,
+    args: [
+      check_html_references_prog.full_path(),
+      '--webroot',
+      meson.project_build_root() / 'docs'
+    ],
+    env: runutf8,
+    suite: 'script'
+  )
+endif
index 33027404f644be646f9d3ebd01a9f7cca052daf6..b30150d605a3d9daed2723511b33284fff91c9c9 100644 (file)
@@ -2085,6 +2085,13 @@ subdir('tools')
 
 if build_tests[0]
   subdir('tests')
+else
+  # Ensure that 'meson test' fails when tests are disabled, as opposed to
+  # misleadingly succeeding at doing absolutely nothing
+  test(
+    'tests-are-disabled',
+    python3_prog, args: [ '-c', 'raise Exception("tests are disabled")' ],
+  )
 endif
 
 subdir('examples')
index e65f17c0a2f3ac194d6a1a7b0f1bebf4ac379a48..6ca953c932e02fa71f6134ae488f9e7719f68134 100644 (file)
@@ -105,10 +105,12 @@ access_dep = declare_dependency(
 
 generated_sym_files += access_gen_sym
 
-test(
-  'check-aclperms',
-  python3_prog,
-  args: [ check_aclperms_prog.full_path(), access_perm_h, files('viraccessperm.c') ],
-  env: runutf8,
-  suite: 'script'
-)
+if build_tests[0]
+  test(
+    'check-aclperms',
+    python3_prog,
+    args: [ check_aclperms_prog.full_path(), access_perm_h, files('viraccessperm.c') ],
+    env: runutf8,
+    suite: 'script'
+  )
+endif
index 43146fe3c3c82f4837359814487ca9b66776c423..e25b3e5980b5725c197b8dd2be94504d72b7166d 100644 (file)
@@ -946,121 +946,123 @@ meson.add_install_script(
 
 # Check driver files
 
-if host_machine.system() == 'linux'
-  test(
-    'check-symfile',
-    python3_prog,
-    args: [ check_symfile_prog.full_path(), libvirt_syms, libvirt_lib ],
-    env: runutf8,
-    suite: 'script'
-  )
-
-  if conf.has('WITH_REMOTE')
+if build_tests[0]
+  if host_machine.system() == 'linux'
     test(
-      'check-admin-symfile',
+      'check-symfile',
       python3_prog,
-      args: [ check_symfile_prog.full_path(), libvirt_admin_syms, libvirt_admin_lib ],
+      args: [ check_symfile_prog.full_path(), libvirt_syms, libvirt_lib ],
       env: runutf8,
       suite: 'script'
     )
+
+    if conf.has('WITH_REMOTE')
+      test(
+        'check-admin-symfile',
+        python3_prog,
+        args: [ check_symfile_prog.full_path(), libvirt_admin_syms, libvirt_admin_lib ],
+        env: runutf8,
+        suite: 'script'
+      )
+    endif
   endif
-endif
 
-test(
-  'check-symsorting',
-  python3_prog,
-  args: [
-    check_symsorting_prog.full_path(),
-    meson.current_source_dir(),
-    files(sym_files, used_sym_files),
-  ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-symsorting',
+    python3_prog,
+    args: [
+      check_symsorting_prog.full_path(),
+      meson.current_source_dir(),
+      files(sym_files, used_sym_files),
+    ],
+    env: runutf8,
+    suite: 'script'
+  )
 
-test(
-  'check-admin-symsorting',
-  python3_prog,
-  args: [
-    check_symsorting_prog.full_path(),
-    meson.current_source_dir(),
-    libvirt_admin_private_syms,
-  ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-admin-symsorting',
+    python3_prog,
+    args: [
+      check_symsorting_prog.full_path(),
+      meson.current_source_dir(),
+      libvirt_admin_private_syms,
+    ],
+    env: runutf8,
+    suite: 'script'
+  )
 
-test(
-  'check-drivername',
-  python3_prog,
-  args: [
-    check_drivername_prog.full_path(), files(driver_headers),
-    files('libvirt_public.syms'), libvirt_qemu_syms, libvirt_lxc_syms,
-  ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-drivername',
+    python3_prog,
+    args: [
+      check_drivername_prog.full_path(), files(driver_headers),
+      files('libvirt_public.syms'), libvirt_qemu_syms, libvirt_lxc_syms,
+    ],
+    env: runutf8,
+    suite: 'script'
+  )
 
-test(
-  'check-admin-drivername',
-  python3_prog,
-  args: [
-    check_drivername_prog.full_path(), libvirt_admin_public_syms,
-  ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-admin-drivername',
+    python3_prog,
+    args: [
+      check_drivername_prog.full_path(), libvirt_admin_public_syms,
+    ],
+    env: runutf8,
+    suite: 'script'
+  )
 
-test(
-  'check-driverimpls',
-  python3_prog,
-  args: [ check_driverimpls_prog.full_path(), driver_source_files ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-driverimpls',
+    python3_prog,
+    args: [ check_driverimpls_prog.full_path(), driver_source_files ],
+    env: runutf8,
+    suite: 'script'
+  )
 
-test(
-  'check-aclrules',
-  python3_prog,
-  args: [ check_aclrules_prog.full_path(), files('remote/remote_protocol.x'), stateful_driver_source_files ],
-  env: runutf8,
-  suite: 'script'
-)
+  test(
+    'check-aclrules',
+    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()
-  foreach data : augeas_test_data
-    test(
-      'check-augeas-@0@'.format(data['name']),
-      augparse_prog,
-      args: [
-        '-I', data['srcdir'],
-        '-I', data['builddir'],
-        data['file'].full_path(),
-      ],
-      suite: 'script'
-    )
-  endforeach
-endif
+  if augparse_prog.found()
+    foreach data : augeas_test_data
+      test(
+        'check-augeas-@0@'.format(data['name']),
+        augparse_prog,
+        args: [
+          '-I', data['srcdir'],
+          '-I', data['builddir'],
+          data['file'].full_path(),
+        ],
+        suite: 'script'
+      )
+    endforeach
+  endif
 
-if pdwtags_prog.found() and cc.get_id() != 'clang'
-  foreach proto : check_protocols
-    lib = proto['lib']
-    test(
-      'check-@0@'.format(proto['name']),
-      python3_prog,
-      args: [
-        check_remote_protocol_prog.full_path(),
-        proto['name'],
-        lib.name(),
-        lib.full_path(),
-        pdwtags_prog.full_path(),
-        files('@0@-structs'.format(proto['name'])),
-      ],
-      env: runutf8,
-      depends: [ lib ],
-      suite: 'script'
-    )
-  endforeach
+  if pdwtags_prog.found() and cc.get_id() != 'clang'
+    foreach proto : check_protocols
+      lib = proto['lib']
+      test(
+        'check-@0@'.format(proto['name']),
+        python3_prog,
+        args: [
+          check_remote_protocol_prog.full_path(),
+          proto['name'],
+          lib.name(),
+          lib.full_path(),
+          pdwtags_prog.full_path(),
+          files('@0@-structs'.format(proto['name'])),
+        ],
+        env: runutf8,
+        depends: [ lib ],
+        suite: 'script'
+      )
+    endforeach
+  endif
 endif
 
 # configure pkg-config files for run script