mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-30 22:58:46 +00:00
15c50703ce
As mentioned in #2900, something like ```fish test -n "$var"; and set -l foo $var ``` is sufficiently idiomatic that it should be allowable. Also fixes some additional weirdness with semicolons.
136 lines
1.7 KiB
Fish
136 lines
1.7 KiB
Fish
set -l indent ../test/root/bin/fish_indent
|
|
|
|
echo Test1
|
|
echo -n '
|
|
begin
|
|
echo hi
|
|
|
|
|
|
end | cat | cat | begin ; echo hi ; end | begin ; begin ; echo hi ; end ; end arg
|
|
' | $indent
|
|
|
|
echo \nTest2
|
|
echo -n '
|
|
switch aloha
|
|
|
|
case alpha
|
|
echo sup
|
|
|
|
case beta gamma
|
|
echo hi
|
|
|
|
end
|
|
' | $indent
|
|
|
|
echo \nTest3
|
|
echo -n '
|
|
function hello_world
|
|
|
|
'begin'
|
|
echo hi
|
|
end | cat
|
|
|
|
echo sup; echo sup
|
|
echo hello;
|
|
|
|
echo hello
|
|
end
|
|
' | $indent
|
|
|
|
echo \nTest4
|
|
echo -n '
|
|
echo alpha #comment1
|
|
#comment2
|
|
|
|
#comment3
|
|
for i in abc #comment1
|
|
#comment2
|
|
echo hi
|
|
end
|
|
|
|
switch foo #abc
|
|
# bar
|
|
case bar
|
|
echo baz\
|
|
qqq
|
|
case "*"
|
|
echo sup
|
|
end' | $indent
|
|
|
|
echo \nTest5
|
|
echo -n '
|
|
if true
|
|
else if false
|
|
echo alpha
|
|
switch beta
|
|
case gamma
|
|
echo delta
|
|
end
|
|
end
|
|
' | $indent -i
|
|
|
|
echo \nTest6
|
|
# Test errors
|
|
echo -n '
|
|
begin
|
|
echo hi
|
|
else
|
|
echo bye
|
|
end; echo alpha "
|
|
' | $indent
|
|
|
|
echo \nTest7
|
|
# issue 1665
|
|
echo -n '
|
|
if begin ; false; end; echo hi ; end
|
|
while begin ; false; end; echo hi ; end
|
|
' | $indent
|
|
|
|
echo \nTest redir formatting
|
|
# issue 2899
|
|
echo -n '
|
|
echo < stdin >>appended yes 2>&1 no > stdout maybe 2>& 4 | cat 2>| cat
|
|
' | $indent
|
|
|
|
echo \nTest normalization of keywords
|
|
# issue 2921
|
|
echo -n '
|
|
i\
|
|
f true
|
|
echo yes
|
|
en\
|
|
d
|
|
|
|
"whil\
|
|
e" true
|
|
"builtin" yes
|
|
en"d"
|
|
|
|
alpha | \
|
|
beta
|
|
|
|
gamma | \
|
|
# comment3
|
|
delta
|
|
|
|
if true
|
|
echo abc
|
|
end
|
|
|
|
if false # comment4
|
|
and true && false
|
|
echo abc;end
|
|
|
|
echo hi |
|
|
|
|
echo bye
|
|
' | $indent
|
|
|
|
echo 'a;;;;;;' | $indent
|
|
echo 'echo; echo' | $indent
|
|
|
|
# Check that we keep semicolons for and and or, but only on the same line.
|
|
printf '%s\n' "a; and b" | $indent
|
|
printf '%s\n' "a;" "and b" | $indent
|
|
printf '%s\n' "a" "; and b" | $indent
|
|
printf '%s\n' "a; b" | $indent
|