fish-shell/tests/checks/variable-assignment.fish
Johannes Altmanninger 8bf8b10f68 Extended & human-friendly keys
See the changelog additions for user-visible changes.

Since we enable/disable terminal protocols whenever we pass terminal ownership,
tests can no longer run in parallel on the same terminal.

For the same reason, readline shortcuts in the gdb REPL will not work anymore.
As a remedy, use gdbserver, or lobby for CSI u support in libreadline.

Add sleep to some tests, otherwise they fall (both in CI and locally).

There are two weird failures on FreeBSD remaining, disable them for now
https://github.com/fish-shell/fish-shell/pull/10359/checks?check_run_id=23330096362

Design and implementation borrows heavily from Kakoune.

In future, we should try to implement more of the kitty progressive
enhancements.

Closes #10359
2024-04-02 14:35:16 +02:00

104 lines
1.7 KiB
Fish

# RUN: %fish %s | %filter-ctrlseqs
# 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)'.
# CHECKERR: a=(echo b)
# CHECKERR: ^~~~~~~~~^
eval ': | a=b'
# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
# CHECKERR: : | a=b
# CHECKERR: ^~^
eval 'not a=b'
# CHECKERR: {{.*}}: Unsupported use of '='. In fish, please use 'set a b'.
# CHECKERR: not a=b
# CHECKERR: ^~^
complete -c foo -xa '$a'
a=b complete -C'foo '
#CHECK: b