diff options
author | Qyriad <qyriad@qyriad.me> | 2024-04-06 01:05:09 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@lix> | 2024-04-06 01:05:09 +0000 |
commit | 4e11b0d04d0ee8f5b7cb22128066e997c896b069 (patch) | |
tree | 00ac66077f9639a487a3271100ae6d7a0a26cbf2 /tests/functional | |
parent | e9e1b6963c8ee2a0a382487e1346677e77bc1e9e (diff) | |
parent | 07e1ddc23d333c0858959919c309df918dabae17 (diff) |
Merge "meson: add missing tests: ca, dyn-drv, plugins, libstoreconsumer" into main
Diffstat (limited to 'tests/functional')
-rw-r--r-- | tests/functional/meson.build | 47 | ||||
-rw-r--r-- | tests/functional/plugins.sh | 11 | ||||
-rw-r--r-- | tests/functional/plugins/meson.build | 31 | ||||
-rw-r--r-- | tests/functional/test-libstoreconsumer/meson.build | 13 |
4 files changed, 100 insertions, 2 deletions
diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 37278167f..3f4a970a7 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -25,9 +25,37 @@ subdir('ca') # Just configures `dyn-drv/config.nix.in`. Same as above. subdir('dyn-drv') +subdir('plugins') +subdir('test-libstoreconsumer') + functional_tests_scripts = [ 'init.sh', 'test-infra.sh', + 'ca/build.sh', + 'ca/build-cache.sh', + 'ca/concurrent-builds.sh', + 'ca/derivation-json.sh', + 'ca/duplicate-realisation-in-closure.sh', + 'ca/eval-store.sh', + 'ca/gc.sh', + 'ca/import-derivation.sh', + 'ca/new-build-cmd.sh', + 'ca/nix-copy.sh', + 'ca/nix-run.sh', + 'ca/nix-shell.sh', + 'ca/post-hook.sh', + 'ca/recursive.sh', + 'ca/repl.sh', + 'ca/selfref-gc.sh', + 'ca/signatures.sh', + 'ca/substitute.sh', + 'ca/why-depends.sh', + 'dyn-drv/text-hashed-output.sh', + 'dyn-drv/recursive-mod-json.sh', + 'dyn-drv/build-built-drv.sh', + 'dyn-drv/eval-outputOf.sh', + 'dyn-drv/dep-built-drv.sh', + 'dyn-drv/old-daemon-error-hack.sh', 'flakes/flakes.sh', 'flakes/develop.sh', 'flakes/develop-r8854.sh', @@ -152,6 +180,8 @@ functional_tests_scripts = [ 'read-only-store.sh', 'nested-sandboxing.sh', 'debugger.sh', + 'plugins.sh', + 'test-libstoreconsumer.sh', ] # TODO(Qyriad): this will hopefully be able to be removed when we remove the autoconf+Make @@ -165,6 +195,21 @@ 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, @@ -179,6 +224,8 @@ foreach script : functional_tests_scripts # 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 diff --git a/tests/functional/plugins.sh b/tests/functional/plugins.sh index 491b933b7..5934b9b0c 100644 --- a/tests/functional/plugins.sh +++ b/tests/functional/plugins.sh @@ -4,12 +4,19 @@ if [[ $BUILD_SHARED_LIBS != 1 ]]; then skipTest "Plugins are not supported" fi -res=$(nix --option setting-set true --option plugin-files $PWD/plugins/libplugintest.* eval --expr builtins.anotherNull) +# FIXME(Qyriad): this is working around Meson putting `libplugintest.so.p` in the same place +# as `libplugintest.so`, so `libplugintest.*` grabs both. +libext=so +if [[ "$(uname -s)" == Darwin ]]; then + libext=dylib +fi + +res=$(nix --option setting-set true --option plugin-files "$PWD/plugins/libplugintest.$libext" eval --expr builtins.anotherNull) [ "$res"x = "nullx" ] # Plugin load failing due to missing symbols -res=$(nix --option plugin-files $PWD/plugins/libplugintestfail.* eval --expr '1234 + 5' 2>&1) +res=$(nix --option plugin-files "$PWD/plugins/libplugintestfail.$libext" eval --expr '1234 + 5' 2>&1) # We expect this to succeed evaluating echo "$res" | grep 1239 >/dev/null # On Linux, we expect this to print some failure of dlopen. diff --git a/tests/functional/plugins/meson.build b/tests/functional/plugins/meson.build new file mode 100644 index 000000000..7f8547a7f --- /dev/null +++ b/tests/functional/plugins/meson.build @@ -0,0 +1,31 @@ +libplugintest = shared_module( + 'plugintest', + 'plugintest.cc', + dependencies : [ + liblixutil, + liblixstore, + liblixexpr, + liblixfetchers, + ], + build_by_default : false, + link_args : shared_module_link_args, +) + +libplugintestfail_link_args = [] +if is_linux + libplugintestfail_link_args = ['-Wl,-z,now'] +endif + +libplugintestfail = shared_module( + 'plugintestfail', + 'plugintestfail.cc', + dependencies : [ + liblixutil, + liblixstore, + liblixexpr, + liblixfetchers, + ], + cpp_args : ['-DMISSING_REFERENCE'], + link_args : shared_module_link_args + libplugintestfail_link_args, + build_by_default : false, +) diff --git a/tests/functional/test-libstoreconsumer/meson.build b/tests/functional/test-libstoreconsumer/meson.build new file mode 100644 index 000000000..ad96aac12 --- /dev/null +++ b/tests/functional/test-libstoreconsumer/meson.build @@ -0,0 +1,13 @@ +libstoreconsumer_tester = executable( + 'test-libstoreconsumer', + 'main.cc', + dependencies : [ + liblixutil, + liblixstore, + sodium, + editline, + boost, + lowdown, + ], + build_by_default : false, +) |