diff --git a/tests/checks/noshebang.fish b/tests/checks/noshebang.fish index c392b2d1d..d79c8a971 100644 --- a/tests/checks/noshebang.fish +++ b/tests/checks/noshebang.fish @@ -1,11 +1,11 @@ -# RUN: %fish %s +# RUN: %fish -C'set -g fish (builtin realpath %fish)' %s # Test for shebangless scripts - see 7802. set testdir (mktemp -d) cd $testdir -touch file +$fish -c 'true > file' chmod a+x file function runfile @@ -23,21 +23,21 @@ function runfile end # Empty executable files are 'true'. -true >file -sleep 0.1 runfile #CHECK: 0 #CHECK: 0 # Files without NUL are 'true' as well. -echo -e -n '#COMMENT\n#COMMENT' >file +# NOTE: We redirect in a new process because the file must be *closed* +# before it can be run. On some systems that doesn't happen quickly enough. +$fish -c "echo -e -n '#COMMENT\n#COMMENT' >file" +sleep 0.1 runfile #CHECK: 0 #CHECK: 0 # Never implicitly pass files ending with .fish to /bin/sh. -true >file.fish -sleep 0.1 +touch file.fish chmod a+x file.fish set -g fish_use_posix_spawn 0 ./file.fish @@ -59,14 +59,14 @@ rm file.fish # On to NUL bytes. # The heuristic is that there must be a line containing a lowercase letter before the first NUL byte. -echo -n -e 'true\n\x00' >file +$fish -c "echo -n -e 'true\n\x00' >file" sleep 0.1 runfile #CHECK: 0 #CHECK: 0 # Doesn't meet our heuristic as there is no newline. -echo -n -e 'true\x00' >file +$fish -c "echo -n -e 'true\x00' >file" sleep 0.1 runfile #CHECK: 126 @@ -80,7 +80,7 @@ runfile #CHECKERR: {{.*}} # Doesn't meet our heuristic as there is no lowercase before newline. -echo -n -e 'NOPE\n\x00' >file +$fish -c "echo -n -e 'NOPE\n\x00' >file" sleep 0.1 runfile #CHECK: 126