fish-shell/tests/test1.out
Fabian Homborg 967c1d51ee Only do brace expansion if they contain a variable or ","
Brace expansion with single words in it is quite useless - `HEAD@{0}`
expanding to `HEAD@0` breaks git.

So we complicate the rule slightly - if there is no variable expansion
or "," inside of braces, they are just treated as literal braces.

Note that this is technically backwards-incompatible, because

    echo foo{0}

will now print `foo{0}` instead of `foo0`. However that's a
technicality because the braces were literally useless in that case.

Our tests needed to be adjusted, but that's because they are meant to
exercise this in weird ways.

I don't believe this will break any code in practice.

Fixes #5869.
2019-05-19 18:23:27 +02:00

145 lines
2.7 KiB
Text

####################
# Comments in odd places don't cause problems
1a
1b
2a
2b
####################
# Brace expansion
x-{1}
x-1 x-2
foo-1 foo-23 foo-24
foo-{}
foo-{} foo-{}
foo-{a} foo-{}
foo-{}
banana
foo- foo- foo- foo-
foo- foo-, foo-
####################
# Escaped newlines
foo bar
foobar
foobar
foo\
bar
a
b
c
####################
# Simple function tests
Test 2 pass
Test 3a pass
Test 3b pass
Test 4 pass
####################
# Testing builtin status
Test 5 pass
####################
# Verify that we can turn stderr into stdout and then pipe it
errput
output
errput
output
####################
# Test that trailing ^ doesn't trigger redirection, see #1873
caret_no_redirect 12345^
####################
# Verify that we can pipe something other than stdout
is_stdout
####################
# echo tests
abc\ndef
abc
def
abc\zdef
abc!def
abc!def
abcQdef
abcQ2def
abc
-
-h
0000000 376
0000001
Catch your breath
abc!def
abc!1def
####################
# Verify that pipes don't conflict with fd redirections
pipe 3
pipe 4
pipe 5
pipe 6
pipe 7
pipe 8
pipe 9
pipe 10
pipe 11
pipe 12
####################
# Make sure while loops don't run forever with no-exec (#1543)
Checking for infinite loops in no-execute
####################
# For loops with read-only vars is an error (#4342)
####################
# That goes for non-electric ones as well (#5548)
####################
# For loop control vars available outside the for block
$loop_var: set in local scope, unexported, with 1 elements
$loop_var[1]: length=1 value=|c|
$loop_var: not set in global scope
$loop_var: not set in universal scope
$loop_var: set in local scope, unexported, with 1 elements
$loop_var[1]: length=1 value=|b|
$loop_var: set in global scope, unexported, with 1 elements
$loop_var[1]: length=10 value=|global_val|
$loop_var: not set in universal scope
$loop_var: not set in local scope
$loop_var: set in global scope, unexported, with 1 elements
$loop_var[1]: length=10 value=|global_val|
$loop_var: not set in universal scope
$loop_var: set in local scope, unexported, with 1 elements
$loop_var[1]: length=2 value=|cc|
$loop_var: set in global scope, unexported, with 1 elements
$loop_var[1]: length=10 value=|global_val|
$loop_var: not set in universal scope
$loop_var: not set in local scope
$loop_var: set in global scope, unexported, with 1 elements
$loop_var[1]: length=10 value=|global_val|
$loop_var: not set in universal scope
####################
# Comments allowed in between lines (#1987)
before comment after comment
####################
# Backslashes are part of comments and do not join lines (#1255)
####################
# Verify $argv set correctly in sourced scripts (#139)
source argv {}
source argv {}
source argv {abc}
source argv {abc def}
1