• 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#
25TST_ID="ar01"
26TST_CNT=17
27TST_TESTFUNC=test
28TST_NEEDS_TMPDIR=1
29. tst_test.sh
30
31test1()
32{
33	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
34	ROD ar -ra file1.in lib.a $TST_DATAROOT/file2.in
35	ROD ar -t lib.a \> ar.out
36
37	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
38
39	if diff ar.out ar.exp >/dev/null; then
40		tst_res TPASS "ar added new file after another (-a)"
41	else
42		tst_res TFAIL "ar failed to add new file after another (-a)"
43		cat ar.out
44	fi
45
46	ROD rm lib.a
47}
48
49test2()
50{
51	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
52		         $TST_DATAROOT/file3.in $TST_DATAROOT/file4.in
53	ROD ar -ma file1.in lib.a file4.in
54	ROD ar -t lib.a \> ar.out
55
56	printf "file1.in\nfile4.in\nfile2.in\nfile3.in\n" > ar.exp
57
58	if diff ar.out ar.exp > /dev/null; then
59		tst_res TPASS "ar moved file correctly (-ma)"
60	else
61		tst_res TFAIL "ar failed to move file (-ma)"
62		cat ar.out
63	fi
64
65	ROD rm lib.a
66}
67
68test3()
69{
70	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
71	ROD ar -rb file3.in lib.a $TST_DATAROOT/file2.in
72	ROD ar -t lib.a \> ar.out
73
74	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
75
76	if diff ar.out ar.exp; then
77		tst_res TPASS "ar added new file before another (-b)"
78	else
79		tst_res TFAIL "ar failed to add new file before another (-b)"
80		cat ar.out
81	fi
82
83	ROD rm lib.a
84}
85
86test4()
87{
88	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
89	                 $TST_DATAROOT/file2.in
90	ROD ar -mb file3.in lib.a file2.in
91	ROD ar -t lib.a \> ar.out
92
93	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
94
95	if diff ar.out ar.exp > /dev/null; then
96		tst_res TPASS "ar moved file correctly (-mb)"
97	else
98		tst_res TFAIL "ar failed to move file (-mb)"
99		cat ar.out
100	fi
101
102	ROD rm lib.a
103}
104
105test5()
106{
107	ROD ar -cr lib.a $TST_DATAROOT/file1.in \> ar.out
108
109	if [ -s ar.out ]; then
110		tst_res TFAIL "ar produced output unexpectedly (-c)"
111		cat ar.out
112	else
113		tst_res TPASS "ar haven't produced output (-c)"
114	fi
115
116	ROD rm lib.a
117}
118
119test6()
120{
121	ROD ar -qc lib.a $TST_DATAROOT/file1.in \> ar.out
122
123	if [ -s ar.out ]; then
124		tst_res TFAIL "ar produced output unexpectedly (-qc)"
125		cat ar.out
126	else
127		tst_res TPASS "ar haven't produced output (-qc)"
128	fi
129
130	ROD rm lib.a
131}
132
133test7()
134{
135	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
136	                 $TST_DATAROOT/file3.in
137	ROD ar -d lib.a file1.in file2.in
138	ROD ar -t lib.a \> ar.out
139
140	printf "file3.in\n" > ar.exp
141
142	if diff ar.out ar.exp > /dev/null; then
143		tst_res TPASS "ar deleted files correctly (-d)"
144	else
145		tst_res TFAIL "ar messed up when deleting files (-d)"
146		cat ar.out
147	fi
148
149	ROD rm lib.a
150}
151
152test8()
153{
154	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
155	                 $TST_DATAROOT/file3.in
156	ROD ar -d lib.a
157	ROD ar -t lib.a \> ar.out
158
159	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
160
161	if diff ar.out ar.exp > /dev/null; then
162		tst_res TPASS "ar deleted nothing (-d with empty list)"
163	else
164		tst_res TFAIL "ar deleted files (-d with empty list)"
165		cat ar.out
166	fi
167
168	ROD rm lib.a
169}
170
171test9()
172{
173	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in
174	ROD ar -ri file3.in lib.a $TST_DATAROOT/file2.in
175	ROD ar -t lib.a \> ar.out
176
177	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
178
179	if diff ar.out ar.exp >/dev/null; then
180		tst_res TPASS "ar added new file before another (-i)"
181	else
182		tst_res TFAIL "ar failed to add new file before another (-i"
183		cat ar.out
184	fi
185
186	ROD rm lib.a
187}
188
189test10()
190{
191	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
192	                 $TST_DATAROOT/file2.in
193	ROD ar -mi file3.in lib.a file2.in
194	ROD ar -t lib.a \> ar.out
195
196	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
197
198	if diff ar.out ar.exp > /dev/null; then
199		tst_res TPASS "ar moved file correctly (-mi)"
200	else
201		tst_res TFAIL "ar failed to move file (-mi)"
202		cat ar.out
203	fi
204
205	ROD rm lib.a
206}
207
208test11()
209{
210	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file3.in \
211	                 $TST_DATAROOT/file2.in
212	ROD ar -m lib.a file3.in
213	ROD ar -t lib.a \> ar.out
214
215	printf "file1.in\nfile2.in\nfile3.in\n" > ar.exp
216
217	if diff ar.out ar.exp > /dev/null; then
218		tst_res TPASS "ar moved file correctly (-m)"
219	else
220		tst_res TFAIL "ar failed to move file (-m)"
221		cat ar.out
222	fi
223
224	ROD rm lib.a
225}
226
227test12()
228{
229	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
230	                 $TST_DATAROOT/file3.in
231	ROD ar -p lib.a \> ar.out
232
233	printf "This is file one\nThis is file two\nThis is file three\n" > ar.exp
234
235	if diff ar.out ar.exp > /dev/null; then
236		tst_res TPASS "ar printed file content correctly (-p)"
237	else
238		tst_res TFAIL "ar failed to print file content (-p)"
239		cat ar.out
240	fi
241
242	ROD rm lib.a
243}
244
245test13()
246{
247
248	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
249	                 $TST_DATAROOT/file3.in
250	ROD ar -q lib.a $TST_DATAROOT/file4.in
251	ROD ar -t lib.a \> ar.out
252
253	printf "file1.in\nfile2.in\nfile3.in\nfile4.in\n" > ar.exp
254
255	if diff ar.out ar.exp > /dev/null; then
256		tst_res TPASS "ar appended file correctly (-q)"
257	else
258		tst_res TFAIL "ar failed to append file (-q)"
259		cat ar.out
260	fi
261
262	ROD rm lib.a
263}
264
265test14()
266{
267	ROD touch file0.in
268	ROD ar -cr lib.a file0.in $TST_DATAROOT/file1.in
269
270	file0_mtime1=$(ar -tv lib.a | grep file0.in)
271	file1_mtime1=$(ar -tv lib.a | grep file1.in)
272
273	touch -c -t $(date --date='next day' +"%Y%m%d%H%M") file0.in
274
275	ROD ar -ru lib.a file0.in $TST_DATAROOT/file1.in
276
277	file0_mtime2=$(ar -tv lib.a | grep file0.in)
278	file1_mtime2=$(ar -tv lib.a | grep file1.in)
279
280	if [ "$file0_mtime1" = "$file0_mtime2" ]; then
281		tst_res TFAIL "ar updated modified file0 (-u)"
282	else
283		tst_res TPASS "ar haven't updated modified file0 (-u)"
284	fi
285
286	if [ "$file1_mtime1" = "$file1_mtime2" ]; then
287		tst_res TPASS "ar haven't updated unmodified file1 (-u)"
288	else
289		tst_res TFAIL "ar updated unmodified file1 (-u)"
290	fi
291
292	ROD rm lib.a file0.in
293}
294
295test15()
296{
297	ROD ar -cr lib.a $TST_DATAROOT/file1.in
298	ROD ar -tv lib.a \> ar.out
299
300	if grep -q '[rwx-]\{9\} [0-9].*/[0-9].*\s*[0-9].*.*file1.in' ar.out; then
301		tst_res TPASS "ar verbose listing works (-tv)"
302	else
303		tst_res TFAIL "ar verbose listing failed (-tv)"
304		cat ar.out
305	fi
306
307	ROD rm lib.a
308}
309
310test16()
311{
312	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in \
313	                 $TST_DATAROOT/file3.in
314	ROD ar -xv lib.a \> ar.out
315
316	printf "x - file1.in\nx - file2.in\nx - file3.in\n" > ar.exp
317
318	if diff ar.out ar.exp > /dev/null; then
319		tst_res TPASS "ar printed extracted filenames (-xv)"
320	else
321		tst_res TFAIL "ar failed to print extracted filenames (-xv)"
322		cat ar.out
323	fi
324
325	if [ -e file1.in -a -e file2.in -a -e file3.in ]; then
326		tst_res TPASS "ar extracted files correctly"
327	else
328		tst_res TFAIL "ar failed to extract files"
329	fi
330
331	ROD rm -f lib.a file1.in file2.in file3.in
332}
333
334test17()
335{
336	ROD ar -cr lib.a $TST_DATAROOT/file1.in $TST_DATAROOT/file2.in
337	ROD ar -xv lib.a file2.in \> ar.out
338
339	printf "x - file2.in\n" > ar.exp
340
341	if diff ar.out ar.exp > /dev/null; then
342		tst_res TPASS "ar printed extracted filename (-xv)"
343	else
344		tst_res TFAIL "ar failed to print extracted filename (-xv)"
345		cat ar.out
346	fi
347
348	if [ -e file2.in ]; then
349		tst_res TPASS "ar extracted file correctly"
350	else
351		tst_res TFAIL "ar failed to extract file"
352	fi
353
354	ROD rm -f lib.a file2.in
355}
356
357tst_run
358