1# kill-y.tst: yash-specific test of the kill built-in
2
3# $1 = LINENO, $2 = signal name w/o SIG
4test_printing_signal_name_from_name() {
5    testcase "$1" -e 0 "printing signal name $2 from name" \
6	3<<__IN__ 4<<__OUT__ 5</dev/null
7kill -l $2
8__IN__
9$2
10__OUT__
11}
12
13test_printing_signal_name_from_name "$LINENO" INT
14test_printing_signal_name_from_name "$LINENO" TERM
15
16test_E -e 0 'printing signal description from number'
17kill -v 9
18__IN__
19
20test_E -e 0 'printing signal description from name'
21kill -v KILL
22__IN__
23
24# $1 = LINENO, $2 = signal name w/o SIG, $3 = prefix for $2
25test_sending_signal_kill() {
26    testcase "$1" -e "$2" "sending signal: $3$2" \
27	3<<__IN__ 4</dev/null 5</dev/null
28kill $3$2 \$\$
29__IN__
30}
31
32test_sending_signal_kill "$LINENO" USR1 '-n '
33test_sending_signal_kill "$LINENO" USR2 '-n '
34
35# $1 = LINENO, $2 = signal name w/o SIG, $3 = signal option for the built-in
36test_sending_signal_num_kill_self() {
37    testcase "$1" -e "$2" "sending signal: $3" \
38	3<<__IN__ 4</dev/null 5</dev/null
39kill $3 \$\$
40__IN__
41}
42
43test_sending_signal_num_kill_self "$LINENO" ALRM '-s 14'
44test_sending_signal_num_kill_self "$LINENO" TERM '-s 15'
45
46test_sending_signal_num_kill_self "$LINENO" ALRM '-n 14'
47test_sending_signal_num_kill_self "$LINENO" TERM '-n 15'
48
49test_oE 'various syntaxes of kill'
50kill -s CHLD $$ $$
51echo kill 1 $?
52kill -n CHLD $$ $$
53echo kill 2 $?
54kill -s 0 $$ $$
55echo kill 3 $?
56kill -n 0 $$ $$
57echo kill 4 $?
58kill -sCHLD $$ $$
59echo kill 5 $?
60kill -nCHLD $$ $$
61echo kill 6 $?
62kill -s0 $$ $$
63echo kill 7 $?
64kill -n0 $$ $$
65echo kill 8 $?
66kill -CHLD $$ $$
67echo kill 9 $?
68kill -0 $$ $$
69echo kill 10 $?
70kill -s CHLD -- $$ $$
71echo kill 11 $?
72kill -n CHLD -- $$ $$
73echo kill 12 $?
74kill -s 0 -- $$ $$
75echo kill 13 $?
76kill -n 0 -- $$ $$
77echo kill 14 $?
78kill -sCHLD -- $$ $$
79echo kill 15 $?
80kill -nCHLD -- $$ $$
81echo kill 16 $?
82kill -s0 -- $$ $$
83echo kill 17 $?
84kill -n0 -- $$ $$
85echo kill 18 $?
86kill -CHLD -- $$ $$
87echo kill 19 $?
88kill -0 -- $$ $$
89echo kill 20 $?
90kill -l >/dev/null
91echo kill 21 $?
92kill -l -v >/dev/null
93echo kill 22 $?
94kill -v -l >/dev/null
95echo kill 23 $?
96kill -lv >/dev/null
97echo kill 24 $?
98kill -vl >/dev/null
99echo kill 25 $?
100kill -v >/dev/null
101echo kill 26 $?
102kill -l -- 3 9 15
103echo kill 27 $?
104kill -lv -- 3 9 15 >/dev/null
105echo kill 28 $?
106kill -s chld $$ $$
107echo kill 29 $?
108kill -schld $$ $$
109echo kill 30 $?
110kill -s SIGCHLD $$ $$
111echo kill 31 $?
112kill -sSIGCHLD $$ $$
113echo kill 32 $?
114kill -s sigchld $$ $$
115echo kill 33 $?
116kill -ssigchld $$ $$
117echo kill 34 $?
118kill -SIGCHLD $$ $$
119echo kill 35 $?
120kill -SiGcHlD $$ $$
121echo kill 36 $?
122__IN__
123kill 1 0
124kill 2 0
125kill 3 0
126kill 4 0
127kill 5 0
128kill 6 0
129kill 7 0
130kill 8 0
131kill 9 0
132kill 10 0
133kill 11 0
134kill 12 0
135kill 13 0
136kill 14 0
137kill 15 0
138kill 16 0
139kill 17 0
140kill 18 0
141kill 19 0
142kill 20 0
143kill 21 0
144kill 22 0
145kill 23 0
146kill 24 0
147kill 25 0
148kill 26 0
149QUIT
150KILL
151TERM
152kill 27 0
153kill 28 0
154kill 29 0
155kill 30 0
156kill 31 0
157kill 32 0
158kill 33 0
159kill 34 0
160kill 35 0
161kill 36 0
162__OUT__
163
164test_Oe -e 1 'invalid option'
165kill --no-such-option
166__IN__
167kill: no such signal `-NO-SUCH-OPTION'
168__ERR__
169#'
170#`
171
172test_Oe -e 2 'specifying -l and -n both'
173kill -l -n 0
174__IN__
175kill: the -n option cannot be used with the -l option
176__ERR__
177
178test_Oe -e 2 'specifying -l and -s both'
179kill -l -s INT
180__IN__
181kill: the -s option cannot be used with the -l option
182__ERR__
183
184test_Oe -e 2 'missing operand'
185kill
186__IN__
187kill: this command requires an operand
188__ERR__
189
190test_Oe -e 1 'printing name of unknown signal'
191kill -l 0
192__IN__
193kill: no such signal `0'
194__ERR__
195#'
196#`
197
198test_Oe -e 1 'sending signal to unknown job'
199kill %100
200__IN__
201kill: no such job `%100'
202__ERR__
203#'
204#`
205
206test_O -d -e 1 'printing to closed stream (no operand)'
207kill -l >&-
208__IN__
209
210test_O -d -e 1 'printing to closed stream (with operand)'
211kill -l 1 >&-
212__IN__
213
214test_Oe -e 2 'signal name must be specified w/o SIG (POSIX)' --posix
215kill -s SIGTERM $$
216__IN__
217kill: SIGTERM: the signal name must be specified without `SIG'
218__ERR__
219#'
220#`
221
222(
223if ! testee --version --verbose | grep -Fqx ' * help'; then
224    skip="true"
225fi
226
227test_oE -e 0 'help'
228kill --help
229__IN__
230kill: send a signal to processes
231
232Syntax:
233	kill [-signal|-s signal|-n number] process...
234	kill -l [-v] [number...]
235
236Try `man yash' for details.
237__OUT__
238#'
239#`
240
241)
242
243test_Oe -e 1 'no help in POSIX mode' --posix
244kill --help
245__IN__
246kill: no such signal `-HELP'
247__ERR__
248#'
249#`
250
251# vim: set ft=sh ts=8 sts=4 sw=4 noet:
252