nixos/testing: fix testScript eval for functions without ...

The nspawn container support (23f1e6370d) added a `containers`
argument to the testScript caller. This breaks tests whose testScript
uses strict pattern matching without ellipsis, e.g. `{ nodes }:`,
since Nix rejects unexpected arguments.

Use `builtins.intersectAttrs` to only pass arguments the function
actually expects, making the caller forward-compatible with future
argument additions.

Fixes: 23f1e6370d ("nixos/test-driver: add support for nspawn containers")
This commit is contained in:
Jörg Thalheim
2026-03-21 16:05:53 +01:00
parent d2e37478f1
commit 00f5ae0602
+7
View File
@@ -14,6 +14,13 @@ in
options = {
testScript = mkOption {
type = either str (functionTo str);
apply =
v:
if lib.isFunction v then
# Only pass args the testScript function expects.
args: v (builtins.intersectAttrs (lib.functionArgs v) args)
else
v;
description = ''
A series of python declarations and statements that you write to perform
the test.