xref: /freebsd/bin/sh/tests/expansion/trim1.0 (revision d0b2dbfa)
113de33a5SJulio Merino
213de33a5SJulio Merinoe= q='?' a='*' t=texttext s='ast*que?non' p='/et[c]/' w='a b c' b='{{(#)}}'
313de33a5SJulio Merinoh='##'
413de33a5SJulio Merinofailures=''
513de33a5SJulio Merinook=''
613de33a5SJulio Merino
713de33a5SJulio Merinotestcase() {
813de33a5SJulio Merino	code="$1"
913de33a5SJulio Merino	expected="$2"
1013de33a5SJulio Merino	oIFS="$IFS"
1113de33a5SJulio Merino	eval "$code"
1213de33a5SJulio Merino	IFS='|'
1313de33a5SJulio Merino	result="$#|$*"
1413de33a5SJulio Merino	IFS="$oIFS"
1513de33a5SJulio Merino	if [ "x$result" = "x$expected" ]; then
1613de33a5SJulio Merino		ok=x$ok
1713de33a5SJulio Merino	else
1813de33a5SJulio Merino		failures=x$failures
1913de33a5SJulio Merino		echo "For $code, expected $expected actual $result"
2013de33a5SJulio Merino	fi
2113de33a5SJulio Merino}
2213de33a5SJulio Merino
2313de33a5SJulio Merinotestcase 'set -- ${t%t}'			'1|texttex'
2413de33a5SJulio Merinotestcase 'set -- "${t%t}"'			'1|texttex'
2513de33a5SJulio Merinotestcase 'set -- ${t%e*}'			'1|textt'
2613de33a5SJulio Merinotestcase 'set -- "${t%e*}"'			'1|textt'
2713de33a5SJulio Merinotestcase 'set -- ${t%%e*}'			'1|t'
2813de33a5SJulio Merinotestcase 'set -- "${t%%e*}"'			'1|t'
2913de33a5SJulio Merinotestcase 'set -- ${t%%*}'			'0|'
3013de33a5SJulio Merinotestcase 'set -- "${t%%*}"'			'1|'
3113de33a5SJulio Merinotestcase 'set -- ${t#t}'			'1|exttext'
3213de33a5SJulio Merinotestcase 'set -- "${t#t}"'			'1|exttext'
3313de33a5SJulio Merinotestcase 'set -- ${t#*x}'			'1|ttext'
3413de33a5SJulio Merinotestcase 'set -- "${t#*x}"'			'1|ttext'
3513de33a5SJulio Merinotestcase 'set -- ${t##*x}'			'1|t'
3613de33a5SJulio Merinotestcase 'set -- "${t##*x}"'			'1|t'
3713de33a5SJulio Merinotestcase 'set -- ${t##*}'			'0|'
3813de33a5SJulio Merinotestcase 'set -- "${t##*}"'			'1|'
3913de33a5SJulio Merinotestcase 'set -- ${t%e$a}'			'1|textt'
4013de33a5SJulio Merino
4113de33a5SJulio Merinoset -f
4213de33a5SJulio Merinotestcase 'set -- ${s%[?]*}'			'1|ast*que'
4313de33a5SJulio Merinotestcase 'set -- "${s%[?]*}"'			'1|ast*que'
4413de33a5SJulio Merinotestcase 'set -- ${s%[*]*}'			'1|ast'
4513de33a5SJulio Merinotestcase 'set -- "${s%[*]*}"'			'1|ast'
4613de33a5SJulio Merinoset +f
4713de33a5SJulio Merino
4813de33a5SJulio Merinotestcase 'set -- $b'				'1|{{(#)}}'
4913de33a5SJulio Merinotestcase 'set -- ${b%\}}'			'1|{{(#)}'
5013de33a5SJulio Merinotestcase 'set -- ${b#{}'			'1|{(#)}}'
5113de33a5SJulio Merinotestcase 'set -- "${b#{}"'			'1|{(#)}}'
5213de33a5SJulio Merino# Parentheses are special in ksh, check that they can be escaped
5313de33a5SJulio Merinotestcase 'set -- ${b%\)*}'			'1|{{(#'
5413de33a5SJulio Merinotestcase 'set -- ${b#{}'			'1|{(#)}}'
5513de33a5SJulio Merinotestcase 'set -- $h'				'1|##'
5613de33a5SJulio Merinotestcase 'set -- ${h#\#}'			'1|#'
5713de33a5SJulio Merinotestcase 'set -- ${h###}'			'1|#'
5813de33a5SJulio Merinotestcase 'set -- "${h###}"'			'1|#'
5913de33a5SJulio Merinotestcase 'set -- ${h%#}'			'1|#'
6013de33a5SJulio Merinotestcase 'set -- "${h%#}"'			'1|#'
6113de33a5SJulio Merino
6213de33a5SJulio Merinoset -f
6313de33a5SJulio Merinotestcase 'set -- ${s%"${s#?}"}'			'1|a'
6413de33a5SJulio Merinotestcase 'set -- ${s%"${s#????}"}'		'1|ast*'
6513de33a5SJulio Merinotestcase 'set -- ${s%"${s#????????}"}'		'1|ast*que?'
6613de33a5SJulio Merinotestcase 'set -- ${s#"${s%?}"}'			'1|n'
6713de33a5SJulio Merinotestcase 'set -- ${s#"${s%????}"}'		'1|?non'
6813de33a5SJulio Merinotestcase 'set -- ${s#"${s%????????}"}'		'1|*que?non'
6913de33a5SJulio Merinoset +f
7013de33a5SJulio Merinotestcase 'set -- "${s%"${s#?}"}"'		'1|a'
7113de33a5SJulio Merinotestcase 'set -- "${s%"${s#????}"}"'		'1|ast*'
7213de33a5SJulio Merinotestcase 'set -- "${s%"${s#????????}"}"'	'1|ast*que?'
7313de33a5SJulio Merinotestcase 'set -- "${s#"${s%?}"}"'		'1|n'
7413de33a5SJulio Merinotestcase 'set -- "${s#"${s%????}"}"'		'1|?non'
7513de33a5SJulio Merinotestcase 'set -- "${s#"${s%????????}"}"'	'1|*que?non'
7613de33a5SJulio Merinotestcase 'set -- ${p#${p}}'			'1|/etc/'
7713de33a5SJulio Merinotestcase 'set -- "${p#${p}}"'			'1|/et[c]/'
7813de33a5SJulio Merinotestcase 'set -- ${p#*[[]}'			'1|c]/'
7913de33a5SJulio Merinotestcase 'set -- "${p#*[[]}"'			'1|c]/'
8013de33a5SJulio Merinotestcase 'set -- ${p#*\[}'			'1|c]/'
8113de33a5SJulio Merinotestcase 'set -- ${p#*"["}'			'1|c]/'
8213de33a5SJulio Merinotestcase 'set -- "${p#*"["}"'			'1|c]/'
8313de33a5SJulio Merino
8413de33a5SJulio Merinotest "x$failures" = x
85