Files
lix/tests/functional/meson.build
T
Raito Bezarius 0741e24266 tests/functional2: migrate (un|)sandboxed CA tests
CA tests have grown quite complicated and are hard to debug and
manoeuver for new needs.

They are a prime target for F2 migration and they were extremely
pleasant to write.

Most functionality is preserved or improved with additional behaviors
asserted on warnings and the full set of reports.

Change-Id: I70cd52abbe5ff13f56744b966ab00962ad3a49d6
Signed-off-by: Raito Bezarius <raito@lix.systems>
2026-02-26 15:33:22 +00:00

183 lines
4.6 KiB
Meson

ls = find_program('ls', native : true)
test_confdata = {
'bindir': bindir,
'ls': fs.parent(ls.full_path()),
'lsof': lsof.full_path(),
'dot': dot.found() ? dot.full_path() : '',
'bash': bash.full_path(),
'sandbox_shell': busybox.found() ? busybox.full_path() : '',
'PACKAGE_VERSION': meson.project_version(),
'system': host_system,
'python': python.full_path(),
'runinpty': runinpty.full_path(),
}
# Just configures `common/vars-and-functions.sh.in`.
# Done as a subdir() so Meson places it under `common` in the build directory as well.
subdir('common')
config_nix_in = configure_file(
input : 'config.nix.in',
output : 'config.nix',
configuration : test_confdata,
)
# Just configures `nix-shell/config.nix.in`. Done as a subdir() for the same reason as above.
subdir('nix-shell')
subdir('plugins')
subdir('test-libstoreconsumer')
functional_tests_scripts = [
'init.sh',
'test-infra.sh',
'gc.sh',
'nix-collect-garbage-d.sh',
'nix-collect-garbage-dry-run.sh',
'remote-store.sh',
'legacy-ssh-store.sh',
'experimental-features.sh',
'fetchMercurial.sh',
'gc-auto.sh',
'user-envs.sh',
'binary-cache.sh',
'binary-cache-regression-fj647.sh',
'multiple-outputs.sh',
'nix-build.sh',
'gc-concurrent.sh',
'repair.sh',
'repair-chroot.sh',
'fixed.sh',
'export-graph.sh',
'fetchGitRefs.sh',
'gc-runtime.sh',
'fetchers.sh',
'fetchGit.sh',
'fetchGitLocked.sh',
'fetchurl.sh',
'fetchPath.sh',
'fetchTree-file.sh',
'simple.sh',
'referrers.sh',
'optimise-store.sh',
'substitute-with-invalid-ca.sh',
'signing.sh',
'gc-non-blocking.sh',
'check.sh',
'nix-shell/basic.sh',
'nix-shell/structured-attrs.sh',
'nix-shell/regression-533.sh',
'build-remote-input-addressed.sh',
'secure-drv-outputs.sh',
'restricted.sh',
'fetchGitSubmodules.sh',
'readfile-context.sh',
'nix-channel.sh',
'dependencies.sh',
'check-reqs.sh',
'build-remote-content-addressed-fixed.sh',
'build-jobless.sh',
'nar-access.sh',
'impure-eval.sh',
'repl.sh',
'binary-cache-build-remote.sh',
'logging.sh',
'export.sh',
'config.sh',
'local-store.sh',
'filter-source.sh',
'misc.sh',
'linux-sandbox.sh',
'supplementary-groups.sh',
'build-dry.sh',
'structured-attrs.sh',
'shell.sh',
'nix-copy-ssh.sh',
'nix-copy-ssh-ng.sh',
'pre-hook.sh',
'post-hook.sh',
'function-trace.sh',
'fmt.sh',
'eval-store.sh',
'derivation-json.sh',
'import-derivation.sh',
'case-hack.sh',
'placeholders.sh',
'ssh-relay.sh',
'build.sh',
'output-normalization.sh',
'selfref-gc.sh',
'db-migration.sh',
'bash-profile.sh',
'pass-as-file.sh',
'suggestions.sh',
'store-ping.sh',
'flakes/show.sh',
'path-from-hash-part.sh',
'read-only-store.sh',
'nested-sandboxing.sh',
'test-libstoreconsumer.sh',
'extra-sandbox-profile.sh',
'regression-484.sh',
'redirected-filter-source.sh',
]
# Plugin tests require shared libraries support.
if get_option('default_library') != 'static'
functional_tests_scripts += ['plugins.sh']
endif
if get_option('default_library') != 'static' and get_option('enable-contrib-plugins')
functional_tests_scripts += [
'mtls-substituter-ssl-client-cert.sh'
]
endif
# TODO(Qyriad): this will hopefully be able to be removed when we remove the autoconf+Make
# buildsystem. See the comments at the top of setup-functional-tests.py for why this is here.
meson.add_install_script(
python,
meson.project_source_root() / 'meson/setup-functional-tests.py',
)
foreach script : functional_tests_scripts
# Turns, e.g., `tests/functional/flakes/show.sh` into a Meson test target called
# `functional-flakes-show`.
name = 'functional-@0@'.format(fs.replace_suffix(script, '')).replace('/', '-')
extra_deps = []
if script == 'plugins.sh'
extra_deps += [
# Set in tests/functional/plugins/meson.build
libplugintest,
libplugintestfail,
]
elif script == 'test-libstoreconsumer.sh'
extra_deps += [
# Set in tests/functional/test-libstoreconsumer/meson.build
libstoreconsumer_tester,
]
endif
test(
name,
python,
args: [
meson.project_source_root() / 'meson/run-test.py',
script,
],
suite : 'installcheck',
env : {
'MESON_BUILD_ROOT': meson.project_build_root(),
},
# some tests take 15+ seconds even on an otherwise idle machine, on a loaded machine
# this can easily drive them to failure. give them more time, 5min rather than 30sec
timeout : 300,
# Used for target dependency/ordering tracking, not adding compiler flags or anything.
depends : extra_deps,
)
endforeach
subdir('repl_characterization')