| #!/bin/sh |
| ################################################################################ |
| ## ## |
| ## Copyright (c) International Business Machines Corp., 2001 ## |
| ## Author: Manoj Iyer, manjo@mail.utexas.edu ## |
| ## ## |
| ## This program is free software; you can redistribute it and#or modify ## |
| ## it under the terms of the GNU General Public License as published by ## |
| ## the Free Software Foundation; either version 2 of the License, or ## |
| ## (at your option) any later version. ## |
| ## ## |
| ## This program is distributed in the hope that it will be useful, but ## |
| ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## |
| ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## |
| ## for more details. ## |
| ## ## |
| ## You should have received a copy of the GNU General Public License ## |
| ## along with this program; if not, write to the Free Software ## |
| ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## |
| ## ## |
| ################################################################################ |
| # |
| # Description: Test basic functionality of gzip and gunzip command |
| # - Test #1: Test that gzip -r will travel directories and |
| # compress all the files available. |
| # |
| # - Test #2: Test that gunzip -r will travel directories and |
| # uncompress all the files available. |
| # |
| |
| TST_CNT=2 |
| TST_TESTFUNC=test |
| TST_NEEDS_TMPDIR=1 |
| TST_NEEDS_CMDS="gzip gunzip" |
| . tst_test.sh |
| |
| creat_dirnfiles() |
| { |
| local numdirs=$2 |
| local numfiles=$3 |
| local dirname=$4 |
| local dircnt=0 |
| local fcnt=0 |
| |
| tst_res TINFO "Test #$1: Creating $numdirs directories" |
| tst_res TINFO "Test #$1: filling each dir with $numfiles files" |
| while [ $dircnt -lt $numdirs ]; do |
| dirname=$dirname/d.$dircnt |
| ROD_SILENT mkdir -p $dirname |
| |
| fcnt=0 |
| while [ $fcnt -lt $numfiles ]; do |
| ROD_SILENT touch $dirname/f.$fcnt |
| fcnt=$(($fcnt+1)) |
| done |
| dircnt=$(($dircnt+1)) |
| done |
| } |
| |
| creat_expout() |
| { |
| local numdir=$1 |
| local numfile=$2 |
| local dirname=$3 |
| local ext=$4 |
| local dircnt=0 |
| local fcnt=0 |
| |
| echo "$dirname:" 1> tst_gzip.exp |
| echo "d.$dircnt" 1>> tst_gzip.exp |
| while [ $dircnt -lt $numdirs ]; do |
| dirname=$dirname/d.$dircnt |
| dircnt=$(($dircnt+1)) |
| echo "$dirname:" 1>> tst_gzip.exp |
| if [ $dircnt -lt $numdirs ]; then |
| echo "d.$dircnt" 1>> tst_gzip.exp |
| fi |
| fcnt=0 |
| while [ $fcnt -lt $numfiles ]; do |
| echo "f.$fcnt$ext " 1>> tst_gzip.exp |
| fcnt=$(($fcnt+1)) |
| done |
| printf "\n\n" 1>> tst_gzip.exp |
| done |
| } |
| |
| test1() |
| { |
| numdirs=10 |
| numfiles=10 |
| dircnt=0 |
| fcnt=0 |
| |
| ROD_SILENT mkdir tst_gzip.tmp |
| |
| tst_res TINFO "Test #1: gzip -r will recursively compress contents" \ |
| "of directory" |
| |
| creat_dirnfiles 1 $numdirs $numfiles tst_gzip.tmp |
| |
| gzip -r tst_gzip.tmp > tst_gzip.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_gzip.err |
| tst_brk TFAIL "Test #1: gzip -r failed" |
| fi |
| |
| tst_res TINFO "Test #1: creating output file" |
| ls -R tst_gzip.tmp > tst_gzip.out 2>&1 |
| |
| tst_res TINFO "Test #1: creating expected output file" |
| creat_expout $numdirs $numfiles tst_gzip.tmp .gz |
| |
| diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_gzip.err |
| tst_res TFAIL "Test #1: gzip failed" |
| else |
| tst_res TPASS "Test #1: gzip -r success" |
| fi |
| |
| ROD_SILENT rm -rf tst_gzip.tmp/ |
| } |
| |
| test2() |
| { |
| numdirs=10 |
| numfiles=10 |
| dircnt=0 |
| fcnt=0 |
| |
| ROD_SILENT mkdir tst_gzip.tmp |
| |
| tst_res TINFO "Test #2: gunzip -r will recursively uncompress" \ |
| "contents of directory" |
| |
| creat_dirnfiles 2 $numdirs $numfiles tst_gzip.tmp |
| |
| gzip -r tst_gzip.tmp > tst_gzip.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_gzip.err |
| tst_brk TBROK "Test #2: compressing directory tst_gzip.tmp" \ |
| "failed" |
| fi |
| |
| gunzip -r tst_gzip.tmp > tst_gzip.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_gzip.err |
| tst_brk TBROK "Test #2: uncompressing directory" \ |
| " tst_gzip.tmp failed" |
| fi |
| |
| tst_res TINFO "Test #2: creating output file" |
| ls -R tst_gzip.tmp > tst_gzip.out 2>&1 |
| |
| tst_res TINFO "Test #2: creating expected output file" |
| creat_expout $numdirs $numfiles tst_gzip.tmp |
| |
| tst_res TINFO "Test #2: comparing expected out and actual output file" |
| diff -w -B tst_gzip.out tst_gzip.exp > tst_gzip.err 2>&1 |
| if [ $? -ne 0 ]; then |
| cat tst_gzip.err |
| tst_res TFAIL "Test #2: gunzip failed" |
| else |
| tst_res TPASS "Test #2: gunzip -r success" |
| fi |
| |
| ROD_SILENT rm -rf tst_gzip.tmp/ |
| } |
| |
| tst_run |