Unverified Commit 4085f24e authored by Philip Taron's avatar Philip Taron
Browse files

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
parent f08c835b
Loading
Loading
Loading
Loading
+52 −0
Original line number Diff line number Diff line
@@ -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;