summary refs log tree commit diff
path: root/pkgs/test
diff options
context:
space:
mode:
authorAndrew Childs <lorne@cons.org.nz>2021-02-09 12:50:20 +0900
committerAndrew Childs <lorne@cons.org.nz>2021-02-09 13:07:49 +0900
commit93a7e96c87ebb206dd18fb81376be573acb74828 (patch)
tree7aa9abaa5eacc47d88aa978548cf03392529f1a3 /pkgs/test
parentca156a66b75999153d746f57a11a19222fd5cdfb (diff)
downloadnixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar.gz
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar.bz2
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar.lz
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar.xz
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.tar.zst
nixpkgs-93a7e96c87ebb206dd18fb81376be573acb74828.zip
tests.patch-shebangs: add case for ignoring store paths
Diffstat (limited to 'pkgs/test')
-rw-r--r--pkgs/test/patch-shebangs/default.nix76
1 files changed, 60 insertions, 16 deletions
diff --git a/pkgs/test/patch-shebangs/default.nix b/pkgs/test/patch-shebangs/default.nix
index 5e1d859c138..5c49787eee3 100644
--- a/pkgs/test/patch-shebangs/default.nix
+++ b/pkgs/test/patch-shebangs/default.nix
@@ -1,26 +1,70 @@
 { lib, stdenv, runCommand }:
 
 let
-  bad-shebang = stdenv.mkDerivation {
-    name         = "bad-shebang";
-    dontUnpack = true;
-    installPhase = ''
-      mkdir -p $out/bin
-      echo "#!/bin/sh" > $out/bin/test
-      echo "echo -n hello" >> $out/bin/test
-      chmod +x $out/bin/test
-    '';
+  tests = {
+    bad-shebang = stdenv.mkDerivation {
+      name         = "bad-shebang";
+      dontUnpack = true;
+      installPhase = ''
+        mkdir -p $out/bin
+        echo "#!/bin/sh" > $out/bin/test
+        echo "echo -n hello" >> $out/bin/test
+        chmod +x $out/bin/test
+      '';
+      passthru = {
+        assertion = "grep -v '^#!/bin/sh' $out/bin/test > /dev/null";
+      };
+    };
+
+    ignores-nix-store = stdenv.mkDerivation {
+      name = "ignores-nix-store";
+      dontUnpack = true;
+      installPhase = ''
+        mkdir -p $out/bin
+        echo "#!$NIX_STORE/path/to/sh" > $out/bin/test
+        echo "echo -n hello" >> $out/bin/test
+        chmod +x $out/bin/test
+      '';
+      passthru = {
+        assertion = "grep \"^#!$NIX_STORE/path/to/sh\" $out/bin/test > /dev/null";
+      };
+    };
   };
 in runCommand "patch-shebangs-test" {
-  passthru = { inherit bad-shebang; };
+  passthru = { inherit (tests) bad-shebang ignores-nix-store; };
   meta.platforms = lib.platforms.all;
 } ''
-  printf "checking whether patchShebangs works properly... ">&2
-  if ! grep -q '^#!/bin/sh' ${bad-shebang}/bin/test; then
-    echo "yes" >&2
-    touch $out
-  else
-    echo "no" >&2
+  validate() {
+    local name=$1
+    local testout=$2
+    local assertion=$3
+
+    echo -n "... $name: " >&2
+
+    local rc=0
+    (out=$testout eval "$assertion") || rc=1
+
+    if [ "$rc" -eq 0 ]; then
+      echo "yes" >&2
+    else
+      echo "no" >&2
+    fi
+
+    return "$rc"
+  }
+
+  echo "checking whether patchShebangs works properly... ">&2
+
+  fail=
+  ${lib.concatStringsSep "\n" (lib.mapAttrsToList (_: test: ''
+    validate "${test.name}" "${test}" ${lib.escapeShellArg test.assertion} || fail=1
+  '') tests)}
+
+  if [ "$fail" ]; then
+    echo "failed"
     exit 1
+  else
+    echo "succeeded"
+    touch $out
   fi
 ''