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_ID="gzip" 32TST_CNT=2 33TST_TESTFUNC=test 34TST_NEEDS_TMPDIR=1 35TST_NEEDS_CMDS="gzip gunzip" 36. tst_test.sh 37 38creat_dirnfiles() 39{ 40 local numdirs=$2 41 local numfiles=$3 42 local dirname=$4 43 local dircnt=0 44 local fcnt=0 45 46 tst_res TINFO "Test #$1: Creating $numdirs directories" 47 tst_res TINFO "Test #$1: filling each dir with $numfiles files" 48 while [ $dircnt -lt $numdirs ]; do 49 dirname=$dirname/d.$dircnt 50 ROD_SILENT mkdir -p $dirname 51 52 fcnt=0 53 while [ $fcnt -lt $numfiles ]; do 54 ROD_SILENT touch $dirname/f.$fcnt 55 fcnt=$(($fcnt+1)) 56 done 57 dircnt=$(($dircnt+1)) 58 done 59} 60 61creat_expout() 62{ 63 local numdir=$1 64 local numfile=$2 65 local dirname=$3 66 local ext=$4 67 local dircnt=0 68 local fcnt=0 69 70 echo "$dirname:" 1> tst_gzip.exp 71 echo "d.$dircnt" 1>> tst_gzip.exp 72 while [ $dircnt -lt $numdirs ]; do 73 dirname=$dirname/d.$dircnt 74 dircnt=$(($dircnt+1)) 75 echo "$dirname:" 1>> tst_gzip.exp 76 if [ $dircnt -lt $numdirs ]; then 77 echo "d.$dircnt" 1>> tst_gzip.exp 78 fi 79 fcnt=0 80 while [ $fcnt -lt $numfiles ]; do 81 echo "f.$fcnt$ext " 1>> tst_gzip.exp 82 fcnt=$(($fcnt+1)) 83 done 84 printf "\n\n" 1>> tst_gzip.exp 85 done 86} 87 88test1() 89{ 90 numdirs=10 91 numfiles=10 92 dircnt=0 93 fcnt=0 94 95 ROD_SILENT mkdir tst_gzip.tmp 96 97 tst_res TINFO "Test #1: gzip -r will recursively compress contents" \ 98 "of directory" 99 100 creat_dirnfiles 1 $numdirs $numfiles tst_gzip.tmp 101 102 gzip -r tst_gzip.tmp > tst_gzip.err 2>&1 103 if [ $? -ne 0 ]; then 104 cat tst_gzip.err 105 tst_brk TFAIL "Test #1: gzip -r failed" 106 fi 107 108 tst_res TINFO "Test #1: creating output file" 109 ls -R tst_gzip.tmp > tst_gzip.out 2>&1 110 111 tst_res TINFO "Test #1: creating expected output file" 112 creat_expout $numdirs $numfiles tst_gzip.tmp .gz 113 114 diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1 115 if [ $? -ne 0 ]; then 116 cat tst_gzip.err 117 tst_res TFAIL "Test #1: gzip failed" 118 else 119 tst_res TPASS "Test #1: gzip -r success" 120 fi 121 122 ROD_SILENT rm -rf tst_gzip.tmp/ 123} 124 125test2() 126{ 127 numdirs=10 128 numfiles=10 129 dircnt=0 130 fcnt=0 131 132 ROD_SILENT mkdir tst_gzip.tmp 133 134 tst_res TINFO "Test #2: gunzip -r will recursively uncompress" \ 135 "contents of directory" 136 137 creat_dirnfiles 2 $numdirs $numfiles tst_gzip.tmp 138 139 gzip -r tst_gzip.tmp > tst_gzip.err 2>&1 140 if [ $? -ne 0 ]; then 141 cat tst_gzip.err 142 tst_brk TBROK "Test #2: compressing directory tst_gzip.tmp" \ 143 "failed" 144 fi 145 146 gunzip -r tst_gzip.tmp > tst_gzip.err 2>&1 147 if [ $? -ne 0 ]; then 148 cat tst_gzip.err 149 tst_brk TBROK "Test #2: uncompressing directory" \ 150 " tst_gzip.tmp failed" 151 fi 152 153 tst_res TINFO "Test #2: creating output file" 154 ls -R tst_gzip.tmp > tst_gzip.out 2>&1 155 156 tst_res TINFO "Test #2: creating expected output file" 157 creat_expout $numdirs $numfiles tst_gzip.tmp 158 159 tst_res TINFO "Test #2: comparing expected out and actual output file" 160 diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1 161 if [ $? -ne 0 ]; then 162 cat tst_gzip.err 163 tst_res TFAIL "Test #2: gunzip failed" 164 else 165 tst_res TPASS "Test #2: gunzip -r success" 166 fi 167 168 ROD_SILENT rm -rf tst_gzip.tmp/ 169} 170 171tst_run 172