# vim: set filetype=fish: # ensure that builtins that produce no output can still truncate files # (bug PCA almost reintroduced!) echo "Testing that builtins can truncate files" echo abc > ../test/temp/file_truncation_test.txt cat ../test/temp/file_truncation_test.txt echo -n > ../test/temp/file_truncation_test.txt cat ../test/temp/file_truncation_test.txt # Test events. # This pattern caused a crash; github issue #449 set -g var before function test1 --on-event test set -g var $var:test1 functions -e test2 end function test2 --on-event test # this should not run, as test2 gets removed before it has a chance of running set -g var $var:test2a end emit test echo $var function test3 --on-event test3 echo received event test3 with args: $argv end emit test3 foo bar # test empty argument emit echo "Test break and continue" # This should output Ping once for i in a b c if not contains $i c ; continue ; end echo Ping end # This should output Pong not at all for i in a b c if not contains $i c ; break ; end echo Pong end # This should output Foop three times, and Boop not at all set i a a a while contains $i a set -e i[-1] echo Foop continue echo Boop end # This should output Doop once set i a a a while contains $i a set -e i[-1] echo Doop break echo Darp end # Test implicit cd. This should do nothing. ./ # Test special for loop expansion # Here we the name of the variable is derived from another variable echo "Testing for loop" set var1 var2 for $var1 in 1 2 3 echo -n $var2 end echo # Test status -n eval 'status -n status -n status -n' # Test support for unbalanced blocks function try_unbalanced_block ../test/root/bin/fish -c "echo $argv | source " 2>&1 | grep "Missing end" 1>&2 end try_unbalanced_block 'begin' try_unbalanced_block 'while true' try_unbalanced_block 'for x in 1 2 3' try_unbalanced_block 'switch abc' try_unbalanced_block 'function anything' try_unbalanced_block 'if false' # Ensure that quoted keywords work 'while' false; end "while" false; end "wh"'ile' false; "e"nd # BOM checking (see #1518). But only in UTF8 locales. if string match -qi '*utf-8*' -- (locale) echo \uFEFF"echo bom_test" | source else echo "echo bom_test" | source end # Comments abutting text (#953) echo not#a#comment echo is # a # comment