# file      : libbuild2/shell/script/parser+body.test.testscript
# license   : MIT; see accompanying LICENSE file

test.options += -b

: lines
:
$* <<EOF >>EOF
  s = 'foo'
  if echo "$s" | sed 's/o/a/p' >>>? 'bar'
  {
    f = 'baz'
  }
  else
  {
    f = 'fox'
  }
  foo "$s" "$f"
  EOF

: command
:
$* <<EOF >>EOF
  foo >| 2>- &a &?b
  foo >=c 2>~/error:.*/ &!c
  foo >>:/~%EOS%
  %.*
  abc
  %xyz.*%
  EOS
  EOF

: if-else
:
$* <<EOF >>EOF
  if foo
  {
    bar
  }
  elif fox
  {
    if fix
    {
      baz
    }
    ifn $foo
    {
      bar
    }
    elifn [null]
    {
      box
    }
    else
    {
      fix
    }
    ife $foo
    {
      bar
    }
    elife ()
    {
      box
    }
    else
    {
      fix
    }
    biz
  }
  if! foo
  {
    bar
    ifn! $foo
    {
      bar
    }
    elifn! [null]
    {
      box
    }
    else
    {
      fix
    }
    ife! $foo
    {
      bar
    }
    elife! ()
    {
      box
    }
    else
    {
      fix
    }
  }
  elif! fox
  {
    baz
  }
  EOF

: quoting
:
$* <<EOI >>EOO
  foo 'bar' "baz" '' ""
  "$foo"
  "foo$bar"
  "fo"o
  "foo"\"
  "foo\\"
  "foo\"<"
  fo\"o
  fo\\o
  fo\<o
  "fo<o"
  'fo\"o'
  f"oo" "ba"r
  f"oo" 'ba'r
  "fo"'o'
  'foo b"ar baz'
  EOI
  foo 'bar' "baz" '' ""
  "$foo"
  "foo$bar"
  "foo"
  "foo\""
  "foo\\"
  "foo\"<"
  fo\"o
  fo\\o
  fo\<o
  "fo<o"
  'fo\"o'
  "foo bar"
  "foo" 'bar'
  "foo"
  'foo b"ar baz'
  EOO

: no-newline
:
$* <:'foo' 2>>EOE != 0
  shellscript:11:4: error: expected newline instead of <end of file>
  EOE
