From 150cd2ae3299c370b83583977059fb5e33212a6d Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Mon, 16 Feb 2026 09:07:01 -0800 Subject: [PATCH] tests.buildenv: test passthru.paths injection buildEnv stashes `paths` into `passthru.paths` (rather than passing it directly as a derivation attribute) to prevent unexpected string context pollution. Verify that: - paths are accessible via passthru.paths - passthru.paths can be overridden with overrideAttrs --- pkgs/test/buildenv.nix | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/pkgs/test/buildenv.nix b/pkgs/test/buildenv.nix index ff025d0370df..9629e3a2ab37 100644 --- a/pkgs/test/buildenv.nix +++ b/pkgs/test/buildenv.nix @@ -38,7 +38,36 @@ let testMissingNameThrows = testingThrow (buildEnv { paths = [ ]; }).drvPath; }; - tests = tests-name; + tests-passthru-paths = { + testPathsInPassthru = { + expr = + let + env = buildEnv { + name = "test-env"; + paths = [ pkgs.hello ]; + }; + in + builtins.length env.paths > 0; + expected = true; + }; + + testPassthruPathsOverridable = { + expr = + let + env = buildEnv { + name = "test-env"; + paths = [ pkgs.hello ]; + }; + overridden = env.overrideAttrs { + passthru.paths = [ pkgs.figlet ]; + }; + in + builtins.length overridden.paths == 1; + expected = true; + }; + }; + + tests = tests-name // tests-passthru-paths; in stdenvNoCC.mkDerivation (finalAttrs: {