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