1206150Sjilles# $FreeBSD: releng/11.0/bin/sh/tests/expansion/tilde2.0 206150 2010-04-03 22:04:44Z jilles $
2206150Sjilles
3206150SjillesHOME=/tmp
4206150Sjillesroothome=~root
5206150Sjillesif [ "$roothome" = "~root" ]; then
6206150Sjilles	echo "~root is not expanded!"
7206150Sjilles	exit 2
8206150Sjillesfi
9206150Sjilles
10206150Sjillestestcase() {
11206150Sjilles	code="$1"
12206150Sjilles	expected="$2"
13206150Sjilles	oIFS="$IFS"
14206150Sjilles	eval "$code"
15206150Sjilles	IFS='|'
16206150Sjilles	result="$#|$*"
17206150Sjilles	IFS="$oIFS"
18206150Sjilles	if [ "x$result" = "x$expected" ]; then
19206150Sjilles		ok=x$ok
20206150Sjilles	else
21206150Sjilles		failures=x$failures
22206150Sjilles		echo "For $code, expected $expected actual $result"
23206150Sjilles	fi
24206150Sjilles}
25206150Sjilles
26206150Sjillestestcase 'set -- ${$+~}'			'1|/tmp'
27206150Sjillestestcase 'set -- ${$+~/}'			'1|/tmp/'
28206150Sjillestestcase 'set -- ${$+~/foo}'			'1|/tmp/foo'
29206150Sjillestestcase 'set -- ${$+x~}'			'1|x~'
30206150Sjillestestcase 'set -- ${$+~root}'			"1|$roothome"
31206150Sjillestestcase 'set -- ${$+"~"}'			'1|~'
32206150Sjillestestcase 'set -- ${$+"~/"}'			'1|~/'
33206150Sjillestestcase 'set -- ${$+"~/foo"}'			'1|~/foo'
34206150Sjillestestcase 'set -- ${$+"x~"}'			'1|x~'
35206150Sjillestestcase 'set -- ${$+"~root"}'			"1|~root"
36206150Sjillestestcase 'set -- "${$+~}"'			'1|~'
37206150Sjillestestcase 'set -- "${$+~/}"'			'1|~/'
38206150Sjillestestcase 'set -- "${$+~/foo}"'			'1|~/foo'
39206150Sjillestestcase 'set -- "${$+x~}"'			'1|x~'
40206150Sjillestestcase 'set -- "${$+~root}"'			"1|~root"
41206150Sjillestestcase 'set -- ${HOME#~}'			'0|'
42206150Sjillesh=~
43206150Sjillestestcase 'set -- "$h"'				'1|/tmp'
44206150Sjillesf=~/foo
45206150Sjillestestcase 'set -- "$f"'				'1|/tmp/foo'
46206150Sjillestestcase 'set -- ${f#~}'			'1|/foo'
47206150Sjillestestcase 'set -- ${f#~/}'			'1|foo'
48206150Sjilles
49206150SjillesooIFS=$IFS
50206150SjillesIFS=m
51206150Sjillestestcase 'set -- ${$+~}'			'1|/tmp'
52206150Sjillestestcase 'set -- ${$+~/foo}'			'1|/tmp/foo'
53206150Sjillestestcase 'set -- ${$+$h}'			'2|/t|p'
54206150Sjillestestcase 'set -- ${HOME#~}'			'0|'
55206150SjillesIFS=$ooIFS
56206150Sjilles
57206150Sjillest=\~
58206150Sjillestestcase 'set -- ${$+$t}'			'1|~'
59206150Sjillesr=$(cat <<EOF
60206150Sjilles${HOME#~}
61206150SjillesEOF
62206150Sjilles)
63206150Sjillestestcase 'set -- $r'				'0|'
64206150Sjillesr=$(cat <<EOF
65206150Sjilles${HOME#'~'}
66206150SjillesEOF
67206150Sjilles)
68206150Sjillestestcase 'set -- $r'				'1|/tmp'
69206150Sjillesr=$(cat <<EOF
70206150Sjilles${t#'~'}
71206150SjillesEOF
72206150Sjilles)
73206150Sjillestestcase 'set -- $r'				'0|'
74206150Sjillesr=$(cat <<EOF
75206150Sjilles${roothome#~root}
76206150SjillesEOF
77206150Sjilles)
78206150Sjillestestcase 'set -- $r'				'0|'
79206150Sjillesr=$(cat <<EOF
80206150Sjilles${f#~}
81206150SjillesEOF
82206150Sjilles)
83206150Sjillestestcase 'set -- $r'				'1|/foo'
84206150Sjillesr=$(cat <<EOF
85206150Sjilles${f#~/}
86206150SjillesEOF
87206150Sjilles)
88206150Sjillestestcase 'set -- $r'				'1|foo'
89206150Sjilles
90206150Sjillestest "x$failures" = x
91