From dbf1fa96d84f0f0414eac45228b3cb9eb07dfc48 Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Mon, 16 Feb 2026 09:08:08 -0800 Subject: [PATCH] tests.buildenv: test passthru merging buildEnv merges passthru from three sources: `{ inherit paths; } // derivationArgs.passthru // passthru` Verify that: - Auto-injected paths are present in passthru - derivationArgs.passthru attributes are preserved - Direct passthru attributes are preserved - Direct passthru takes precedence over derivationArgs.passthru --- pkgs/test/buildenv.nix | 48 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/pkgs/test/buildenv.nix b/pkgs/test/buildenv.nix index af7a64ca2ca8..35b9d18162f0 100644 --- a/pkgs/test/buildenv.nix +++ b/pkgs/test/buildenv.nix @@ -118,7 +118,53 @@ let }; }; - tests = tests-name // tests-passthru-paths // tests-finalAttrs // tests-overrideAttrs; + tests-passthru-merging = + let + env = buildEnv { + name = "test-env"; + paths = [ pkgs.hello ]; + derivationArgs.passthru.fromDerivationArgs = "a"; + passthru.fromPassthru = "b"; + }; + in + { + testPassthruMergingAutoPathsPresent = { + expr = env ? paths; + expected = true; + }; + + testPassthruMergingDerivationArgs = { + expr = env.fromDerivationArgs; + expected = "a"; + }; + + testPassthruMergingDirectPassthru = { + expr = env.fromPassthru; + expected = "b"; + }; + + # Direct passthru takes precedence over derivationArgs.passthru + testPassthruMergingPrecedence = { + expr = + let + env' = buildEnv { + name = "test-env"; + paths = [ ]; + derivationArgs.passthru.key = "from-derivationArgs"; + passthru.key = "from-passthru"; + }; + in + env'.key; + expected = "from-passthru"; + }; + }; + + tests = + tests-name + // tests-passthru-paths + // tests-finalAttrs + // tests-overrideAttrs + // tests-passthru-merging; in stdenvNoCC.mkDerivation (finalAttrs: {