about summary refs log tree commit diff
path: root/Test/Y03arguments.ztst
blob: 2ffa115770ddd501ad829a06b51dc2353f5fb84c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# Tests for _arguments.

%prep
  . $ZTST_srcdir/comptest

  mkdir comp.tmp
  cd comp.tmp

  comptestinit -z $ZTST_testdir/../Src/zsh &&
  {
    comptesteval 'compdef _tst tst'
    tst_arguments () { comptesteval "_tst () { _arguments ${${(@qq)*}} }" }
  }

%test
 tst_arguments ':desc1:(arg1)'
 comptest $'tst \t\C-wa\t\C-war\t\C-warg\t\C-warg1\t\C-wr\t\C-wx\t \ty \t'
0:one non-option argument
>line: {tst arg1 }{}
>line: {tst arg1 }{}
>line: {tst arg1 }{}
>line: {tst arg1 }{}
>line: {tst arg1 }{}
>line: {tst r}{}
>line: {tst x}{}
>line: {tst x }{}
>MESSAGE:{no more arguments}
>line: {tst x y }{}
>MESSAGE:{no more arguments}

 tst_arguments ':desc1:(a b)'
 comptest $'tst \t'
0:a and b
>line: {tst }{}
>DESCRIPTION:{desc1}
>NO:{a}
>NO:{b}

 tst_arguments ':desc1:(arg1)' ':desc2:(arg2)' ':desc3:(arg3)'
 comptest $'tst \t\t\t\C-w\C-w\C-w\C-d'
0:three arguments
>line: {tst arg1 }{}
>line: {tst arg1 arg2 }{}
>line: {tst arg1 arg2 arg3 }{}
>DESCRIPTION:{desc1}
>NO:{arg1}

 tst_arguments '1:desc1:(arg1)'
 comptest $'tst \t\t'
0:first argument
>line: {tst arg1 }{}
>line: {tst arg1 }{}
>MESSAGE:{no more arguments}

 tst_arguments '-\+[opt]'
 comptest $'tst -\C-d'
0:-+
>DESCRIPTION:{option}
>NO:{-+ -- opt}

 tst_arguments -+o
 comptest $'tst -\t\t\t\C-w\C-w+\t\t\t'
0:option beginning with + and -.
>line: {tst -o }{}
>line: {tst -o +o }{}
>line: {tst -o +o }{}
>MESSAGE:{no arguments}
>line: {tst +o }{}
>line: {tst +o -o }{}
>line: {tst +o -o }{}
>MESSAGE:{no arguments}

 tst_arguments '-o:1:(a):2:(b)'
 comptest $'tst \t\t\t'
0:two option arguments
>line: {tst -o }{}
>line: {tst -o a }{}
>line: {tst -o a b }{}

 tst_arguments '-x:arg:'
 comptest $'tst -x\t'
0:sticky option argument
>line: {tst -x }{}

 tst_arguments '-x[desc]'
 comptest $'tst -x\t'
0:end of option sequence
>line: {tst -x }{}

 tst_arguments '-x' ':arg:'
 comptest $'tst -\t'
0:argument beginning with minus
>line: {tst -}{}
>MESSAGE:{arg}
>DESCRIPTION:{option}
>NO:{-x}

 tst_arguments '-o::optarg:(oa)' ':arg1:(a1)'
 comptest $'tst -o\t\t'
0:optional option argument
>line: {tst -o }{}
>line: {tst -o }{}
>DESCRIPTION:{optarg}
>NO:{oa}
>DESCRIPTION:{arg1}
>NO:{a1}

 tst_arguments '-o:*a:a:(a)' ':A:(A)' ':B:(B)'
 comptest $'tst A -o a \t'
0:variable length option arguments
>line: {tst A -o a B }{}

 tst_arguments -s '-a' '-b' ':descr:{compadd - $+opt_args[-a]}'
 comptest $'tst -ab \t'
0:opt_args
>line: {tst -ab 1 }{}

 tst_arguments '-a' '*::rest:{compadd - -b}'
 comptest $'tst arg -\t'
0:rest arguments
>line: {tst arg -b }{}

 tst_arguments '-e:*last:::b:{compadd "${(j:,:)words}"}' ':arg1:(arg1)'
 comptest $'tst -\t\tla\t\C-hst\t\t\eb\eb\C-b\t\t'
0:words array in rest arguments
>line: {tst -e }{}
>line: {tst -e  }{}
>line: {tst -e  la }{}
>line: {tst -e  last }{}
>line: {tst -e  last arg1 }{}
>line: {tst -e ,last }{ last arg1}
>line: {tst -e ,last ,last,,last }{ last arg1}

 tst_arguments -s '-d+:msg1:' '*::msg2:{compadd $CURRENT}' 
 comptest $'tst add \t\t\t'
0:opt_args
>line: {tst add 2 }{}
>line: {tst add 2 3 }{}
>line: {tst add 2 3 4 }{}

 tst_arguments -s '-a' '-b' '-c' ':words:compadd - abyyy abzzz' 
 comptest $'tst ab\t'
0:options and words (zsh-workers:12257)
>line: {tst ab}{}
>DESCRIPTION:{words}
>NO:{abyyy}
>NO:{abzzz}

%clean

  zmodload -ui zsh/zpty