fish-shell/tests/checks/variable-assignment.fish
Johannes Altmanninger 05ddda9155 use variable assignments on commandline in completions
Fixes #6507

To do: If a variable assignment uses a command substitution that errors,
the error is printed, but without a proper location.
2020-01-17 14:53:35 +01:00

98 lines
1.6 KiB
Fish

# RUN: %fish %s
# erase all lowercase variables to make sure they don't break our tests
for varname in (set -xn | string match -r '^[a-z].*')
while set -q $varname
set -e $varname
end
end
# CHECK: bar
foo=bar echo $foo
# CHECK: nil
set -q foo; or echo nil
# CHECK: lx
foo=bar set -qlx foo; and echo lx
# CHECK: 3
a={1, 2, 3} count $a
# CHECK: 1+2+3
a={1, 2, 3} string join + $a
# CHECK: 1 2 3
a=(echo 1 2 3) echo $a
# CHECK: a a2
a=a b={$a}2 echo $a $b
# CHECK: a
a=a builtin echo $a
# CHECK: 0
a=failing-glob-* count $a
# CHECK: ''
a=b true | echo "'$a'"
if a=b true
# CHECK: ''
echo "'$a'"
end
# CHECK: b
not a=b echo $a
# CHECK: b
a=b not echo $a
# CHECK: b
a=b not builtin echo $a
# CHECK: /usr/bin:/bin
xPATH={/usr,}/bin sh -c 'echo $xPATH'
# CHECK: 2
yPATH=/usr/bin:/bin count $yPATH
# CHECK: b
a=b begin
true | echo $a
end
# CHECK: b
a=b if true
echo $a
end
# CHECK: b
a=b switch x
case x
echo $a
end
complete -c x --erase
complete -c x -xa arg
complete -C' a=b x ' # Mind the leading space.
# CHECK: arg
alias xalias=x
complete -C'a=b xalias '
# CHECK: arg
alias envxalias='a=b x'
complete -C'a=b envxalias '
# CHECK: arg
# Eval invalid grammar to allow fish to parse this file
eval 'a=(echo b)'
# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a (echo b)'.
eval ': | a=b'
# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
eval 'not a=b'
# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
complete -c foo -xa '$a'
a=b complete -C'foo '
#CHECK: b