xref: /freebsd/usr.bin/xargs/tests/xargs_test.sh (revision f1c4c3daccbaf3820f0e2224de53df12fc952fcc)
1#
2# Copyright (c) 2002 Juli Mallett <jmallett@FreeBSD.org>
3# Copyright (c) 2025 Dag-Erling Smørgrav <des@FreeBSD.org>
4#
5# SPDX-License-Identifier: BSD-2-Clause
6#
7
8SRCDIR=$(atf_get_srcdir)
9
10atf_test_case xargs_normal
11xargs_normal_body()
12{
13	atf_check -o file:${SRCDIR}/regress.normal.out \
14	    xargs echo The <${SRCDIR}/regress.in
15}
16
17atf_test_case xargs_I
18xargs_I_body()
19{
20	atf_check -o file:${SRCDIR}/regress.I.out \
21	    xargs -I% echo The % % % %% % % <${SRCDIR}/regress.in
22}
23
24atf_test_case xargs_J
25xargs_J_body()
26{
27	atf_check -o file:${SRCDIR}/regress.J.out \
28	    xargs -J% echo The % again. <${SRCDIR}/regress.in
29}
30
31atf_test_case xargs_L
32xargs_L_body()
33{
34	atf_check -o file:${SRCDIR}/regress.L.out \
35	    xargs -L3 echo <${SRCDIR}/regress.in
36}
37
38atf_test_case xargs_P1
39xargs_P1_body()
40{
41	atf_check -o file:${SRCDIR}/regress.P1.out \
42	    xargs -P1 echo <${SRCDIR}/regress.in
43}
44
45atf_test_case xargs_R
46xargs_R_body()
47{
48	atf_check -o file:${SRCDIR}/regress.R.out \
49	    xargs -I% -R1 echo The % % % %% % % <${SRCDIR}/regress.in
50}
51
52atf_test_case xargs_R_1
53xargs_R_1_body()
54{
55	atf_check -o file:${SRCDIR}/regress.R-1.out \
56	    xargs -I% -R-1 echo The % % % %% % % <${SRCDIR}/regress.in
57}
58
59atf_test_case xargs_n1
60xargs_n1_body()
61{
62	atf_check -o file:${SRCDIR}/regress.n1.out \
63	    xargs -n1 echo <${SRCDIR}/regress.in
64}
65
66atf_test_case xargs_n2
67xargs_n2_body()
68{
69	atf_check -o file:${SRCDIR}/regress.n2.out \
70	    xargs -n2 echo <${SRCDIR}/regress.in
71}
72
73atf_test_case xargs_nargmax
74xargs_nargmax_body()
75{
76	argmax=$(sysctl -n kern.argmax)
77	atf_check -o file:${SRCDIR}/regress.nargmax.out \
78	    xargs -n$((argmax)) <${SRCDIR}/regress.in
79	atf_check -s exit:1 -e match:"too large" \
80	    xargs -n$((argmax+1)) <${SRCDIR}/regress.in
81}
82
83atf_test_case xargs_n2P0
84xargs_n2P0_body()
85{
86	atf_check -o save:regress.out \
87	    xargs -n2 -P0 echo <${SRCDIR}/regress.in
88	atf_check -o file:${SRCDIR}/regress.n2P0.out \
89	    sort regress.out
90}
91
92atf_test_case xargs_n3
93xargs_n3_body()
94{
95	atf_check -o file:${SRCDIR}/regress.n3.out \
96	    xargs -n3 echo <${SRCDIR}/regress.in
97}
98
99atf_test_case xargs_0
100xargs_0_body()
101{
102	atf_check -o file:${SRCDIR}/regress.0.out \
103	    xargs -0 -n1 echo <${SRCDIR}/regress.0.in
104}
105
106atf_test_case xargs_0I
107xargs_0I_body()
108{
109	atf_check -o file:${SRCDIR}/regress.0I.out \
110	    xargs -0 -I% echo The % %% % <${SRCDIR}/regress.0.in
111}
112
113atf_test_case xargs_0J
114xargs_0J_body()
115{
116	atf_check -o file:${SRCDIR}/regress.0J.out \
117	    xargs -0 -J% echo The % again. <${SRCDIR}/regress.0.in
118}
119
120atf_test_case xargs_0L
121xargs_0L_body()
122{
123	atf_check -o file:${SRCDIR}/regress.0L.out \
124	    xargs -0 -L2 echo <${SRCDIR}/regress.0.in
125}
126
127atf_test_case xargs_0P1
128xargs_0P1_body()
129{
130	atf_check -o file:${SRCDIR}/regress.0P1.out \
131	    xargs -0 -P1 echo <${SRCDIR}/regress.0.in
132}
133
134atf_test_case xargs_quotes
135xargs_quotes_body()
136{
137	atf_check -o file:${SRCDIR}/regress.quotes.out \
138	    xargs -n1 echo <${SRCDIR}/regress.quotes.in
139}
140
141atf_test_case xargs_parallel1
142xargs_parallel1_body()
143{
144	echo /var/empty /var/empty >input
145	atf_check xargs -n1 -P2 test -d <input
146}
147
148atf_test_case xargs_parallel2
149xargs_parallel2_body()
150{
151	echo /var/empty /var/empty/nodir >input
152	atf_check -s exit:1 xargs -n1 -P2 test -d <input
153}
154
155atf_test_case xargs_parallel3
156xargs_parallel3_body()
157{
158	echo /var/empty/nodir /var/empty >input
159	atf_check -s exit:1 xargs -n1 -P2 test -d <input
160}
161
162atf_test_case xargs_parallel4
163xargs_parallel4_body()
164{
165	echo /var/empty/nodir /var/empty/nodir >input
166	atf_check -s exit:1 xargs -n1 -P2 test -d <input
167}
168
169atf_init_test_cases()
170{
171	atf_add_test_case xargs_normal
172	atf_add_test_case xargs_I
173	atf_add_test_case xargs_J
174	atf_add_test_case xargs_L
175	atf_add_test_case xargs_P1
176	atf_add_test_case xargs_R
177	atf_add_test_case xargs_R_1
178	atf_add_test_case xargs_n1
179	atf_add_test_case xargs_n2
180	atf_add_test_case xargs_nargmax
181	atf_add_test_case xargs_n2P0
182	atf_add_test_case xargs_n3
183	atf_add_test_case xargs_0
184	atf_add_test_case xargs_0I
185	atf_add_test_case xargs_0J
186	atf_add_test_case xargs_0L
187	atf_add_test_case xargs_0P1
188	atf_add_test_case xargs_quotes
189	atf_add_test_case xargs_parallel1
190	atf_add_test_case xargs_parallel2
191	atf_add_test_case xargs_parallel3
192	atf_add_test_case xargs_parallel4
193}
194