mirror of https://gitee.com/openkylin/libvirt.git
meson: Disable all tests when tests are disabled
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>
This commit is contained in:
parent
8ce0decc37
commit
87f14badd0
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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
|
||||
|
|
216
src/meson.build
216
src/meson.build
|
@ -946,121 +946,123 @@ meson.add_install_script(
|
|||
|
||||
# Check driver files
|
||||
|
||||
if host_machine.system() == 'linux'
|
||||
if build_tests[0]
|
||||
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')
|
||||
test(
|
||||
'check-admin-symfile',
|
||||
python3_prog,
|
||||
args: [ check_symfile_prog.full_path(), libvirt_admin_syms, libvirt_admin_lib ],
|
||||
env: runutf8,
|
||||
suite: 'script'
|
||||
)
|
||||
endif
|
||||
endif
|
||||
|
||||
test(
|
||||
'check-symfile',
|
||||
'check-symsorting',
|
||||
python3_prog,
|
||||
args: [ check_symfile_prog.full_path(), libvirt_syms, libvirt_lib ],
|
||||
args: [
|
||||
check_symsorting_prog.full_path(),
|
||||
meson.current_source_dir(),
|
||||
files(sym_files, used_sym_files),
|
||||
],
|
||||
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'
|
||||
)
|
||||
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-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-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
|
||||
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-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-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-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 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
|
||||
|
|
Loading…
Reference in New Issue