summary refs log tree commit diff
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2023-10-31 17:29:15 +0100
committerGitHub <noreply@github.com>2023-10-31 17:29:15 +0100
commite55ee23bf6814213acc792933004abbf4a9f0a71 (patch)
tree31d5682774734a6d7b4edf771961ee31e8c1ae24
parent5d1e7ab8f809b51e521559b744cb6ef40468aff3 (diff)
parentd2161d06321770f37fd86bfa15296dd8de0196a0 (diff)
downloadnixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar.gz
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar.bz2
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar.lz
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar.xz
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.tar.zst
nixpkgs-e55ee23bf6814213acc792933004abbf4a9f0a71.zip
Merge pull request #260971 from Gerg-L/getExe
lib.getExe': check arguments
-rw-r--r--lib/meta.nix9
-rw-r--r--lib/tests/misc.nix28
2 files changed, 36 insertions, 1 deletions
diff --git a/lib/meta.nix b/lib/meta.nix
index 44730a71551..2e817c42327 100644
--- a/lib/meta.nix
+++ b/lib/meta.nix
@@ -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}";
 }
diff --git a/lib/tests/misc.nix b/lib/tests/misc.nix
index 2e7fda2b1f8..47853f47278 100644
--- a/lib/tests/misc.nix
+++ b/lib/tests/misc.nix
@@ -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"
+  );
 }