mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-28 22:03:12 +00:00
8bf8b10f68
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
80 lines
1.6 KiB
Fish
80 lines
1.6 KiB
Fish
#RUN: %fish %s | %filter-ctrlseqs
|
|
|
|
echo $(echo 1\n2)
|
|
# CHECK: 1 2
|
|
|
|
# Command substitution inside double quotes strips trailing newline.
|
|
echo "a$(echo b)c"
|
|
# CHECK: abc
|
|
|
|
# Nesting
|
|
echo "$(echo "$(echo a)")"
|
|
# CHECK: a
|
|
echo "$(echo $(echo b))"
|
|
# CHECK: b
|
|
|
|
echo "$(echo multiple).$(echo command).$(echo substitutions)"
|
|
# CHECK: multiple.command.substitutions
|
|
|
|
test -n "$()" || echo "empty list is interpolated to empty string"
|
|
# CHECK: empty list is interpolated to empty string
|
|
|
|
# Variables in command substitution output are not expanded.
|
|
echo "$(echo \~ \$HOME)"
|
|
# CHECK: ~ $HOME
|
|
|
|
echo "$(printf %s 'quoted command substitution multiline output
|
|
line 2
|
|
line 3
|
|
')"
|
|
# CHECK: quoted command substitution multiline output
|
|
# CHECK: line 2
|
|
# CHECK: line 3
|
|
|
|
echo trim any newlines "$(echo \n\n\n)" after cmdsub
|
|
#CHECK: trim any newlines after cmdsub
|
|
|
|
echo i{1, (echo 2), "$(echo 3)"}
|
|
# CHECK: i1 i2 i3
|
|
|
|
echo "$(echo index\nrange\nexpansion)[2]"
|
|
#CHECK: range
|
|
|
|
echo "$(echo '"')"
|
|
#CHECK: "
|
|
|
|
echo "$(echo $(echo 1) ())"
|
|
#CHECK: 1
|
|
|
|
echo "$(echo 1))"
|
|
# CHECK: 1)
|
|
|
|
echo "($(echo 1))"
|
|
# CHECK: (1)
|
|
|
|
echo "$(echo 1) ( $(echo 2)"
|
|
# CHECK: 1 ( 2
|
|
|
|
echo "$(echo A)B$(echo C)D"(echo E)
|
|
# CHECK: ABCDE
|
|
|
|
echo "($(echo A)B$(echo C))"
|
|
# CHECK: (ABC)
|
|
|
|
echo "quoted1""quoted2"(echo unquoted3)"$(echo quoted4)_$(echo quoted5)"
|
|
# CHECK: quoted1quoted2unquoted3quoted4_quoted5
|
|
|
|
var=a echo "$var$(echo b)"
|
|
# CHECK: ab
|
|
|
|
# Make sure we don't swallow an escaped dollar.
|
|
echo \$(echo 1)
|
|
# CHECK: $1
|
|
echo "\$(echo 1)"
|
|
# CHECK: $(echo 1)
|
|
echo "\$$(echo 1)"
|
|
# CHECK: $1
|
|
|
|
# Make sure we don't error on an escaped $@ inside a quoted cmdsub.
|
|
echo "$(echo '$@')"
|
|
# CHECK: $@
|