#! /bin/sh
################################################################################
##                                                                            ##
## Copyright (c) International Business Machines  Corp., 2001                 ##
##  Author:        Manoj Iyer, manjo@mail.utexas.edu                          ##
## Copyright (c) Cyril Hrubis <chrubis@suse.cz>                               ##
##                                                                            ##
## 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           ##
##                                                                            ##
################################################################################
#
# Tests basic functionality of unzip command.
#

TST_SETUP=setup
TST_TESTFUNC=do_test
TST_NEEDS_TMPDIR=1
TST_NEEDS_CMDS="unzip"
. tst_test.sh

setup()
{
	cat > unzip_exp.out <<EOF
Archive:  $TST_DATAROOT/test.zip
   creating: dir/
   creating: dir/d1/
   creating: dir/d2/
   creating: dir/d3/
   creating: dir/d4/
 extracting: dir/d1/f1
 extracting: dir/d1/f2
 extracting: dir/d1/f3
   creating: dir/d2/d1/
   creating: dir/d2/d2/
   creating: dir/d2/d3/
 extracting: dir/d2/f1
 extracting: dir/d2/f2
 extracting: dir/d2/f3
   creating: dir/d3/d1/
   creating: dir/d3/d2/
   creating: dir/d3/d3/
EOF
}

stable_ls()
{
	local i

	for i in $(echo "$1/*" | sort); do

		if ! [ -e "$i" ]; then
			return
		fi

		echo "$i"

		if [ -d "$i" ]; then
			stable_ls "$i"
		fi
	done
}

do_test()
{
	EXPECT_PASS unzip "$TST_DATAROOT/test.zip" \> unzip.out

	if diff -w unzip_exp.out unzip.out; then
		tst_res TPASS "Unzip output is correct"
	else
		tst_res TFAIL "Unzip output is incorrect"
		cat unzip.out
	fi

	stable_ls "dir" > dir.out

	if diff "$TST_DATAROOT/dir.out" dir.out; then
		tst_res TPASS "Files unzipped correctly"
	else
		tst_res TFAIL "Files unzipped incorrectly"
		cat dir.out
	fi

	ROD rm -rf "dir/"
}

tst_run
