(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ <'test git rev-parse --parseopt'>)} spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {(SQ <'setup optionspec'>)} { (SQ <'\n'> <'\tsed -e "s/^|//" >optionspec <<\\EOF\n'> <'|some-command [options] <args>...\n'> <'|\n'> <'|some-command does foo and bar!\n'> <'|--\n'> <'|h,help show the help\n'> <'|\n'> <'|foo some nifty option --foo\n'> <'|bar= some cool option --bar with an argument\n'> <'|b,baz a short and long option\n'> <'|\n'> <'| An option group Header\n'> <'|C? option C with an optional argument\n'> <'|d,data? short and long option with an optional argument\n'> <'|\n'> <'| Argument hints\n'> <'|B=arg short option required argument\n'> <'|bar2=arg long option required argument\n'> <'|e,fuz=with-space short and long option required argument\n'> <'|s?some short option optional argument\n'> <'|long?data long option optional argument\n'> <'|g,fluf?path short and long option optional argument\n'> <'|longest=very-long-argument-hint a very long argument hint\n'> <'|pair=key=value with an equals sign in the hint\n'> <'|short-hint=a with a one symbol hint\n'> <'|\n'> <'|Extras\n'> <'|extra1 line above used to cause a segfault but no longer does\n'> <'EOF\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt help output'>)} { (SQ <'\n'> <'\tsed -e "s/^|//" >expect <<\\END_EXPECT &&\n'> <'|cat <<\\EOF\n'> <'|usage: some-command [options] <args>...\n'> <'|\n'> <'| some-command does foo and bar!\n'> <'|\n'> <'| -h, --help show the help\n'> <'| --foo some nifty option --foo\n'> <'| --bar ... some cool option --bar with an argument\n'> <'| -b, --baz a short and long option\n'> <'|\n'> <'|An option group Header\n'> <'| -C[...] option C with an optional argument\n'> <'| -d, --data[=...] short and long option with an optional argument\n'> <'|\n'> <'|Argument hints\n'> <'| -B <arg> short option required argument\n'> <'| --bar2 <arg> long option required argument\n'> <'| -e, --fuz <with-space>\n'> <'| short and long option required argument\n'> <'| -s[<some>] short option optional argument\n'> <'| --long[=<data>] long option optional argument\n'> <'| -g, --fluf[=<path>] short and long option optional argument\n'> <'| --longest <very-long-argument-hint>\n'> <'| a very long argument hint\n'> <'| --pair <key=value> with an equals sign in the hint\n'> <'| --short-hint <a> with a one symbol hint\n'> <'|\n'> <'|Extras\n'> <'| --extra1 line above used to cause a segfault but no longer does\n'> <'|\n'> <'|EOF\n'> <'END_EXPECT\n'> <'\ttest_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&\n'> <'\ttest_i18ncmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.1'>)} { (DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --foo --bar \'ham\' -b -- \'arg\'\n'> <'EOF\n'>) } ) (C {<test_expect_success>} {(SQ <'test --parseopt'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt -- --foo --bar=ham --baz arg < optionspec > output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt with mixed options and arguments'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt -- --foo arg --bar=ham --baz < optionspec > output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.2'>)} {(DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --foo -- \'arg\' \'--bar=ham\'\n'> <'EOF\n'>)} ) (C {<test_expect_success>} {(SQ <'test --parseopt with --'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt -- --foo -- arg --bar=ham < optionspec > output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt --stop-at-non-option'>)} { (SQ <'\n'> < '\tgit rev-parse --parseopt --stop-at-non-option -- --foo arg --bar=ham < optionspec > output &&\n' > <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.3'>)} { (DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --foo -- \'--\' \'arg\' \'--bar=ham\'\n'> <'EOF\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt --keep-dashdash'>)} { (SQ <'\n'> < '\tgit rev-parse --parseopt --keep-dashdash -- --foo -- arg --bar=ham < optionspec > output &&\n' > <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.4'>)} { (DQ <'\n'> <'\tcat >expect <<EOF\n'> <'set -- --foo -- \'--\' \'arg\' \'--spam=ham\'\n'> <'EOF\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt --keep-dashdash --stop-at-non-option with --'>)} { (SQ <'\n'> < '\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo -- arg --spam=ham <optionspec >output &&\n' > <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.5'>)} {(DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --foo -- \'arg\' \'--spam=ham\'\n'> <'EOF\n'>)} ) (C {<test_expect_success>} {(SQ <'test --parseopt --keep-dashdash --stop-at-non-option without --'>)} { (SQ <'\n'> < '\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo arg --spam=ham <optionspec >output &&\n' > <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.6'>)} { (DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --foo --bar=\'z\' --baz -C\'Z\' --data=\'A\' -- \'arg\'\n'> <'EOF\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt --stuck-long'>)} { (SQ <'\n'> < '\tgit rev-parse --parseopt --stuck-long -- --foo --bar=z -b arg -CZ -dA <optionspec >output &&\n' > <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.7'>)} {(DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --data=\'\' -C --baz -- \'arg\'\n'> <'EOF\n'>)} ) (C {<test_expect_success>} {(SQ <'test --parseopt --stuck-long and empty optional argument'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt --stuck-long -- --data= arg -C -b <optionspec >output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'setup expect.8'>)} {(DQ <'\n'> <'\tcat > expect <<EOF\n'> <'set -- --data --baz -- \'arg\'\n'> <'EOF\n'>)} ) (C {<test_expect_success>} {(SQ <'test --parseopt --stuck-long and long option with unset optional argument'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt --stuck-long -- --data arg -b <optionspec >output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_expect_success>} {(SQ <'test --parseopt --stuck-long and short option with unset optional argument'>)} { (SQ <'\n'> <'\tgit rev-parse --parseopt --stuck-long -- -d arg -b <optionspec >output &&\n'> <'\ttest_cmp expect output\n'> ) } ) (C {<test_done>}) ] )