• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2#
3# Copyright (c) International Business Machines  Corp., 2000
4#  06/01 Robbie Williamson (robbiew@us.ibm.com)
5# Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz>
6#
7# This program is free software;  you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY;  without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
15# the GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program;  if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20#
21#-----------------------------------------------------------------------
22#
23# This is a basic ar command test.
24#
25AR="${AR:=ar}"
26TST_CNT=17
27TST_TESTFUNC=test
28TST_NEEDS_TMPDIR=1
29TST_NEEDS_CMDS="$AR"
30
31. tst_test.sh
32
33test1()
34{
35	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
36	ROD ar -ra file1.in lib.a $TST_DATAROOT/file2.in
37	ROD ar -t lib.a \> ar.out
38
39	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
40
41	if diff ar.out ar.exp >/dev/null; then
42		tst_res TPASS "ar added new file after another (-a)"
43	else
44		tst_res TFAIL "ar failed to add new file after another (-a)"
45		cat ar.out
46	fi
47
48	ROD rm lib.a
49}
50
51test2()
52{
53	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
54		         $TST_DATAROOT/file3.in $TST_DATAROOT/file4.in
55	ROD ar -ma file1.in lib.a file4.in
56	ROD ar -t lib.a \> ar.out
57
58	printf "file1.in\nfile4.in\nfile2.in\nfile3.in\n" > ar.exp
59
60	if diff ar.out ar.exp > /dev/null; then
61		tst_res TPASS "ar moved file correctly (-ma)"
62	else
63		tst_res TFAIL "ar failed to move file (-ma)"
64		cat ar.out
65	fi
66
67	ROD rm lib.a
68}
69
70test3()
71{
72	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
73	ROD ar -rb file3.in lib.a $TST_DATAROOT/file2.in
74	ROD ar -t lib.a \> ar.out
75
76	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
77
78	if diff ar.out ar.exp; then
79		tst_res TPASS "ar added new file before another (-b)"
80	else
81		tst_res TFAIL "ar failed to add new file before another (-b)"
82		cat ar.out
83	fi
84
85	ROD rm lib.a
86}
87
88test4()
89{
90	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
91	                 $TST_DATAROOT/file2.in
92	ROD ar -mb file3.in lib.a file2.in
93	ROD ar -t lib.a \> ar.out
94
95	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
96
97	if diff ar.out ar.exp > /dev/null; then
98		tst_res TPASS "ar moved file correctly (-mb)"
99	else
100		tst_res TFAIL "ar failed to move file (-mb)"
101		cat ar.out
102	fi
103
104	ROD rm lib.a
105}
106
107test5()
108{
109	ROD ar -cr lib.a $TST_DATAROOT/file1.in \> ar.out
110
111	if [ -s ar.out ]; then
112		tst_res TFAIL "ar produced output unexpectedly (-c)"
113		cat ar.out
114	else
115		tst_res TPASS "ar haven't produced output (-c)"
116	fi
117
118	ROD rm lib.a
119}
120
121test6()
122{
123	ROD ar -qc lib.a $TST_DATAROOT/file1.in \> ar.out
124
125	if [ -s ar.out ]; then
126		tst_res TFAIL "ar produced output unexpectedly (-qc)"
127		cat ar.out
128	else
129		tst_res TPASS "ar haven't produced output (-qc)"
130	fi
131
132	ROD rm lib.a
133}
134
135test7()
136{
137	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
138	                 $TST_DATAROOT/file3.in
139	ROD ar -d lib.a file1.in file2.in
140	ROD ar -t lib.a \> ar.out
141
142	printf "file3.in\n" > ar.exp
143
144	if diff ar.out ar.exp > /dev/null; then
145		tst_res TPASS "ar deleted files correctly (-d)"
146	else
147		tst_res TFAIL "ar messed up when deleting files (-d)"
148		cat ar.out
149	fi
150
151	ROD rm lib.a
152}
153
154test8()
155{
156	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
157	                 $TST_DATAROOT/file3.in
158	ROD ar -d lib.a
159	ROD ar -t lib.a \> ar.out
160
161	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
162
163	if diff ar.out ar.exp > /dev/null; then
164		tst_res TPASS "ar deleted nothing (-d with empty list)"
165	else
166		tst_res TFAIL "ar deleted files (-d with empty list)"
167		cat ar.out
168	fi
169
170	ROD rm lib.a
171}
172
173test9()
174{
175	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
176	ROD ar -ri file3.in lib.a $TST_DATAROOT/file2.in
177	ROD ar -t lib.a \> ar.out
178
179	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
180
181	if diff ar.out ar.exp >/dev/null; then
182		tst_res TPASS "ar added new file before another (-i)"
183	else
184		tst_res TFAIL "ar failed to add new file before another (-i"
185		cat ar.out
186	fi
187
188	ROD rm lib.a
189}
190
191test10()
192{
193	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
194	                 $TST_DATAROOT/file2.in
195	ROD ar -mi file3.in lib.a file2.in
196	ROD ar -t lib.a \> ar.out
197
198	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
199
200	if diff ar.out ar.exp > /dev/null; then
201		tst_res TPASS "ar moved file correctly (-mi)"
202	else
203		tst_res TFAIL "ar failed to move file (-mi)"
204		cat ar.out
205	fi
206
207	ROD rm lib.a
208}
209
210test11()
211{
212	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
213	                 $TST_DATAROOT/file2.in
214	ROD ar -m lib.a file3.in
215	ROD ar -t lib.a \> ar.out
216
217	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
218
219	if diff ar.out ar.exp > /dev/null; then
220		tst_res TPASS "ar moved file correctly (-m)"
221	else
222		tst_res TFAIL "ar failed to move file (-m)"
223		cat ar.out
224	fi
225
226	ROD rm lib.a
227}
228
229test12()
230{
231	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
232	                 $TST_DATAROOT/file3.in
233	ROD ar -p lib.a \> ar.out
234
235	printf "This is file one\nThis is file two\nThis is file three\n" > ar.exp
236
237	if diff ar.out ar.exp > /dev/null; then
238		tst_res TPASS "ar printed file content correctly (-p)"
239	else
240		tst_res TFAIL "ar failed to print file content (-p)"
241		cat ar.out
242	fi
243
244	ROD rm lib.a
245}
246
247test13()
248{
249
250	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
251	                 $TST_DATAROOT/file3.in
252	ROD ar -q lib.a $TST_DATAROOT/file4.in
253	ROD ar -t lib.a \> ar.out
254
255	printf "file1.in\nfile2.in\nfile3.in\nfile4.in\n" > ar.exp
256
257	if diff ar.out ar.exp > /dev/null; then
258		tst_res TPASS "ar appended file correctly (-q)"
259	else
260		tst_res TFAIL "ar failed to append file (-q)"
261		cat ar.out
262	fi
263
264	ROD rm lib.a
265}
266
267test14()
268{
269	ROD touch file0.in
270	ROD ar -cr lib.a file0.in $TST_DATAROOT/file1.in
271
272	file0_mtime1=$(ar -tv lib.a | grep file0.in)
273	file1_mtime1=$(ar -tv lib.a | grep file1.in)
274
275	touch -c -t $(date --date='next day' +"%Y%m%d%H%M") file0.in
276
277	ROD ar -ru lib.a file0.in $TST_DATAROOT/file1.in
278
279	file0_mtime2=$(ar -tv lib.a | grep file0.in)
280	file1_mtime2=$(ar -tv lib.a | grep file1.in)
281
282	if [ "$file0_mtime1" = "$file0_mtime2" ]; then
283		tst_res TFAIL "ar haven't updated modified file0 (-u)"
284	else
285		tst_res TPASS "ar updated modified file0 (-u)"
286	fi
287
288	if [ "$file1_mtime1" = "$file1_mtime2" ]; then
289		tst_res TPASS "ar haven't updated unmodified file1 (-u)"
290	else
291		tst_res TFAIL "ar updated unmodified file1 (-u)"
292	fi
293
294	ROD rm lib.a file0.in
295}
296
297test15()
298{
299	ROD ar -cr lib.a $TST_DATAROOT/file1.in
300	ROD ar -tv lib.a \> ar.out
301
302	if grep -q '[rwx-]\{9\} [0-9].*/[0-9].*\s*[0-9].*.*file1.in' ar.out; then
303		tst_res TPASS "ar verbose listing works (-tv)"
304	else
305		tst_res TFAIL "ar verbose listing failed (-tv)"
306		cat ar.out
307	fi
308
309	ROD rm lib.a
310}
311
312test16()
313{
314	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
315	                 $TST_DATAROOT/file3.in
316	ROD ar -xv lib.a \> ar.out
317
318	printf "x - file1.in\nx - file2.in\nx - file3.in\n" > ar.exp
319
320	if diff ar.out ar.exp > /dev/null; then
321		tst_res TPASS "ar printed extracted filenames (-xv)"
322	else
323		tst_res TFAIL "ar failed to print extracted filenames (-xv)"
324		cat ar.out
325	fi
326
327	if [ -e file1.in -a -e file2.in -a -e file3.in ]; then
328		tst_res TPASS "ar extracted files correctly"
329	else
330		tst_res TFAIL "ar failed to extract files"
331	fi
332
333	ROD rm -f lib.a file1.in file2.in file3.in
334}
335
336test17()
337{
338	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in
339	ROD ar -xv lib.a file2.in \> ar.out
340
341	printf "x - file2.in\n" > ar.exp
342
343	if diff ar.out ar.exp > /dev/null; then
344		tst_res TPASS "ar printed extracted filename (-xv)"
345	else
346		tst_res TFAIL "ar failed to print extracted filename (-xv)"
347		cat ar.out
348	fi
349
350	if [ -e file2.in ]; then
351		tst_res TPASS "ar extracted file correctly"
352	else
353		tst_res TFAIL "ar failed to extract file"
354	fi
355
356	ROD rm -f lib.a file2.in
357}
358
359tst_run
360