aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/test6.in
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test6.in')
-rw-r--r--[-rwxr-xr-x]tests/test6.in67
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