lib.makeScope: add tests for callPackage overriding

Test that:
- makeScope provides a default callPackage
- the scope function can override callPackage
- the override persists through overrideScope
This commit is contained in:
Philip Taron
2026-03-19 14:11:11 -07:00
parent f08c835bf9
commit 4085f24e25
+52
View File
@@ -4789,6 +4789,58 @@ runTests {
};
};
# Check that makeScope provides a default callPackage
testMakeScopeDefaultCallPackage =
let
scope = lib.makeScope lib.callPackageWith (self: {
foo = self.callPackage ({ }: "foo-value") { };
});
in
{
expr = scope.foo;
expected = "foo-value";
};
# Check that callPackage can be overridden by the scope function
testMakeScopeOverrideCallPackage =
let
customCallPackage =
_self: fn: args:
(fn args) + "-custom";
scope = lib.makeScope lib.callPackageWith (self: {
callPackage = customCallPackage self;
foo = self.callPackage ({ }: "foo-value") { };
});
in
{
expr = scope.foo;
expected = "foo-value-custom";
};
# Check that overriding callPackage persists through overrideScope
testMakeScopeOverrideCallPackagePersistsThroughOverrideScope =
let
customCallPackage =
_self: fn: args:
(fn args) + "-custom";
scope = lib.makeScope lib.callPackageWith (self: {
callPackage = customCallPackage self;
foo = self.callPackage ({ }: "foo-value") { };
});
overridden = scope.overrideScope (
_final: _prev: {
bar = scope.callPackage ({ }: "bar-value") { };
}
);
in
{
expr = { inherit (overridden) foo bar; };
expected = {
foo = "foo-value-custom";
bar = "bar-value-custom";
};
};
testFilesystemResolveDefaultNixFile1 = {
expr = lib.filesystem.resolveDefaultNix ./foo.nix;
expected = ./foo.nix;