xref: /dflybsd-src/tools/regression/bin/sh/parser/heredoc10.0 (revision 3e3895bf4584c1562faf4533cbd97026ee6a8dcf)
1*3e3895bfSKrzysztof Piecuch# $FreeBSD: head/bin/sh/tests/parser/heredoc10.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 may not work with simplistic $(...) parsers.
182687e410SPeter Avalos# The open parentheses in comments help mksh, but not zsh.
192687e410SPeter Avalos
202687e410SPeter Avalosfailures=0
212687e410SPeter Avalos
222687e410SPeter Avaloscheck() {
232687e410SPeter Avalos	if ! eval "[ $* ]"; then
242687e410SPeter Avalos		echo "Failed: $*"
252687e410SPeter Avalos		: $((failures += 1))
262687e410SPeter Avalos	fi
272687e410SPeter Avalos}
282687e410SPeter Avalos
292687e410SPeter Avaloscheck '"$(cat <<EOF # (
302687e410SPeter AvalosEOF )
312687e410SPeter AvalosEOF
322687e410SPeter Avalos)" = "EOF )"'
332687e410SPeter Avalos
342687e410SPeter Avaloscheck '"$({ cat <<EOF # (
352687e410SPeter AvalosEOF)
362687e410SPeter AvalosEOF
372687e410SPeter Avalos})" = "EOF)"'
382687e410SPeter Avalos
392687e410SPeter Avaloscheck '"$(if :; then cat <<EOF # (
402687e410SPeter AvalosEOF)
412687e410SPeter AvalosEOF
422687e410SPeter Avalosfi)" = "EOF)"'
432687e410SPeter Avalos
442687e410SPeter Avaloscheck '"$( (cat <<EOF # (
452687e410SPeter AvalosEOF)
462687e410SPeter AvalosEOF
472687e410SPeter Avalos))" = "EOF)"'
482687e410SPeter Avalos
492687e410SPeter Avalosexit $((failures != 0))
50