Unverified Commit e55ee23b authored by Silvan Mosberger's avatar Silvan Mosberger Committed by GitHub
Browse files

Merge pull request #260971 from Gerg-L/getExe

lib.getExe': check arguments
parents 5d1e7ab8 d2161d06
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -162,5 +162,12 @@ rec {
       getExe' pkgs.imagemagick "convert"
       => "/nix/store/5rs48jamq7k6sal98ymj9l4k2bnwq515-imagemagick-7.1.1-15/bin/convert"
  */
  getExe' = x: y: "${lib.getBin x}/bin/${y}";
  getExe' = x: y:
    assert lib.assertMsg (lib.isDerivation x)
      "lib.meta.getExe': The first argument is of type ${builtins.typeOf x}, but it should be a derivation instead.";
    assert lib.assertMsg (lib.isString y)
     "lib.meta.getExe': The second argument is of type ${builtins.typeOf y}, but it should be a string instead.";
    assert lib.assertMsg (builtins.length (lib.splitString "/" y) == 1)
     "lib.meta.getExe': The second argument \"${y}\" is a nested path with a \"/\" character, but it should just be the name of the executable instead.";
    "${lib.getBin x}/bin/${y}";
}
+28 −0
Original line number Diff line number Diff line
@@ -1906,4 +1906,32 @@ runTests {
    expr = (with types; either int (listOf (either bool str))).description;
    expected = "signed integer or list of (boolean or string)";
  };

# Meta
  testGetExe'Output = {
    expr = getExe' {
      type = "derivation";
      out = "somelonghash";
      bin = "somelonghash";
    } "executable";
    expected = "somelonghash/bin/executable";
  };

  testGetExeOutput = {
    expr = getExe {
      type = "derivation";
      out = "somelonghash";
      bin = "somelonghash";
      meta.mainProgram = "mainProgram";
    };
    expected = "somelonghash/bin/mainProgram";
  };

  testGetExe'FailureFirstArg = testingThrow (
    getExe' "not a derivation" "executable"
  );

  testGetExe'FailureSecondArg = testingThrow (
    getExe' { type = "derivation"; } "dir/executable"
  );
}