# file      : unit-tests/test/script/lexer/command-line.test
# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

test.arguments = command-line

: 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

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