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

test.arguments = for-loop

: semi
{
  : immediate
  :
  $* <"cmd;" >>EOO
  'cmd'
  ;
  <newline>
  EOO

  : separated
  :
  $* <"cmd ;" >>EOO
  'cmd'
  ;
  <newline>
  EOO

  : only
  :
  $* <";" >>EOO
  ;
  <newline>
  EOO
}

: colon
:
{
  : immediate
  :
  $* <"cmd: dsc" >>EOO
  'cmd'
  :
  'dsc'
  <newline>
  EOO

  : separated
  :
  $* <"cmd :dsc" >>EOO
  'cmd'
  :
  'dsc'
  <newline>
  EOO

  : only
  :
  $* <":" >>EOO
  :
  <newline>
  EOO
}

: 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

  : 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
}
