1 ## oils_failures_allowed: 6
2
3 #### compexport
4
5 compexport -c 'hay'
6
7 ## STDOUT:
8 "haynode "
9 "hay "
10 ## END
11
12 #### compexport with multi-line commands
13
14 # TODO: Why do we get 3 copies of echo?
15 # compexport -c $'for x in y; do\nec'
16
17 compexport -c $'for x in y; do\ncompl'
18
19
20 ## STDOUT:
21 "complete "
22 ## END
23
24 #### redirect completions are quoted
25
26 touch "can't touch this"
27
28 compexport -c 'echo hi > c'
29 ## STDOUT:
30 "echo hi > can\\'t\\ touch\\ this"
31 ## END
32
33 #### dir completions have trailing slash
34
35 mkdir -p "can't touch this"
36 compexport -c 'cd ca'
37
38 ## STDOUT:
39 "cd can\\'t\\ touch\\ this/"
40 ## END
41
42
43 #### complete -F strings are not quoted again
44
45 . $REPO_ROOT/testdata/completion/quoting.bash
46
47 compexport -c 'pq-argv c'
48 echo
49
50 # note: excluding "can't" because there's an intentional bug
51 compexport -c 'sq-argv ch'
52
53 # Quoting doesn't match bash exactly, but it definitely works interactively!
54
55 ## STDOUT:
56 "pq-argv $'can\\'t' "
57 "pq-argv 'ch with space' "
58 "pq-argv checkout "
59 "pq-argv cherry "
60
61 "sq-argv 'ch with space' "
62 "sq-argv 'checkout' "
63 "sq-argv 'cherry' "
64 ## END
65
66 #### complete -W quoting
67
68 . $REPO_ROOT/testdata/completion/quoting.bash
69
70 compexport -c 'q2-argv c'
71 echo
72
73 ## STDOUT:
74 "q2-argv can\\'t "
75 "q2-argv checkout "
76 "q2-argv cherry "
77 ## END
78
79 #### filenames are completed
80
81 touch foo bar baz
82
83 compexport -c $'echo ba'
84
85
86 ## STDOUT:
87
88 TODO: Is the order reversed? I guess this is file system order, which is
89 nondeterministic. YSH can sort them
90
91 echo baz
92 echo bar
93 ## END
94
95 #### complete both -W and -F: words and functions
96
97 __git() {
98 COMPREPLY=(corn dill)
99 }
100 complete -W 'ale $(echo bean)' -F __git GIT
101
102 compexport -c 'GIT '
103
104 ## STDOUT:
105 Hm they are kinda reversed, I want to fix that. This is true even in Python
106 though, weird.
107 ## END
108
109
110 #### -o default is an "else action", when zero are shown
111
112 touch file1 file2
113
114 echo '-- nothing registered'
115 compexport -c 'GIT '
116
117 __git() {
118 #argv.py "$@"
119 COMPREPLY=(foo bar)
120 }
121
122 complete -F __git GIT
123
124 echo '-- func'
125 compexport -c 'GIT '
126
127 complete -F __git -o default GIT
128 echo '-- func default'
129 compexport -c 'GIT '
130
131 __git() {
132 # don't show anything
133 true
134 }
135
136 # have to RE-REGISTER after defining function! Hm
137 complete -F __git -o default GIT
138
139 echo '-- empty func default'
140 compexport -c 'GIT '
141
142 # Is the order reversed?
143 # Does GNU readline always sort them?
144
145 ## STDOUT:
146 TODO
147 git
148 ## END
149
150 # TODO:
151 # --begin --end
152 # --table ? For mulitiple completions
153 # compatible with -C ?
154 # --trace - show debug_f tracing on stderr? Would be very nice!
155
156 #### git completion space issue (disabled for old git, e.g. v2.17.1)
157
158 # Hack for lenny: version detection for 2.17.1 on Ubuntu 18.02
159 if ! git --list-cmds=list-complete >/dev/null; then
160 cat <<'EOF'
161 status=0
162 "git cherry "
163 "git cherry-pick "
164 "git checkout "
165 EOF
166 return
167 fi
168
169 . $REPO_ROOT/testdata/completion/git-completion.bash
170 echo status=$?
171
172 #complete
173
174 # Bug: it has an extra \ on it
175 compexport -c 'git ch'
176
177 ## status: 0
178 ## STDOUT:
179 status=0
180 "git cherry "
181 "git cherry-pick "
182 "git checkout "
183 ## END
184
185 #### Complete Filenames with bad characters
186
187 touch hello
188 touch $'hi\xffthere'
189
190 compexport -c 'echo h'
191 ## STDOUT:
192 TODO
193 ## END
194
195 #### Complete Command with bad characters
196
197 touch foo fooz
198
199 compexport -c $'echo "bad \xff byte" f'
200
201 ## STDOUT:
202 TODO
203 ## END
204