From fc93a905634029d1c8cf87b6ee0f3f3b2beb377d Mon Sep 17 00:00:00 2001 From: Philip Taron Date: Mon, 16 Feb 2026 09:07:50 -0800 Subject: [PATCH] tests.buildenv: test overrideAttrs Verify that overrideAttrs on a buildEnv result: - Can modify passthru attributes - Preserves the derivation name - Produces a different derivation when a build-affecting attribute (postBuild) is changed --- pkgs/test/buildenv.nix | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/pkgs/test/buildenv.nix b/pkgs/test/buildenv.nix index cbbe605748d9..af7a64ca2ca8 100644 --- a/pkgs/test/buildenv.nix +++ b/pkgs/test/buildenv.nix @@ -82,7 +82,43 @@ let }; }; - tests = tests-name // tests-passthru-paths // tests-finalAttrs; + tests-overrideAttrs = + let + base = buildEnv { + name = "test-env"; + paths = [ pkgs.hello ]; + passthru.custom = "original"; + }; + overridden = base.overrideAttrs ( + finalAttrs: prev: { + passthru = prev.passthru // { + custom = "modified"; + }; + } + ); + in + { + testOverrideAttrsChangesPassthru = { + expr = overridden.custom; + expected = "modified"; + }; + + testOverrideAttrsPreservesName = { + expr = overridden.name; + expected = "test-env"; + }; + + testOverrideAttrsAffectsDrv = { + expr = + let + withPostBuild = base.overrideAttrs { postBuild = "echo overridden"; }; + in + base.drvPath != withPostBuild.drvPath; + expected = true; + }; + }; + + tests = tests-name // tests-passthru-paths // tests-finalAttrs // tests-overrideAttrs; in stdenvNoCC.mkDerivation (finalAttrs: {