mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-24 05:14:11 +08:00
81a987c39c
If just one of the range ends is negative, this now forces direction away from it. I.e. if the beginning is negative, we go in reverse. If the end is negative, we go forwards. This fixes cases like $var[2..-1] if $var only has one element.
118 lines
2.4 KiB
Fish
118 lines
2.4 KiB
Fish
# Test expansion of variables
|
|
|
|
# We don't use the test utility function of the same name because we want
|
|
# different behavior. Specifically, that the expansion of any variables or
|
|
# other strings before we are invoked produce the expected expansion.
|
|
function expansion --description 'Prints argument count followed by arguments'
|
|
echo (count $argv) $argv
|
|
end
|
|
|
|
set -l foo
|
|
expansion "$foo"
|
|
expansion $foo
|
|
expansion "prefix$foo"
|
|
expansion prefix$foo
|
|
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l foo ''
|
|
expansion "$foo"
|
|
expansion $foo
|
|
expansion "prefix$foo"
|
|
expansion prefix$foo
|
|
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l foo bar
|
|
set -l bar
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l bar baz
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l bar baz quux
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l foo bar fooer fooest
|
|
set -l fooer
|
|
set -l fooest
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
|
|
set -l fooer ''
|
|
expansion $$foo
|
|
expansion prefix$$foo
|
|
|
|
set -l foo bar '' fooest
|
|
expansion "$$foo"
|
|
expansion $$foo
|
|
expansion "prefix$$foo"
|
|
expansion prefix$$foo
|
|
expansion $foo[-5..2] # No result, because the starting index is invalid and we force-reverse.
|
|
expansion $foo[-2..-1]
|
|
expansion $foo[-10..-5]
|
|
expansion (printf '%s\n' $foo)[-5..2]
|
|
expansion (printf '%s\n' $foo)[-2..-1]
|
|
expansion (printf '%s\n' $foo)[-10..-5]
|
|
|
|
set -l foo
|
|
expansion "$foo[1]"
|
|
expansion $foo[1]
|
|
expansion "$foo[-1]"
|
|
expansion $foo[-1]
|
|
expansion "$foo[2]"
|
|
expansion $foo[2]
|
|
expansion "$foo[1 2]"
|
|
expansion $foo[1 2]
|
|
expansion "$foo[2 1]"
|
|
expansion $foo[2 1]
|
|
set -l foo a b c
|
|
expansion $foo[17]
|
|
expansion $foo[-17]
|
|
expansion $foo[17..18]
|
|
expansion $foo[4..-2]
|
|
|
|
echo "$foo[d]"
|
|
echo $foo[d]
|
|
|
|
echo ()[1]
|
|
echo ()[d]
|
|
|
|
logmsg Catch your breath
|
|
set paren ')'
|
|
echo $$paren
|
|
|
|
logmsg Test tilde expansion
|
|
# On OS X, /tmp is symlinked to /private/tmp
|
|
# $PWD is our best bet for resolving it
|
|
set -l saved $PWD
|
|
cd (mktemp -d)
|
|
set tmpdir $PWD
|
|
cd $saved
|
|
mkdir $tmpdir/realhome
|
|
ln -s $tmpdir/realhome $tmpdir/linkhome
|
|
set expandedtilde (env HOME=$tmpdir/linkhome ../test/root/bin/fish -c 'echo ~')
|
|
if test $expandedtilde != $tmpdir/realhome
|
|
echo '~ expands to' $expandedtilde ' - expected ' $tmpdir/realhome
|
|
end
|
|
unlink $tmpdir/linkhome
|
|
rmdir $tmpdir/realhome
|
|
rmdir $tmpdir
|