diff options
Diffstat (limited to 'tests/test6.in')
-rw-r--r--[-rwxr-xr-x] | tests/test6.in | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/tests/test6.in b/tests/test6.in index e9b6e9b4..252eb606 100755..100644 --- a/tests/test6.in +++ b/tests/test6.in @@ -1,11 +1,74 @@ +# 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' -complete -C'AAAA -' -complete -C'AAAA -' +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 |