tests.overriding: buildPythonPackage: test stdenv customisation via buildPythonPackage.override (#455462)

This commit is contained in:
Matt Sturgeon
2025-12-10 21:46:05 +00:00
committed by GitHub
+45 -10
View File
@@ -390,7 +390,7 @@ let
tests-python =
let
python-package-stub = pkgs.python3Packages.callPackage (
package-stub = pkgs.python3Packages.callPackage (
{
buildPythonPackage,
emptyDirectory,
@@ -402,6 +402,23 @@ let
src = emptyDirectory;
}
) { };
package-stub-gcc = package-stub.override (previousArgs: {
buildPythonPackage = previousArgs.buildPythonPackage.override {
stdenv = pkgs.gccStdenv;
};
});
package-stub-clang = package-stub-gcc.override (previousArgs: {
buildPythonPackage = previousArgs.buildPythonPackage.override {
stdenv = pkgs.clangStdenv;
};
});
package-stub-libcxx = package-stub-clang.override (previousArgs: {
buildPythonPackage = previousArgs.buildPythonPackage.override {
stdenv = pkgs.libcxxStdenv;
};
});
applyOverridePythonAttrs =
p:
p.overridePythonAttrs (previousAttrs: {
@@ -417,18 +434,37 @@ let
);
in
{
buildPythonPackage-override-gccStdenv = {
expr = package-stub-gcc.stdenv;
expected = pkgs.gccStdenv;
};
buildPythonPackage-override-clangStdenv = {
expr = package-stub-clang.stdenv;
expected = pkgs.clangStdenv;
};
buildPythonPackage-override-libcxxStdenv = {
expr = package-stub-libcxx.stdenv;
expected = pkgs.libcxxStdenv;
};
overridePythonAttrs-stdenv-deprecated = {
expr =
(package-stub.overridePythonAttrs (_: {
stdenv = pkgs.clangStdenv;
})).stdenv;
expected = pkgs.clangStdenv;
};
overridePythonAttrs = {
expr = (applyOverridePythonAttrs python-package-stub).overridePythonAttrsFlag;
expr = (applyOverridePythonAttrs package-stub).overridePythonAttrsFlag;
expected = 1;
};
overridePythonAttrs-nested = {
expr =
(applyOverridePythonAttrs (applyOverridePythonAttrs python-package-stub)).overridePythonAttrsFlag;
expr = (applyOverridePythonAttrs (applyOverridePythonAttrs package-stub)).overridePythonAttrsFlag;
expected = 2;
};
overrideAttrs-overridePythonAttrs-test-overrideAttrs = {
expr = {
inherit (applyOverridePythonAttrs (overrideAttrsFooBar python-package-stub))
inherit (applyOverridePythonAttrs (overrideAttrsFooBar package-stub))
FOO
BAR
;
@@ -439,16 +475,15 @@ let
};
};
overrideAttrs-overridePythonAttrs-test-overridePythonAttrs = {
expr =
(applyOverridePythonAttrs (overrideAttrsFooBar python-package-stub)) ? overridePythonAttrsFlag;
expr = (applyOverridePythonAttrs (overrideAttrsFooBar package-stub)) ? overridePythonAttrsFlag;
expected = true;
};
overrideAttrs-overridePythonAttrs-test-commutation = {
expr = overrideAttrsFooBar (applyOverridePythonAttrs python-package-stub);
expected = applyOverridePythonAttrs (overrideAttrsFooBar python-package-stub);
expr = overrideAttrsFooBar (applyOverridePythonAttrs package-stub);
expected = applyOverridePythonAttrs (overrideAttrsFooBar package-stub);
};
chain-of-overrides = rec {
expr = lib.pipe python-package-stub [
expr = lib.pipe package-stub [
(p: p.overrideAttrs { inherit (expected) a; })
(p: p.overridePythonAttrs { inherit (expected) b; })
(p: p.overrideAttrs { inherit (expected) c; })