# file      : group/testscript
# license   : MIT; see accompanying LICENSE file

: no-args
:
$* ''

: no-groups
:
$* '' --foo arg >>EOO
'--foo'
'arg'
EOO

: group-pre
:
$* '' { --foo --bar }+ arg1 arg2 >>EOO
'arg1' '--foo' '--bar'
'arg2'
EOO

: group-pre-pack
:
$* '' { --foo --bar }+ { arg1 arg2 } arg3 >>EOO
'arg1' '--foo' '--bar'
'arg2' '--foo' '--bar'
'arg3'
EOO

: group-pre-multi
:
$* '' { --foo }+ { --bar }+ arg1 arg2 >>EOO
'arg1' '--foo' '--bar'
'arg2'
EOO

: group-pre-multi-pack
:
$* '' { --foo }+ { --bar }+ { arg1 arg2 } arg3 >>EOO
'arg1' '--foo' '--bar'
'arg2' '--foo' '--bar'
'arg3'
EOO

: group-post
:
$* '' arg1 arg2 +{ foo bar } >>EOO
'arg1'
'arg2' 'foo' 'bar'
EOO

: group-post-pack
:
$* '' arg1 { arg2 arg3 } +{ foo bar } >>EOO
'arg1'
'arg2' 'foo' 'bar'
'arg3' 'foo' 'bar'
EOO

: group-post-multi
:
$* '' arg1 arg2 +{ foo } +{ bar } >>EOO
'arg1'
'arg2' 'foo' 'bar'
EOO

: group-post-multi-pack
:
$* '' arg1 { arg2 arg3 } +{ foo } +{ bar } >>EOO
'arg1'
'arg2' 'foo' 'bar'
'arg3' 'foo' 'bar'
EOO

: group-both
:
$* '' arg1 { --foo --bar }+ arg2 +{ foo bar } arg3 >>EOO
'arg1'
'arg2' '--foo' '--bar' 'foo' 'bar'
'arg3'
EOO

: group-both-pack
:
$* '' arg1 { --foo --bar }+ { arg2 arg3 } +{ foo bar } arg4 >>EOO
'arg1'
'arg2' '--foo' '--bar' 'foo' 'bar'
'arg3' '--foo' '--bar' 'foo' 'bar'
'arg4'
EOO

: group-both-multi
:
$* '' arg1 { --foo }+ { --bar }+ arg2 +{ foo } +{ bar } arg3 >>EOO
'arg1'
'arg2' '--foo' '--bar' 'foo' 'bar'
'arg3'
EOO

: group-both-multi-pack
:
$* '' arg1 { --foo }+ { --bar }+ { arg2 arg3 } +{ foo } +{ bar } arg4 >>EOO
'arg1'
'arg2' '--foo' '--bar' 'foo' 'bar'
'arg3' '--foo' '--bar' 'foo' 'bar'
'arg4'
EOO

: multi-group
:
$* '' { --foo }+ arg1 arg2 +{ bar } >>EOO
'arg1' '--foo'
'arg2' 'bar'
EOO

: multi-group-pack
:
$* '' { --foo }+ { arg1 arg2 } { arg3 arg4 } +{ bar } >>EOO
'arg1' '--foo'
'arg2' '--foo'
'arg3' 'bar'
'arg4' 'bar'
EOO

: empty-group
:
$* '' {  }+ arg1 arg2 +{ } >>EOO
'arg1'
'arg2'
EOO

: empty-group-pack
:
$* '' {  }+ { arg1 arg2 } +{ } >>EOO
'arg1'
'arg2'
EOO

: escape-arg
:
$* '' '\{' '\}' '\+{' '\}+' '{x' '}x' >>EOO
'{'
'}'
'+{'
'}+'
'{x'
'}x'
EOO

: escape-group
:
$* '' { '\{' '\}' '\+{' '\}+' '{x' '}x' }+ arg >>EOO
'arg' '{' '}' '+{' '}+' '{x' '}x'
EOO

: pack-no-group
:
$* '' { --foo } { arg2 }+ 2>>EOE != 0
unexpected group separator '{', use '\{' to escape
EOE

: empty-pack
:
$* '' { --foo }+ { } 2>>EOE != 0
unexpected group separator '{', use '\{' to escape
EOE

: no-arg-pre
:
$* '' { --foo }+ 2>>EOE != 0
unexpected group separator '{', use '\{' to escape
EOE

: no-arg-pre-empty
:
$* '' { }+ 2>>EOE != 0
unexpected group separator '{', use '\{' to escape
EOE

: no-arg-post
:
$* '' +{ --foo } 2>>EOE != 0
unexpected group separator '+{', use '\+{' to escape
EOE

: no-arg-post-empty
:
$* '' +{ } 2>>EOE != 0
unexpected group separator '+{', use '\+{' to escape
EOE

: unhandled-group-pre
:
$* 'g' { --foo }+ arg >>EOO 2>>EOE != 0
'arg'
EOO
unexpected grouped argument '--foo' for argument 'arg'
EOE

: unhandled-group-post
:
$* 'g' arg +{ bar } >>EOO 2>>EOE != 0
'arg'
EOO
unexpected grouped argument 'bar' for argument 'arg'
EOE

: unhandled-group-skip
:
$* 'sg' { --foo }+ arg +{ bar }

: unhandled-group-skip-pack
:
$* 'sg' { --foo }+ { arg1 arg2 } +{ bar }
