aboutsummaryrefslogtreecommitdiff
path: root/tests/functional
diff options
context:
space:
mode:
authorQyriad <qyriad@qyriad.me>2024-04-06 01:05:09 +0000
committerGerrit Code Review <gerrit@lix>2024-04-06 01:05:09 +0000
commit4e11b0d04d0ee8f5b7cb22128066e997c896b069 (patch)
tree00ac66077f9639a487a3271100ae6d7a0a26cbf2 /tests/functional
parente9e1b6963c8ee2a0a382487e1346677e77bc1e9e (diff)
parent07e1ddc23d333c0858959919c309df918dabae17 (diff)
Merge "meson: add missing tests: ca, dyn-drv, plugins, libstoreconsumer" into main
Diffstat (limited to 'tests/functional')
-rw-r--r--tests/functional/meson.build47
-rw-r--r--tests/functional/plugins.sh11
-rw-r--r--tests/functional/plugins/meson.build31
-rw-r--r--tests/functional/test-libstoreconsumer/meson.build13
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,
+)