1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# Copyright (c) International Business Machines Corp., 2001
4# Copyright (c) 2016 Cyril Hrubis <chrubis@suse.cz>
5# Author: Manoj Iyer <manjo@mail.utexas.edu>
6#
7# Basic test for ln
8
9TST_CNT=6
10TST_TESTFUNC=do_test
11TST_SETUP=setup
12TST_NEEDS_TMPDIR=1
13. tst_test.sh
14
15setup()
16{
17	ROD mkdir -p dir/subdir
18	ROD echo "LTP" > file
19	ROD touch dir/file
20}
21
22check_dir_link()
23{
24	local dname="$1"
25	local lname="$2"
26
27	ROD ls "$lname" > lname.out
28	ROD ls "$dname" > dname.out
29
30	if diff lname.out dname.out; then
31		tst_res TPASS "Directory and link content is equal"
32	else
33		tst_res TFAIL "Directory and link content differs"
34		cat lname.out
35		echo
36		cat dname.out
37	fi
38}
39
40check_file_link()
41{
42	local fname="$1"
43	local lname="$2"
44
45	if diff $fname $lname; then
46		tst_res TPASS "File and link content is equal"
47	else
48		tst_res TFAIL "File and link content differs"
49	fi
50}
51
52ln_test()
53{
54	local args="$1"
55	local src="$2"
56	local link="$3"
57
58	EXPECT_PASS ln $args $src $link
59
60	if [ -f $src ]; then
61		check_file_link $src $link
62	else
63		check_dir_link $src $link
64	fi
65
66	ROD rm $link
67}
68
69do_test()
70{
71	case $1 in
72	1) ln_test ""   "file"      "file_link";;
73	2) ln_test "-s" "file"      "file_link";;
74	3) ln_test "-s" "dir"       "dir_link";;
75	4) ln_test ""   "$PWD/file" "file_link";;
76	5) ln_test "-s" "$PWD/file" "file_link";;
77	6) ln_test "-s" "$PWD/dir"  "dir_link";;
78	esac
79}
80
81tst_run
82