1#!/bin/sh
2#
3# Test the _abspath function, utilized as part of abspath.sh
4#
5#    Copyright (C) 2010, Cisco Systems Inc.
6#
7#    This program is free software; you can redistribute it and/or modify
8#    it under the terms of the GNU General Public License as published by
9#    the Free Software Foundation; either version 2 of the License, or
10#    (at your option) any later version.
11#
12#    This program is distributed in the hope that it will be useful,
13#    but WITHOUT ANY WARRANTY; without even the implied warranty of
14#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15#    GNU General Public License for more details.
16#
17#    You should have received a copy of the GNU General Public License along
18#    with this program; if not, write to the Free Software Foundation, Inc.,
19#    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20#
21# Garrett Cooper, January 2010
22#
23
24SCRIPTS_DIR="$(readlink -f ${0%/*}/..)"
25TEST_PATH=$("$SCRIPTS_DIR/realpath.sh" "$SCRIPTS_DIR/lib")
26
27pushd "$TEST_PATH" >/dev/null
28
29set --	\
30	:$PWD								\
31	.:$PWD								\
32	foo/bar:$PWD/foo/bar						\
33	/foo/bar:/foo/bar						\
34	/foo/../bar:/bar				 		\
35	/foo/bar/../baz:/foo/baz				 	\
36	/foo/bar/../baz/:/foo/baz				 	\
37	/foo/../bar/:/bar 						\
38	/foo/../bar/..:/ 						\
39	/foo/../bar/../:/ 						\
40	/foo/bar/../baz:/foo/baz				 	\
41	/foo/./bar:/foo/bar				 		\
42	/./foo/./bar:/foo/bar						\
43	/foo//bar:/foo/bar						\
44	//foo/bar:/foo/bar						\
45	//////foo/bar:/foo/bar						\
46	/foo/////bar:/foo/bar						\
47	/a/b/c/.././:/a/b						\
48	/.foo:/.foo							\
49	./.foo:$PWD/.foo						\
50	/.foo/.bar:/.foo/.bar						\
51	./.foo/.bar:$PWD/.foo/.bar					\
52	/scratch/ltp/testcases/realtime/../..:/scratch/ltp		\
53	..:$(dirname "$TEST_PATH")					\
54	../..:$(dirname "$(dirname "$TEST_PATH")")			\
55	testcases/kernel/controllers/libcontrollers/../../../..:$PWD
56
57export TCID=test_abspath
58export TST_TOTAL=$#
59export TST_COUNT=1
60
61. "$SCRIPTS_DIR/lib/file_functions.sh"
62
63for i in "$@"; do
64
65	test_string=${i%:*}
66	expected_string=${i#*:}
67
68	result=$(_abspath "$test_string")
69
70	if [ "$result" = "$expected_string" ] ; then
71		result_s="matches expected string _abspath(${test_string}) => $result == $expected_string)"
72		result_v=TPASS
73	else
74		result_s="doesn't match expected string _abspath(${test_string}) => $result != $expected_string)"
75		result_v=TFAIL
76		FAILED=1
77	fi
78
79	tst_resm $result_v "Test string $result_s"
80
81	: $(( TST_COUNT += 1 ))
82
83done
84
85popd >/dev/null
86
87expected_string="$PWD"
88test_string='""'
89result=$("$SCRIPTS_DIR/abspath.sh" "")
90
91if [ "$result" = "$expected_string" ] ; then
92	result_s="matches expected string abspath.sh ${test_string} => $result == $expected_string)"
93	result_v=TPASS
94else
95	result_s="doesn't match expected string abspath.sh ${test_string} => $result != $expected_string)"
96	result_v=TFAIL
97	FAILED=1
98fi
99
100tst_resm $result_v "Test string $result_s"
101
102: $(( TST_COUNT += 1 ))
103
104expected_string="$PWD $PWD"
105test_string="\"\" ."
106result=$("$SCRIPTS_DIR/abspath.sh" "" .)
107
108if [ "$result" = "$expected_string" ] ; then
109	result_s="matches expected string abspath.sh ${test_string} => $result == $expected_string)"
110	result_v=TPASS
111else
112	result_s="doesn't match expected string abspath.sh ${test_string} => $result != $expected_string)"
113	result_v=TFAIL
114	FAILED=1
115fi
116
117tst_resm $result_v "Test string $result_s"
118
119: $(( TST_COUNT += 1 ))
120
121exit ${FAILED:=0}
122