# file      : libbuild2/build/script/lexer+for-loop.test.testscript
# license   : MIT; see accompanying LICENSE file

test.arguments = for-loop

: redirect
:
{
  : pass
  :
  $* <"cmd <| 1>|" >>EOO
  'cmd'
  <|
  '1'
  >|
  <newline>
  EOO

  : null
  :
  $* <"cmd <- 1>-" >>EOO
  'cmd'
  <-
  '1'
  >-
  <newline>
  EOO

  : trace
  :
  $* <"cmd 1>!" >>EOO
  'cmd'
  '1'
  >!
  <newline>
  EOO

  : merge
  :
  $* <"cmd 1>&2" >>EOO
  'cmd'
  '1'
  >&
  '2'
  <newline>
  EOO

  : str
  :
  $* <"cmd <<<=a 1>>>?b" >>EOO
  'cmd'
  <<<=
  'a'
  '1'
  >>>?
  'b'
  <newline>
  EOO

  : str-nn
  :
  $* <"cmd <<<=:a 1>>>?:b" >>EOO
  'cmd'
  <<<=:
  'a'
  '1'
  >>>?:
  'b'
  <newline>
  EOO

  : str-nn-alias
  :
  $* <"cmd <<<:a 1>>>?:b" >>EOO
  'cmd'
  <<<:
  'a'
  '1'
  >>>?:
  'b'
  <newline>
  EOO

  : doc
  :
  $* <"cmd <<EOI 1>>EOO" >>EOO
  'cmd'
  <<
  'EOI'
  '1'
  >>
  'EOO'
  <newline>
  EOO

  : doc-nn
  :
  $* <"cmd <<:EOI 1>>?:EOO" >>EOO
  'cmd'
  <<:
  'EOI'
  '1'
  >>?:
  'EOO'
  <newline>
  EOO

  : file-cmp
  :
  $* <"cmd <=in >?out 2>?err" >>EOO
  'cmd'
  <=
  'in'
  >?
  'out'
  '2'
  >?
  'err'
  <newline>
  EOO

  : file-write
  :
  $* <"cmd >=out 2>+err" >>EOO
  'cmd'
  >=
  'out'
  '2'
  >+
  'err'
  <newline>
  EOO
}

: cleanup
:
{
  : always
  :
  $* <"cmd &file" >>EOO
  'cmd'
  &
  'file'
  <newline>
  EOO

  : maybe
  :
  $* <"cmd &?file" >>EOO
  'cmd'
  &?
  'file'
  <newline>
  EOO

  : never
  :
  $* <"cmd &!file" >>EOO
  'cmd'
  &!
  'file'
  <newline>
  EOO
}

: for
:
{
  : form-1
  :
  $* <"for x: a" >>EOO
  'for'
  'x'
  :
  'a'
  <newline>
  EOO

  : form-3
  :
  $* <"for <<<a x" >>EOO
  'for'
  <<<
  'a'
  'x'
  <newline>
  EOO
}