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