]> git.saurik.com Git - apple/shell_cmds.git/blob - sh/tests/parser/heredoc10.0
shell_cmds-207.11.1.tar.gz
[apple/shell_cmds.git] / sh / tests / parser / heredoc10.0
1 # $FreeBSD: head/bin/sh/tests/parser/heredoc10.0 221887 2011-05-14 14:19:30Z jilles $
2
3 # It may be argued that
4 # x=$(cat <<EOF
5 # foo
6 # EOF)
7 # is a valid complete command that sets x to foo, because
8 # cat <<EOF
9 # foo
10 # EOF
11 # is a valid script even without the final newline.
12 # However, if the here-document is not within a new-style command substitution
13 # or there are other constructs nested inside the command substitution that
14 # need terminators, the delimiter at the start of a line followed by a close
15 # parenthesis is clearly a literal part of the here-document.
16
17 # This file contains tests that may not work with simplistic $(...) parsers.
18 # The open parentheses in comments help mksh, but not zsh.
19
20 failures=0
21
22 check() {
23 if ! eval "[ $* ]"; then
24 echo "Failed: $*"
25 : $((failures += 1))
26 fi
27 }
28
29 check '"$(cat <<EOF # (
30 EOF )
31 EOF
32 )" = "EOF )"'
33
34 check '"$({ cat <<EOF # (
35 EOF)
36 EOF
37 })" = "EOF)"'
38
39 check '"$(if :; then cat <<EOF # (
40 EOF)
41 EOF
42 fi)" = "EOF)"'
43
44 check '"$( (cat <<EOF # (
45 EOF)
46 EOF
47 ))" = "EOF)"'
48
49 exit $((failures != 0))