#!/bin/sh
################################################################################
## ##
## Copyright (c) International Business Machines Corp., 2001 ##
## Author: Manoj Iyer, manjo@mail.utexas.edu ##
## Copyright (c) 2016 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 ##
## ##
################################################################################
#
# Basic test for ln
#
TST_CNT=6
TST_TESTFUNC=do_test
TST_SETUP=setup
TST_NEEDS_TMPDIR=1
. tst_test.sh
setup()
{
ROD mkdir -p dir/subdir
ROD echo "LTP" > file
ROD touch dir/file
}
check_dir_link()
{
local dname="$1"
local lname="$2"
ROD ls "$lname" > lname.out
ROD ls "$dname" > dname.out
if diff lname.out dname.out; then
tst_res TPASS "Directory and link content is equal"
else
tst_res TFAIL "Directory and link content differs"
cat lname.out
echo
cat dname.out
fi
}
check_file_link()
{
local fname="$1"
local lname="$2"
if diff $fname $lname; then
tst_res TPASS "File and link content is equal"
else
tst_res TFAIL "File and link content differs"
fi
}
ln_test()
{
local args="$1"
local src="$2"
local link="$3"
EXPECT_PASS ln $args $src $link
if [ -f $src ]; then
check_file_link $src $link
else
check_dir_link $src $link
fi
ROD rm $link
}
do_test()
{
case $1 in
1) ln_test "" "file" "file_link";;
2) ln_test "-s" "file" "file_link";;
3) ln_test "-s" "dir" "dir_link";;
4) ln_test "" "$PWD/file" "file_link";;
5) ln_test "-s" "$PWD/file" "file_link";;
6) ln_test "-s" "$PWD/dir" "dir_link";;
esac
}
tst_run