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