···
assertion = "grep '^#!/usr/bin/builtin' $out/bin/test > /dev/null";
+
name = "read-only-script";
+
system = stdenv.buildPlatform.system;
+
builder = "${stdenv.__bootPackages.stdenv.__bootPackages.bashNonInteractive}/bin/bash";
+
stdenv.__bootPackages.stdenv.__bootPackages.coreutils
+
. ${../../stdenv/generic/setup.sh}
+
. ${../../build-support/setup-hooks/patch-shebangs.sh}
+
echo "#!/bin/bash" > $out/bin/test
+
echo "echo -n hello" >> $out/bin/test
+
chmod 555 $out/bin/test
+
patchShebangs $out/bin/test
+
assertion = "grep '^#!${stdenv.shell}' $out/bin/test > /dev/null";
+
name = "preserves-read-only";
+
system = stdenv.buildPlatform.system;
+
builder = "${stdenv.__bootPackages.stdenv.__bootPackages.bashNonInteractive}/bin/bash";
+
stdenv.__bootPackages.stdenv.__bootPackages.coreutils
+
. ${../../stdenv/generic/setup.sh}
+
. ${../../build-support/setup-hooks/patch-shebangs.sh}
+
echo "#!/bin/bash" > $out/bin/test
+
echo "echo -n hello" >> $out/bin/test
+
chmod 555 $out/bin/test
+
original_perms=$(stat -c %a $out/bin/test)
+
patchShebangs $out/bin/test
+
new_perms=$(stat -c %a $out/bin/test)
+
if ! [ "$original_perms" = "$new_perms" ]; then
+
echo "Permissions changed from $original_perms to $new_perms"
+
assertion = "grep '^#!${stdenv.shell}' $out/bin/test > /dev/null";
+
# Preserve times, see: https://github.com/NixOS/nixpkgs/pull/33281
+
name = "preserves-timestamp";
+
system = stdenv.buildPlatform.system;
+
builder = "${stdenv.__bootPackages.stdenv.__bootPackages.bashNonInteractive}/bin/bash";
+
stdenv.__bootPackages.stdenv.__bootPackages.coreutils
+
. ${../../stdenv/generic/setup.sh}
+
. ${../../build-support/setup-hooks/patch-shebangs.sh}
+
echo "#!/bin/bash" > $out/bin/test
+
echo "echo -n hello" >> $out/bin/test
+
# Set a specific timestamp (2000-01-01 00:00:00)
+
touch -t 200001010000 $out/bin/test
+
original_timestamp=$(stat -c %Y $out/bin/test)
+
patchShebangs $out/bin/test
+
new_timestamp=$(stat -c %Y $out/bin/test)
+
if ! [ "$original_timestamp" = "$new_timestamp" ]; then
+
echo "Timestamp changed from $original_timestamp to $new_timestamp"
+
assertion = "grep '^#!${stdenv.shell}' $out/bin/test > /dev/null";
···