fish-shell/tests/test6.in
2014-09-20 00:35:51 -07:00

75 lines
2.1 KiB
Fish
Executable File

# vim: set filetype=fish:
# Test that conditions that add or remove completions don't deadlock, etc.
# We actually encountered some case that was effectively like this (Issue 2 in github)
complete --command AAAA -l abcd --condition 'complete -c AAAA -l efgh'
echo "AAAA:"
complete -C'AAAA -' | sort
echo "AAAA:"
complete -C'AAAA -' | sort
complete --command BBBB -l abcd --condition 'complete -e --command BBBB -l abcd'
echo "BBBB:"
complete -C'BBBB -'
echo "BBBB:"
complete -C'BBBB -'
# Test that erasing completions works correctly
echo
function sort
# GNU sort is really stupid, a non-C locale seems to make it assume --dictionary-order
# If I wanted --dictionary-order, I would have specified --dictionary-order!
env LC_ALL=C sort $argv
end
complete -c CCCC -l bar
complete -c CCCC -l baz
complete -c CCCC -o bar
complete -c CCCC -o foo
complete -c CCCC -s a
complete -c CCCC -s b
echo "CCCC:"
complete -C'CCCC -' | sort
complete -c CCCC -l bar -e
echo "CCCC:"
complete -C'CCCC -' | sort
complete -c CCCC -o foo -e
echo "CCCC:"
complete -C'CCCC -' | sort
complete -c CCCC -s a -e
echo "CCCC:"
complete -C'CCCC -' | sort
complete -c CCCC -e
echo "CCCC:"
complete -C'CCCC -' | sort
# Test that directory completions work correctly
if begin; rm -rf test6.tmp.dir; and mkdir test6.tmp.dir; end
pushd test6.tmp.dir
set -l dir (mktemp -d XXXXXXXX)
if complete -C$dir | grep "^$dir/.*Directory" >/dev/null
echo "implicit cd complete works"
else
echo "no implicit cd complete"
end
if complete -C"command $dir" | grep "^$dir/.*Directory" >/dev/null
echo "implicit cd complete incorrect after 'command'"
else
echo "no implicit cd complete after 'command'"
end
popd
if begin
set -l PATH $PWD/test6.tmp.dir $PATH ^/dev/null
complete -C$dir | grep "^$dir/.*Directory" >/dev/null
end
echo "incorrect implicit cd from PATH"
else
echo "PATH does not cause incorrect implicit cd"
end
rm -rf test6.tmp.dir
else
echo "error: could not create temp environment" >&2
end