# # Test function, loops, conditionals and some basic elements # logmsg "Comments in odd places don't cause problems" for i in 1 2 # Comment on same line as command # Comment inside loop for j in a b # Double loop echo $i$j end; end logmsg Escaped newlines echo foo\ bar echo foo\ bar echo "foo\ bar" echo 'foo\ bar' for i in \ a b c echo $i end logmsg Simple function tests function foo echo >../test/temp/fish_foo.txt $argv end foo hello cat ../test/temp/fish_foo.txt |read foo if test $foo = hello; echo Test 2 pass else echo Test 2 fail end function foo printf 'Test %s' $argv[1]; echo ' pass' end foo 3a for i in Test for continue break and switch builtins problems; switch $i case Test printf "%s " $i case "for" printf "%s " 3b case "c*" echo pass case break continue echo fail case and break echo fail case "*" echo fail end end set -l sta if eval true if eval false set sta fail else set sta pass end else set sta fail end echo Test 4 $sta logmsg "Testing builtin status" function test_builtin_status return 1 end test_builtin_status if [ $status -eq 1 ] set sta pass else set sta fail end echo Test 5 $sta #################### logmsg echo tests echo 'abc\ndef' echo -e 'abc\ndef' echo -e 'abc\zdef' echo -e 'abc\41def' echo -e 'abc\041def' echo -e 'abc\121def' echo -e 'abc\1212def' echo -e 'abc\cdef' # won't output a newline! echo '' echo - echo -h echo -ne '\376' | display_bytes echo -e Catch your breath echo -e 'abc\x21def' echo -e 'abc\x211def' logmsg 'Comments allowed in between lines (#1987)' echo before comment \ # comment after comment logmsg 'Backslashes are part of comments and do not join lines (#1255)' # This should execute false, not echo it echo -n # comment\ false function always_fails if true return 1 end end logmsg 'Verify $argv set correctly in sourced scripts (#139)' echo 'echo "source argv {$argv}"' | source echo 'echo "source argv {$argv}"' | source - echo 'echo "source argv {$argv}"' | source - abc echo 'echo "source argv {$argv}"' | source - abc def always_fails echo $status