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

: quote
:
: Make sure everything expanded as strings.
:
$* <<EOI >>EOO
x = dir/ proj% proj%name proj%proj%dir/type{name   name   {name}}
cmd dir/ proj% proj%name proj%proj%dir/type{name   name   {name}}
cmd $x
EOI
cmd dir/ proj% proj%name proj%proj%dir/type{name name {name}}
cmd dir/ proj% proj%name proj%proj%dir/type{name name {name}}
EOO

: unterm-quoted-seq
:
$* <<EOI 2>>EOE != 0
x = "'a bc"
cmd xy$x
EOI
<string>:1:8: error: unterminated single-quoted sequence
  buildfile:12:5: info: while parsing string 'xy'a bc'
EOE

: invalid-redirect
:
$* <<EOI 2>>EOE != 0
x = [cmdline] "1>&a"
cmd $x
EOI
<string>:1:4: error: stdout merge redirect file descriptor must be 2
  buildfile:12:5: info: while parsing string '1>&a'
EOE

: expansion-re-parse
:
$* <<EOI >>EOO
x = <foo> <bar>
cmd $x

x = foo
cmd >$x

x = [string] foo
cmd >$x
EOI
cmd '<foo>' '<bar>'
cmd >foo
cmd >foo
EOO

: syntax-1
:
{{
  test.options += -v 1

  : quote
  :
  : Make sure everything expanded as strings.
  :
  $* <<EOI >>EOO
  x = dir/ proj% proj%name proj%proj%dir/type{name   name   {name}}
  cmd dir/ proj% proj%name proj%proj%dir/type{name   name   {name}}
  cmd $x
  EOI
  cmd dir/ proj% proj%name proj%proj%dir/type{name name {name}}
  cmd dir/ proj% proj%name proj%proj%dir/type{name name {name}}
  EOO

  : unterm-quoted-seq
  :
  $* <<EOI 2>>EOE != 0
  x = "'a bc"
  cmd xy$x
  EOI
  <string>:1:8: error: unterminated single-quoted sequence
    buildfile:12:5: info: while parsing string 'xy'a bc'
  EOE

  : invalid-redirect
  :
  $* <<EOI 2>>EOE != 0
  x = [cmdline] "1>&a"
  cmd $x
  EOI
  <string>:1:4: error: stdout merge redirect file descriptor must be 2
    buildfile:12:5: info: while parsing string '1>&a'
  EOE

  : expansion-re-parse
  :
  $* <<EOI >>EOO
  x = <foo> <bar>
  cmd $x

  x = foo
  cmd >$x

  x = [string] foo
  cmd >$x
  EOI
  cmd '<foo>' '<bar>'
  cmd >foo
  cmd >foo
  EOO
}}
