t_id.sh revision 1.2 1 1.2 rillig # $NetBSD: t_id.sh,v 1.2 2024/04/28 07:27:42 rillig Exp $
2 1.1 jruoho #
3 1.1 jruoho # Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
4 1.1 jruoho # All rights reserved.
5 1.1 jruoho #
6 1.1 jruoho # Redistribution and use in source and binary forms, with or without
7 1.1 jruoho # modification, are permitted provided that the following conditions
8 1.1 jruoho # are met:
9 1.1 jruoho # 1. Redistributions of source code must retain the above copyright
10 1.1 jruoho # notice, this list of conditions and the following disclaimer.
11 1.1 jruoho # 2. Redistributions in binary form must reproduce the above copyright
12 1.1 jruoho # notice, this list of conditions and the following disclaimer in the
13 1.1 jruoho # documentation and/or other materials provided with the distribution.
14 1.1 jruoho #
15 1.1 jruoho # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
16 1.1 jruoho # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
17 1.1 jruoho # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 1.1 jruoho # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
19 1.1 jruoho # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 1.1 jruoho # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 1.1 jruoho # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 1.1 jruoho # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 1.1 jruoho # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 1.1 jruoho # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 1.1 jruoho # POSSIBILITY OF SUCH DAMAGE.
26 1.1 jruoho #
27 1.1 jruoho
28 1.1 jruoho create_run_id() {
29 1.1 jruoho cat >run_id.sh <<EOF
30 1.1 jruoho #! /bin/sh
31 1.1 jruoho [ -f ./id ] || ln -s $(atf_get_srcdir)/h_id ./id
32 1.1 jruoho ./id "\${@}"
33 1.1 jruoho EOF
34 1.1 jruoho chmod +x run_id.sh
35 1.1 jruoho }
36 1.1 jruoho
37 1.1 jruoho atf_test_case default
38 1.1 jruoho default_head() {
39 1.1 jruoho atf_set "descr" "Checks that the output without options is correct"
40 1.1 jruoho }
41 1.1 jruoho default_body() {
42 1.1 jruoho create_run_id
43 1.1 jruoho
44 1.1 jruoho echo "uid=100(test) gid=100(users) groups=100(users),0(wheel)" >expout
45 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh
46 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh 100
47 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh test
48 1.1 jruoho
49 1.1 jruoho echo "uid=0(root) gid=0(wheel) groups=0(wheel)" >expout
50 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh 0
51 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh root
52 1.1 jruoho
53 1.1 jruoho export LIBFAKE_EGID_ROOT=1 LIBFAKE_EUID_ROOT=1
54 1.1 jruoho echo "uid=100(test) gid=100(users) euid=0(root) egid=0(wheel) groups=100(users),0(wheel)" >expout
55 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh
56 1.1 jruoho unset LIBFAKE_EGID_ROOT LIBFAKE_EUID_ROOT
57 1.1 jruoho
58 1.1 jruoho echo 'id: nonexistent: No such user' >experr
59 1.2 rillig atf_check -s exit:1 -o empty -e file:experr ./run_id.sh nonexistent
60 1.1 jruoho
61 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr ./run_id.sh root nonexistent
62 1.2 rillig atf_check -s exit:0 -o ignore -e empty grep ^usage: stderr
63 1.1 jruoho }
64 1.1 jruoho
65 1.1 jruoho atf_test_case primaries
66 1.1 jruoho primaries_head() {
67 1.1 jruoho atf_set "descr" "Checks that giving multiple primaries" \
68 1.1 jruoho "simultaneously provides an error"
69 1.1 jruoho }
70 1.1 jruoho primaries_body() {
71 1.1 jruoho create_run_id
72 1.1 jruoho
73 1.1 jruoho for p1 in -G -g -p -u; do
74 1.1 jruoho for p2 in -G -g -p -u; do
75 1.1 jruoho if [ ${p1} != ${p2} ]; then
76 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr \
77 1.1 jruoho ./run_id.sh ${p1} ${p2}
78 1.2 rillig atf_check -s exit:0 -o ignore -e empty \
79 1.1 jruoho grep ^usage: stderr
80 1.1 jruoho fi
81 1.1 jruoho done
82 1.1 jruoho done
83 1.1 jruoho }
84 1.1 jruoho
85 1.1 jruoho atf_test_case Gflag
86 1.1 jruoho Gflag_head() {
87 1.1 jruoho atf_set "descr" "Checks that the -G primary flag works"
88 1.1 jruoho }
89 1.1 jruoho Gflag_body() {
90 1.1 jruoho create_run_id
91 1.1 jruoho
92 1.1 jruoho echo "100 0" >expout
93 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G
94 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G 100
95 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G test
96 1.1 jruoho
97 1.1 jruoho echo "users wheel" >expout
98 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G -n
99 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G -n 100
100 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G -n test
101 1.1 jruoho
102 1.1 jruoho echo "0" >expout
103 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G 0
104 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G root
105 1.1 jruoho
106 1.1 jruoho echo "wheel" >expout
107 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G -n 0
108 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -G -n root
109 1.1 jruoho
110 1.1 jruoho echo 'id: nonexistent: No such user' >experr
111 1.2 rillig atf_check -s exit:1 -o empty -e file:experr ./run_id.sh -G nonexistent
112 1.1 jruoho
113 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr ./run_id.sh -G root nonexistent
114 1.2 rillig atf_check -s exit:0 -o ignore -e empty grep ^usage: stderr
115 1.1 jruoho }
116 1.1 jruoho
117 1.1 jruoho atf_test_case gflag
118 1.1 jruoho gflag_head() {
119 1.1 jruoho atf_set "descr" "Checks that the -g primary flag works"
120 1.1 jruoho }
121 1.1 jruoho gflag_body() {
122 1.1 jruoho create_run_id
123 1.1 jruoho
124 1.1 jruoho echo "100" >expout
125 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g
126 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g 100
127 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g test
128 1.1 jruoho
129 1.1 jruoho echo "users" >expout
130 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n
131 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n 100
132 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n test
133 1.1 jruoho
134 1.1 jruoho echo "0" >expout
135 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g 0
136 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g root
137 1.1 jruoho
138 1.1 jruoho echo "wheel" >expout
139 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n 0
140 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n root
141 1.1 jruoho
142 1.1 jruoho echo "100" >expout
143 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r
144 1.1 jruoho
145 1.1 jruoho echo "users" >expout
146 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n
147 1.1 jruoho
148 1.1 jruoho echo "100" >expout
149 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r 100
150 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r test
151 1.1 jruoho
152 1.1 jruoho echo "users" >expout
153 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n 100
154 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n test
155 1.1 jruoho
156 1.1 jruoho export LIBFAKE_EGID_ROOT=1 LIBFAKE_EUID_ROOT=1
157 1.1 jruoho
158 1.1 jruoho echo "0" >expout
159 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g
160 1.1 jruoho
161 1.1 jruoho echo "wheel" >expout
162 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -n
163 1.1 jruoho
164 1.1 jruoho echo "100" >expout
165 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r
166 1.1 jruoho
167 1.1 jruoho echo "users" >expout
168 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n
169 1.1 jruoho
170 1.1 jruoho echo "100" >expout
171 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r 100
172 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r test
173 1.1 jruoho
174 1.1 jruoho echo "users" >expout
175 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n 100
176 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -g -r -n test
177 1.1 jruoho
178 1.1 jruoho unset LIBFAKE_EGID_ROOT LIBFAKE_EUID_ROOT
179 1.1 jruoho
180 1.1 jruoho echo 'id: nonexistent: No such user' >experr
181 1.2 rillig atf_check -s exit:1 -o empty -e file:experr ./run_id.sh -g nonexistent
182 1.1 jruoho
183 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr ./run_id.sh -g root nonexistent
184 1.2 rillig atf_check -s exit:0 -o ignore -e empty grep ^usage: stderr
185 1.1 jruoho }
186 1.1 jruoho
187 1.1 jruoho atf_test_case pflag
188 1.1 jruoho pflag_head() {
189 1.1 jruoho atf_set "descr" "Checks that the -p primary flag works"
190 1.1 jruoho }
191 1.1 jruoho pflag_body() {
192 1.1 jruoho create_run_id
193 1.1 jruoho
194 1.1 jruoho cat >expout <<EOF
195 1.1 jruoho uid test
196 1.1 jruoho groups users wheel
197 1.1 jruoho EOF
198 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p
199 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p 100
200 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p test
201 1.1 jruoho
202 1.1 jruoho cat >expout <<EOF
203 1.1 jruoho uid root
204 1.1 jruoho groups wheel
205 1.1 jruoho EOF
206 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p 0
207 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p root
208 1.1 jruoho
209 1.1 jruoho export LIBFAKE_EGID_ROOT=1 LIBFAKE_EUID_ROOT=1
210 1.1 jruoho cat >expout <<EOF
211 1.1 jruoho uid test
212 1.1 jruoho euid root
213 1.1 jruoho rgid users
214 1.1 jruoho groups users wheel
215 1.1 jruoho EOF
216 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -p
217 1.1 jruoho unset LIBFAKE_EGID_ROOT LIBFAKE_EUID_ROOT
218 1.1 jruoho
219 1.1 jruoho echo 'id: nonexistent: No such user' >experr
220 1.2 rillig atf_check -s exit:1 -o empty -e file:experr ./run_id.sh -p nonexistent
221 1.1 jruoho
222 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr ./run_id.sh -p root nonexistent
223 1.2 rillig atf_check -s exit:0 -o ignore -e empty grep ^usage: stderr
224 1.1 jruoho }
225 1.1 jruoho
226 1.1 jruoho atf_test_case uflag
227 1.1 jruoho uflag_head() {
228 1.1 jruoho atf_set "descr" "Checks that the -u primary flag works"
229 1.1 jruoho }
230 1.1 jruoho uflag_body() {
231 1.1 jruoho create_run_id
232 1.1 jruoho
233 1.1 jruoho echo "100" >expout
234 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u
235 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u 100
236 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u test
237 1.1 jruoho
238 1.1 jruoho echo "test" >expout
239 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n
240 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n 100
241 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n test
242 1.1 jruoho
243 1.1 jruoho echo "0" >expout
244 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u 0
245 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u root
246 1.1 jruoho
247 1.1 jruoho echo "root" >expout
248 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n 0
249 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n root
250 1.1 jruoho
251 1.1 jruoho echo "100" >expout
252 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r
253 1.1 jruoho
254 1.1 jruoho echo "test" >expout
255 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n
256 1.1 jruoho
257 1.1 jruoho echo "100" >expout
258 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r 100
259 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r test
260 1.1 jruoho
261 1.1 jruoho echo "test" >expout
262 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n 100
263 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n test
264 1.1 jruoho
265 1.1 jruoho export LIBFAKE_EGID_ROOT=1 LIBFAKE_EUID_ROOT=1
266 1.1 jruoho
267 1.1 jruoho echo "0" >expout
268 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u
269 1.1 jruoho
270 1.1 jruoho echo "root" >expout
271 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -n
272 1.1 jruoho
273 1.1 jruoho echo "100" >expout
274 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r
275 1.1 jruoho
276 1.1 jruoho echo "test" >expout
277 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n
278 1.1 jruoho
279 1.1 jruoho echo "100" >expout
280 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r 100
281 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r test
282 1.1 jruoho
283 1.1 jruoho echo "test" >expout
284 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n 100
285 1.2 rillig atf_check -s exit:0 -o file:expout -e empty ./run_id.sh -u -r -n test
286 1.1 jruoho
287 1.1 jruoho unset LIBFAKE_EGID_ROOT LIBFAKE_EUID_ROOT
288 1.1 jruoho
289 1.1 jruoho echo 'id: nonexistent: No such user' >experr
290 1.2 rillig atf_check -s exit:1 -o empty -e file:experr ./run_id.sh -u nonexistent
291 1.1 jruoho
292 1.2 rillig atf_check -s exit:1 -o empty -e save:stderr \
293 1.1 jruoho ./run_id.sh -u root nonexistent
294 1.2 rillig atf_check -s exit:0 -o ignore -e empty grep ^usage: stderr
295 1.1 jruoho }
296 1.1 jruoho
297 1.1 jruoho atf_init_test_cases()
298 1.1 jruoho {
299 1.1 jruoho atf_add_test_case default
300 1.1 jruoho atf_add_test_case primaries
301 1.1 jruoho atf_add_test_case Gflag
302 1.1 jruoho atf_add_test_case gflag
303 1.1 jruoho atf_add_test_case pflag
304 1.1 jruoho atf_add_test_case uflag
305 1.1 jruoho }
306