• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2################################################################################
3##                                                                            ##
4## Copyright (c) International Business Machines  Corp., 2001                 ##
5## Author:       Manoj Iyer, manjo@mail.utexas.edu                            ##
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, but        ##
13## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
14## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   ##
15## 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# Description:  Test basic functionality of gzip and gunzip command
24#		- Test #1:  Test that gzip -r will travel directories and
25#			    compress all the files available.
26#
27#		- Test #2:  Test that gunzip -r will travel directories and
28#			    uncompress all the files available.
29#
30
31TST_CNT=2
32TST_TESTFUNC=test
33TST_NEEDS_TMPDIR=1
34TST_NEEDS_CMDS="gzip gunzip"
35. tst_test.sh
36
37creat_dirnfiles()
38{
39	local numdirs=$2
40	local numfiles=$3
41	local dirname=$4
42	local dircnt=0
43	local fcnt=0
44
45	tst_res TINFO "Test #$1: Creating $numdirs directories"
46	tst_res TINFO "Test #$1: filling each dir with $numfiles files"
47	while [ $dircnt -lt $numdirs ]; do
48		dirname=$dirname/d.$dircnt
49		ROD_SILENT mkdir -p $dirname
50
51		fcnt=0
52		while [ $fcnt -lt $numfiles ]; do
53			ROD_SILENT touch $dirname/f.$fcnt
54			fcnt=$(($fcnt+1))
55		done
56		dircnt=$(($dircnt+1))
57	done
58}
59
60creat_expout()
61{
62	local numdir=$1
63	local numfile=$2
64	local dirname=$3
65	local ext=$4
66	local dircnt=0
67	local fcnt=0
68
69	echo "$dirname:"  1> tst_gzip.exp
70	echo "d.$dircnt"  1>> tst_gzip.exp
71	while [ $dircnt -lt $numdirs ]; do
72		dirname=$dirname/d.$dircnt
73		dircnt=$(($dircnt+1))
74		echo "$dirname:"  1>> tst_gzip.exp
75		if [ $dircnt -lt $numdirs ]; then
76			echo "d.$dircnt"  1>> tst_gzip.exp
77		fi
78		fcnt=0
79		while [ $fcnt -lt $numfiles ]; do
80			echo "f.$fcnt$ext " 1>> tst_gzip.exp
81			fcnt=$(($fcnt+1))
82		done
83		printf "\n\n" 1>> tst_gzip.exp
84	done
85}
86
87test1()
88{
89	numdirs=10
90	numfiles=10
91	dircnt=0
92	fcnt=0
93
94	ROD_SILENT mkdir tst_gzip.tmp
95
96	tst_res TINFO "Test #1: gzip -r will recursively compress contents" \
97			"of directory"
98
99	creat_dirnfiles 1 $numdirs $numfiles tst_gzip.tmp
100
101	gzip -r tst_gzip.tmp > tst_gzip.err 2>&1
102	if [ $? -ne 0 ]; then
103		cat tst_gzip.err
104		tst_brk TFAIL "Test #1: gzip -r failed"
105	fi
106
107	tst_res TINFO "Test #1: creating output file"
108	ls -R tst_gzip.tmp > tst_gzip.out 2>&1
109
110	tst_res TINFO "Test #1: creating expected output file"
111	creat_expout $numdirs $numfiles tst_gzip.tmp .gz
112
113	diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1
114	if [ $? -ne 0 ]; then
115		cat tst_gzip.err
116		tst_res TFAIL "Test #1: gzip failed"
117	else
118		tst_res TPASS "Test #1: gzip -r success"
119	fi
120
121	ROD_SILENT rm -rf tst_gzip.tmp/
122}
123
124test2()
125{
126	numdirs=10
127	numfiles=10
128	dircnt=0
129	fcnt=0
130
131	ROD_SILENT mkdir tst_gzip.tmp
132
133	tst_res TINFO "Test #2: gunzip -r will recursively uncompress" \
134			"contents of directory"
135
136	creat_dirnfiles 2 $numdirs $numfiles tst_gzip.tmp
137
138	gzip -r tst_gzip.tmp > tst_gzip.err 2>&1
139	if [ $? -ne 0 ]; then
140		cat tst_gzip.err
141		tst_brk TBROK "Test #2: compressing directory tst_gzip.tmp" \
142				"failed"
143	fi
144
145	gunzip -r tst_gzip.tmp > tst_gzip.err 2>&1
146	if [ $? -ne 0 ]; then
147		cat tst_gzip.err
148		tst_brk TBROK "Test #2: uncompressing directory" \
149				" tst_gzip.tmp failed"
150	fi
151
152	tst_res TINFO "Test #2: creating output file"
153	ls -R tst_gzip.tmp > tst_gzip.out 2>&1
154
155	tst_res TINFO "Test #2: creating expected output file"
156	creat_expout $numdirs $numfiles tst_gzip.tmp
157
158	tst_res TINFO "Test #2: comparing expected out and actual output file"
159	diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1
160	if [ $? -ne 0 ]; then
161		cat tst_gzip.err
162		tst_res TFAIL "Test #2: gunzip failed"
163	else
164		tst_res TPASS "Test #2: gunzip -r success"
165	fi
166
167	ROD_SILENT rm -rf tst_gzip.tmp/
168}
169
170tst_run
171