fish-shell/tests/indent.in
Fabian Homborg 15c50703ce fish_indent: Allow semicolons for and and or
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.
2019-05-05 12:51:49 +02:00

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