xref: /freebsd-src/usr.bin/rs/tests/rs_test.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1013953ebSAlan Somers#
2013953ebSAlan Somers# Copyright 2017 Shivansh
3013953ebSAlan Somers# All rights reserved.
4013953ebSAlan Somers#
5013953ebSAlan Somers# Redistribution and use in source and binary forms, with or without
6013953ebSAlan Somers# modification, are permitted provided that the following conditions
7013953ebSAlan Somers# are met:
8013953ebSAlan Somers# 1. Redistributions of source code must retain the above copyright
9013953ebSAlan Somers#    notice, this list of conditions and the following disclaimer.
10013953ebSAlan Somers# 2. Redistributions in binary form must reproduce the above copyright
11013953ebSAlan Somers#    notice, this list of conditions and the following disclaimer in the
12013953ebSAlan Somers#    documentation and/or other materials provided with the distribution.
13013953ebSAlan Somers#
14013953ebSAlan Somers# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15013953ebSAlan Somers# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16013953ebSAlan Somers# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17013953ebSAlan Somers# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18013953ebSAlan Somers# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19013953ebSAlan Somers# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20013953ebSAlan Somers# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21013953ebSAlan Somers# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22013953ebSAlan Somers# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23013953ebSAlan Somers# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24013953ebSAlan Somers# SUCH DAMAGE.
25013953ebSAlan Somers#
26013953ebSAlan Somers#
27013953ebSAlan Somers
28013953ebSAlan Somersatf_test_case c_flag
29013953ebSAlan Somersc_flag_head()
30013953ebSAlan Somers{
31013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'c'"
32013953ebSAlan Somers}
33013953ebSAlan Somers
34013953ebSAlan Somersc_flag_body()
35013953ebSAlan Somers{
36*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3  4
37*7ad9aa0bSJohn Baldwin5  6  7  8
38*7ad9aa0bSJohn Baldwin" rs -c, 2 <<EOF
39*7ad9aa0bSJohn Baldwin1,2,3,4,5,6,7,8
40*7ad9aa0bSJohn BaldwinEOF
41013953ebSAlan Somers}
42013953ebSAlan Somers
43013953ebSAlan Somersatf_test_case s_flag
44013953ebSAlan Somerss_flag_head()
45013953ebSAlan Somers{
46013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 's'"
47013953ebSAlan Somers}
48013953ebSAlan Somers
49013953ebSAlan Somerss_flag_body()
50013953ebSAlan Somers{
51*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3  4
52*7ad9aa0bSJohn Baldwin5  6  7  8
53*7ad9aa0bSJohn Baldwin" rs -s% 2 <<EOF
54*7ad9aa0bSJohn Baldwin1%%2%%3%4%5%%%6%%%7%8
55*7ad9aa0bSJohn BaldwinEOF
56*7ad9aa0bSJohn Baldwin
57013953ebSAlan Somers}
58013953ebSAlan Somers
59013953ebSAlan Somersatf_test_case C_flag
60013953ebSAlan SomersC_flag_head()
61013953ebSAlan Somers{
62013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'C'"
63013953ebSAlan Somers}
64013953ebSAlan Somers
65013953ebSAlan SomersC_flag_body()
66013953ebSAlan Somers{
67*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1,2,3,4,
68*7ad9aa0bSJohn Baldwin5,6,7,8,
69*7ad9aa0bSJohn Baldwin" rs -C, 2 <<EOF
70*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
71*7ad9aa0bSJohn BaldwinEOF
72013953ebSAlan Somers}
73013953ebSAlan Somers
74013953ebSAlan Somersatf_test_case S_flag
75013953ebSAlan SomersS_flag_head()
76013953ebSAlan Somers{
77013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'S'"
78013953ebSAlan Somers}
79013953ebSAlan Somers
80013953ebSAlan SomersS_flag_body()
81013953ebSAlan Somers{
82*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1,,2,,3,,4
83*7ad9aa0bSJohn Baldwin5,,6,,7,,8
84*7ad9aa0bSJohn Baldwin" rs -S, 2 <<EOF
85*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
86*7ad9aa0bSJohn BaldwinEOF
87013953ebSAlan Somers}
88013953ebSAlan Somers
89013953ebSAlan Somersatf_test_case t_flag
90013953ebSAlan Somerst_flag_head()
91013953ebSAlan Somers{
92013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 't'"
93013953ebSAlan Somers}
94013953ebSAlan Somers
95013953ebSAlan Somerst_flag_body()
96013953ebSAlan Somers{
97*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  4  7
98*7ad9aa0bSJohn Baldwin2  5  8
99*7ad9aa0bSJohn Baldwin3  6
100*7ad9aa0bSJohn Baldwin" rs -t 3 <<EOF
101*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
102*7ad9aa0bSJohn BaldwinEOF
103013953ebSAlan Somers}
104013953ebSAlan Somers
105013953ebSAlan Somersatf_test_case T_flag
106013953ebSAlan SomersT_flag_head()
107013953ebSAlan Somers{
108013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'T'"
109013953ebSAlan Somers}
110013953ebSAlan Somers
111013953ebSAlan SomersT_flag_body()
112013953ebSAlan Somers{
113*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1
114*7ad9aa0bSJohn Baldwin2
115*7ad9aa0bSJohn Baldwin3
116*7ad9aa0bSJohn Baldwin" rs -T <<EOF
117*7ad9aa0bSJohn Baldwin1 2 3
118*7ad9aa0bSJohn BaldwinEOF
119013953ebSAlan Somers}
120013953ebSAlan Somers
121013953ebSAlan Somersatf_test_case k_flag
122013953ebSAlan Somersk_flag_head()
123013953ebSAlan Somers{
124013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'k'"
125013953ebSAlan Somers}
126013953ebSAlan Somers
127013953ebSAlan Somersk_flag_body()
128013953ebSAlan Somers{
129*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"3  4  5
130*7ad9aa0bSJohn Baldwin6  7  8
131*7ad9aa0bSJohn Baldwin" rs -k 1 2 <<EOF
132*7ad9aa0bSJohn Baldwin1 2
133*7ad9aa0bSJohn Baldwin3 4 5 6
134*7ad9aa0bSJohn Baldwin7 8
135*7ad9aa0bSJohn BaldwinEOF
136013953ebSAlan Somers}
137013953ebSAlan Somers
138013953ebSAlan Somersatf_test_case K_flag
139013953ebSAlan SomersK_flag_head()
140013953ebSAlan Somers{
141013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'K'"
142013953ebSAlan Somers}
143013953ebSAlan Somers
144013953ebSAlan SomersK_flag_body()
145013953ebSAlan Somers{
146013953ebSAlan Somers	atf_check -s exit:0 -o inline:"
147afb4998dSJohn Baldwin" rs -K 1 < /dev/null
148013953ebSAlan Somers}
149013953ebSAlan Somers
150013953ebSAlan Somersatf_test_case g_flag
151013953ebSAlan Somersg_flag_head()
152013953ebSAlan Somers{
153013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'g'"
154013953ebSAlan Somers}
155013953ebSAlan Somers
156013953ebSAlan Somersg_flag_body()
157013953ebSAlan Somers{
158*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1 2 3 4
159*7ad9aa0bSJohn Baldwin5 6 7 8
160*7ad9aa0bSJohn Baldwin" rs -g 1 2 <<EOF
161*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
162*7ad9aa0bSJohn BaldwinEOF
163013953ebSAlan Somers}
164013953ebSAlan Somers
165013953ebSAlan Somersatf_test_case G_flag
166013953ebSAlan SomersG_flag_head()
167013953ebSAlan Somers{
168013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'G'"
169013953ebSAlan Somers}
170013953ebSAlan Somers
171013953ebSAlan SomersG_flag_body()
172013953ebSAlan Somers{
173*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1                2                3                4
174*7ad9aa0bSJohn Baldwin5                6                7                acbdefghij
175*7ad9aa0bSJohn Baldwin" rs -G 50 2 <<EOF
176*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 acbdefghij
177*7ad9aa0bSJohn BaldwinEOF
178013953ebSAlan Somers}
179013953ebSAlan Somers
180013953ebSAlan Somersatf_test_case e_flag
181013953ebSAlan Somerse_flag_head()
182013953ebSAlan Somers{
183013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'e'"
184013953ebSAlan Somers}
185013953ebSAlan Somers
186013953ebSAlan Somerse_flag_body()
187013953ebSAlan Somers{
188013953ebSAlan Somers	atf_check -s exit:0 -o inline:"
189013953ebSAlan Somers" rs -e < /dev/null
190013953ebSAlan Somers}
191013953ebSAlan Somers
192013953ebSAlan Somersatf_test_case n_flag
193013953ebSAlan Somersn_flag_head()
194013953ebSAlan Somers{
195013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'n'"
196013953ebSAlan Somers}
197013953ebSAlan Somers
198013953ebSAlan Somersn_flag_body()
199013953ebSAlan Somers{
200*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3
201*7ad9aa0bSJohn Baldwin4  5
202*7ad9aa0bSJohn Baldwin6  7
203*7ad9aa0bSJohn Baldwin" rs -n 0 3 <<EOF
204*7ad9aa0bSJohn Baldwin1 2 3
205*7ad9aa0bSJohn Baldwin4 5
206*7ad9aa0bSJohn Baldwin6 7
207*7ad9aa0bSJohn BaldwinEOF
208013953ebSAlan Somers}
209013953ebSAlan Somers
210013953ebSAlan Somersatf_test_case y_flag
211013953ebSAlan Somersy_flag_head()
212013953ebSAlan Somers{
213013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'y'"
214013953ebSAlan Somers}
215013953ebSAlan Somers
216013953ebSAlan Somersy_flag_body()
217013953ebSAlan Somers{
218*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3
219*7ad9aa0bSJohn Baldwin4  5  6
220*7ad9aa0bSJohn Baldwin7  8  1
221*7ad9aa0bSJohn Baldwin" rs -y 3 <<EOF
222*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
223*7ad9aa0bSJohn BaldwinEOF
224013953ebSAlan Somers}
225013953ebSAlan Somers
226013953ebSAlan Somersatf_test_case h_flag
227013953ebSAlan Somersh_flag_head()
228013953ebSAlan Somers{
229013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'h'"
230013953ebSAlan Somers}
231013953ebSAlan Somers
232013953ebSAlan Somersh_flag_body()
233013953ebSAlan Somers{
234013953ebSAlan Somers	atf_check -s exit:0 -o inline:"1 0
235013953ebSAlan Somers" rs -h < /dev/null
236013953ebSAlan Somers}
237013953ebSAlan Somers
238013953ebSAlan Somersatf_test_case H_flag
239013953ebSAlan SomersH_flag_head()
240013953ebSAlan Somers{
241013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'H'"
242013953ebSAlan Somers}
243013953ebSAlan Somers
244013953ebSAlan SomersH_flag_body()
245013953ebSAlan Somers{
246013953ebSAlan Somers	atf_check -s exit:0 -o inline:" 0 line 1
247013953ebSAlan Somers1 0
248013953ebSAlan Somers" rs -H < /dev/null
249013953ebSAlan Somers}
250013953ebSAlan Somers
251013953ebSAlan Somersatf_test_case j_flag
252013953ebSAlan Somersj_flag_head()
253013953ebSAlan Somers{
254013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'j'"
255013953ebSAlan Somers}
256013953ebSAlan Somers
257013953ebSAlan Somersj_flag_body()
258013953ebSAlan Somers{
259*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"  1    2    3
260*7ad9aa0bSJohn Baldwinabc  def  ghi
261*7ad9aa0bSJohn Baldwin" rs -j 2 <<EOF
262*7ad9aa0bSJohn Baldwin1 2 3 abc def ghi
263*7ad9aa0bSJohn BaldwinEOF
264013953ebSAlan Somers}
265013953ebSAlan Somers
266013953ebSAlan Somersatf_test_case m_flag
267013953ebSAlan Somersm_flag_head()
268013953ebSAlan Somers{
269013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'm'"
270013953ebSAlan Somers}
271013953ebSAlan Somers
272013953ebSAlan Somersm_flag_body()
273013953ebSAlan Somers{
274*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1    2    3
275*7ad9aa0bSJohn Baldwinabc  def  ghi
276*7ad9aa0bSJohn Baldwin" rs -m 2 <<EOF
277*7ad9aa0bSJohn Baldwin1 2 3 abc def ghi
278*7ad9aa0bSJohn BaldwinEOF
279013953ebSAlan Somers}
280013953ebSAlan Somers
281013953ebSAlan Somersatf_test_case z_flag
282013953ebSAlan Somersz_flag_head()
283013953ebSAlan Somers{
284013953ebSAlan Somers	atf_set "descr" "Verify the usage of option 'z'"
285013953ebSAlan Somers}
286013953ebSAlan Somers
287013953ebSAlan Somersz_flag_body()
288013953ebSAlan Somers{
289*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3  4
290*7ad9aa0bSJohn Baldwin5  6  7  acbdefghij
291*7ad9aa0bSJohn Baldwin" rs -z 2 <<EOF
292*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 acbdefghij
293*7ad9aa0bSJohn BaldwinEOF
294013953ebSAlan Somers}
295013953ebSAlan Somers
296013953ebSAlan Somersatf_test_case invalid_usage
297013953ebSAlan Somersinvalid_usage_head()
298013953ebSAlan Somers{
299013953ebSAlan Somers	atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
300013953ebSAlan Somers}
301013953ebSAlan Somers
302013953ebSAlan Somersinvalid_usage_body()
303013953ebSAlan Somers{
304afb4998dSJohn Baldwin	atf_check -s not-exit:0 -e inline:"rs: option requires an argument -- w
305afb4998dSJohn Baldwinusage: rs [-[csCS][x][kKgGw][N]tTeEnyjhHmz] [rows [cols]]
306013953ebSAlan Somers" rs -w
307013953ebSAlan Somers}
308013953ebSAlan Somers
309013953ebSAlan Somersatf_test_case no_arguments
310013953ebSAlan Somersno_arguments_head()
311013953ebSAlan Somers{
312013953ebSAlan Somers	atf_set "descr" "Verify that rs(1) executes successfully and produces a valid output when invoked without any arguments"
313013953ebSAlan Somers}
314013953ebSAlan Somers
315013953ebSAlan Somersno_arguments_body()
316013953ebSAlan Somers{
317*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1 2 3 4 5 6 7 8
318*7ad9aa0bSJohn Baldwin" rs <<EOF
319*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
320*7ad9aa0bSJohn BaldwinEOF
321*7ad9aa0bSJohn Baldwin}
322*7ad9aa0bSJohn Baldwin
323*7ad9aa0bSJohn Baldwinatf_test_case rows_2
324*7ad9aa0bSJohn Baldwinrows_2_head()
325*7ad9aa0bSJohn Baldwin{
326*7ad9aa0bSJohn Baldwin	atf_set "descr" "Simple output with 2 rows"
327*7ad9aa0bSJohn Baldwin}
328*7ad9aa0bSJohn Baldwin
329*7ad9aa0bSJohn Baldwinrows_2_body()
330*7ad9aa0bSJohn Baldwin{
331*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3  4
332*7ad9aa0bSJohn Baldwin5  6  7  8
333*7ad9aa0bSJohn Baldwin" rs 2 <<EOF
334*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
335*7ad9aa0bSJohn BaldwinEOF
336*7ad9aa0bSJohn Baldwin}
337*7ad9aa0bSJohn Baldwin
338*7ad9aa0bSJohn Baldwinatf_test_case rows_3
339*7ad9aa0bSJohn Baldwinrows_3_head()
340*7ad9aa0bSJohn Baldwin{
341*7ad9aa0bSJohn Baldwin	atf_set "descr" "Simple output with 3 rows"
342*7ad9aa0bSJohn Baldwin}
343*7ad9aa0bSJohn Baldwin
344*7ad9aa0bSJohn Baldwinrows_3_body()
345*7ad9aa0bSJohn Baldwin{
346*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2  3
347*7ad9aa0bSJohn Baldwin4  5  6
348*7ad9aa0bSJohn Baldwin7  8
349*7ad9aa0bSJohn Baldwin" rs 3 <<EOF
350*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
351*7ad9aa0bSJohn BaldwinEOF
352*7ad9aa0bSJohn Baldwin}
353*7ad9aa0bSJohn Baldwin
354*7ad9aa0bSJohn Baldwinatf_test_case rows_4
355*7ad9aa0bSJohn Baldwinrows_4_head()
356*7ad9aa0bSJohn Baldwin{
357*7ad9aa0bSJohn Baldwin	atf_set "descr" "Simple output with 4 rows"
358*7ad9aa0bSJohn Baldwin}
359*7ad9aa0bSJohn Baldwin
360*7ad9aa0bSJohn Baldwinrows_4_body()
361*7ad9aa0bSJohn Baldwin{
362*7ad9aa0bSJohn Baldwin	atf_check -s exit:0 -o inline:"1  2
363*7ad9aa0bSJohn Baldwin3  4
364*7ad9aa0bSJohn Baldwin5  6
365*7ad9aa0bSJohn Baldwin7  8
366*7ad9aa0bSJohn Baldwin" rs 4 <<EOF
367*7ad9aa0bSJohn Baldwin1 2 3 4 5 6 7 8
368*7ad9aa0bSJohn BaldwinEOF
369013953ebSAlan Somers}
370013953ebSAlan Somers
371013953ebSAlan Somersatf_init_test_cases()
372013953ebSAlan Somers{
373013953ebSAlan Somers	atf_add_test_case c_flag
374013953ebSAlan Somers	atf_add_test_case s_flag
375013953ebSAlan Somers	atf_add_test_case C_flag
376013953ebSAlan Somers	atf_add_test_case S_flag
377013953ebSAlan Somers	atf_add_test_case t_flag
378013953ebSAlan Somers	atf_add_test_case T_flag
379013953ebSAlan Somers	atf_add_test_case k_flag
380013953ebSAlan Somers	atf_add_test_case K_flag
381013953ebSAlan Somers	atf_add_test_case g_flag
382013953ebSAlan Somers	atf_add_test_case G_flag
383013953ebSAlan Somers	atf_add_test_case e_flag
384013953ebSAlan Somers	atf_add_test_case n_flag
385013953ebSAlan Somers	atf_add_test_case y_flag
386013953ebSAlan Somers	atf_add_test_case h_flag
387013953ebSAlan Somers	atf_add_test_case H_flag
388013953ebSAlan Somers	atf_add_test_case j_flag
389013953ebSAlan Somers	atf_add_test_case m_flag
390013953ebSAlan Somers	atf_add_test_case z_flag
391013953ebSAlan Somers	atf_add_test_case invalid_usage
392013953ebSAlan Somers	atf_add_test_case no_arguments
393*7ad9aa0bSJohn Baldwin	atf_add_test_case rows_2
394*7ad9aa0bSJohn Baldwin	atf_add_test_case rows_3
395*7ad9aa0bSJohn Baldwin	atf_add_test_case rows_4
396013953ebSAlan Somers}
397