xref: /dflybsd-src/tools/regression/bin/sh/parser/heredoc9.0 (revision 3e3895bf4584c1562faf4533cbd97026ee6a8dcf)
1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/parser/heredoc9.0 221887 2011-05-14 14:19:30Z jilles $
22687e410SPeter Avalos
32687e410SPeter Avalos# It may be argued that
42687e410SPeter Avalos#   x=$(cat <<EOF
52687e410SPeter Avalos#   foo
62687e410SPeter Avalos#   EOF)
72687e410SPeter Avalos# is a valid complete command that sets x to foo, because
82687e410SPeter Avalos#   cat <<EOF
92687e410SPeter Avalos#   foo
102687e410SPeter Avalos#   EOF
112687e410SPeter Avalos# is a valid script even without the final newline.
122687e410SPeter Avalos# However, if the here-document is not within a new-style command substitution
132687e410SPeter Avalos# or there are other constructs nested inside the command substitution that
142687e410SPeter Avalos# need terminators, the delimiter at the start of a line followed by a close
152687e410SPeter Avalos# parenthesis is clearly a literal part of the here-document.
162687e410SPeter Avalos
172687e410SPeter Avalos# This file contains tests that also work with simplistic $(...) parsers.
182687e410SPeter Avalos
192687e410SPeter Avalosfailures=0
202687e410SPeter Avalos
212687e410SPeter Avaloscheck() {
222687e410SPeter Avalos	if ! eval "[ $* ]"; then
232687e410SPeter Avalos		echo "Failed: $*"
242687e410SPeter Avalos		: $((failures += 1))
252687e410SPeter Avalos	fi
262687e410SPeter Avalos}
272687e410SPeter Avalos
282687e410SPeter Avaloscheck '`${SH} -c "cat <<EOF
292687e410SPeter AvalosEOF)
302687e410SPeter AvalosEOF
312687e410SPeter Avalos"` = "EOF)"'
322687e410SPeter Avalos
332687e410SPeter Avaloscheck '`${SH} -c "(cat <<EOF
342687e410SPeter AvalosEOF)
352687e410SPeter AvalosEOF
362687e410SPeter Avalos)"` = "EOF)"'
372687e410SPeter Avalos
382687e410SPeter Avaloscheck '"`cat <<EOF
392687e410SPeter AvalosEOF x
402687e410SPeter AvalosEOF
412687e410SPeter Avalos`" = "EOF x"'
422687e410SPeter Avalos
432687e410SPeter Avaloscheck '"`cat <<EOF
442687e410SPeter AvalosEOF )
452687e410SPeter AvalosEOF
462687e410SPeter Avalos`" = "EOF )"'
472687e410SPeter Avalos
482687e410SPeter Avaloscheck '"`cat <<EOF
492687e410SPeter AvalosEOF)
502687e410SPeter AvalosEOF
512687e410SPeter Avalos`" = "EOF)"'
522687e410SPeter Avalos
532687e410SPeter Avaloscheck '"$(cat <<EOF
542687e410SPeter AvalosEOF x
552687e410SPeter AvalosEOF
562687e410SPeter Avalos)" = "EOF x"'
572687e410SPeter Avalos
582687e410SPeter Avalosexit $((failures != 0))
59