|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src |
|
|
print_ver_ env |
|
|
print_ver_ printf |
|
|
|
|
|
require_perl_ |
|
|
|
|
|
|
|
|
dir="$abs_top_builddir/src" |
|
|
|
|
|
cat <<EOF > shebang || framework_failure_ |
|
|
#!$SHELL |
|
|
EOF |
|
|
cat <<\EOF >> shebang || framework_failure_ |
|
|
|
|
|
|
|
|
script="$1"; shift |
|
|
shebang=$(sed -n 's/^#!//p;q' < "$script") |
|
|
interp=$(printf '%s' "$shebang" | cut -d' ' -f1) |
|
|
rest=$(printf '%s' "$shebang" | cut -s -d' ' -f2-) |
|
|
test "$rest" && exec "$interp" "$rest" "$script" "$@" |
|
|
exec "$interp" "$script" "$@" |
|
|
EOF |
|
|
chmod a+x shebang || framework_failure_ |
|
|
|
|
|
|
|
|
printf "#!$dir/env sh\necho hello\n" > env_test || framework_failure_ |
|
|
chmod a+x env_test || framework_failure_ |
|
|
|
|
|
|
|
|
|
|
|
./shebang ./env_test || skip_ "Error running env_test script" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf "#!$dir/env -S $dir/printf "'x%%sx\\n A B\n' > env1 || framework_failure_ |
|
|
chmod a+x env1 || framework_failure_ |
|
|
cat<<\EOF>exp1 || framework_failure_ |
|
|
xAx |
|
|
xBx |
|
|
x./env1x |
|
|
xCx |
|
|
xDx |
|
|
xE Fx |
|
|
EOF |
|
|
./shebang ./env1 C D "E F" > out1 || fail=1 |
|
|
compare exp1 out1 || fail=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf "#!$dir/env -S $dir/printf "'x%%sx\\n "A B"\n' > env2 || |
|
|
framework_failure_ |
|
|
chmod a+x env2 || framework_failure_ |
|
|
cat<<\EOF>exp2 || framework_failure_ |
|
|
xA Bx |
|
|
x./env2x |
|
|
EOF |
|
|
./shebang ./env2 > out2 || fail=1 |
|
|
compare exp2 out2 || fail=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf "#!$dir/env -S$dir/printf"'\\_x%%sx\\n\\_Y\n' > env3 || |
|
|
framework_failure_ |
|
|
chmod a+x env3 || framework_failure_ |
|
|
cat<<\EOF>exp3 || framework_failure_ |
|
|
xYx |
|
|
x./env3x |
|
|
xWx |
|
|
EOF |
|
|
./shebang ./env3 W > out3 || fail=1 |
|
|
compare exp3 out3 || fail=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
printf "#!$dir/env -S$dir/printf"' x%%sx\\n A#B #C D\n' > env4 \ |
|
|
|| framework_failure_ |
|
|
chmod a+x env4 || framework_failure_ |
|
|
cat<<\EOF>exp4 || framework_failure_ |
|
|
xA |
|
|
x./env4x |
|
|
xZx |
|
|
EOF |
|
|
./shebang ./env4 Z > out4 || fail=1 |
|
|
compare exp4 out4 || fail=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ printf "#!$dir/env -S $PERL -w -T\n" ; |
|
|
printf 'print "hello\\n";\n' ; } > env5 || framework_failure_ |
|
|
chmod a+x env5 || framework_failure_ |
|
|
cat<<\EOF>exp5 || framework_failure_ |
|
|
hello |
|
|
EOF |
|
|
./shebang ./env5 > out5 || fail=1 |
|
|
compare exp5 out5 || fail=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ printf "#!$dir/env -S " ; |
|
|
printf "$PERL -mFile::Basename=basename -e " ; |
|
|
printf '"print basename(\\$ARGV[0]);"\n' ; } > env6 || framework_failure_ |
|
|
chmod a+x env6 || framework_failure_ |
|
|
|
|
|
printf "env6" > exp6 || framework_failure_ |
|
|
./shebang ./env6 > out6 || fail=1 |
|
|
compare exp6 out6 || fail=1 |
|
|
|
|
|
|
|
|
Exit $fail |
|
|
|