(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'test git rev-parse --parseopt' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup optionspec' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\tsed -e "s/^|//" >optionspec <<\\EOF\n' span_id:22) (Token id:Id.Lit_Chars val:'|some-command [options] <args>...\n' span_id:23) (Token id:Id.Lit_Chars val:'|\n' span_id:24) (Token id:Id.Lit_Chars val:'|some-command does foo and bar!\n' span_id:25) (Token id:Id.Lit_Chars val:'|--\n' span_id:26) (Token id:Id.Lit_Chars val:'|h,help show the help\n' span_id:27) (Token id:Id.Lit_Chars val:'|\n' span_id:28) (Token id:Id.Lit_Chars val:'|foo some nifty option --foo\n' span_id:29) (Token id: Id.Lit_Chars val: '|bar= some cool option --bar with an argument\n' span_id: 30 ) (Token id:Id.Lit_Chars val:'|b,baz a short and long option\n' span_id:31) (Token id:Id.Lit_Chars val:'|\n' span_id:32) (Token id:Id.Lit_Chars val:'| An option group Header\n' span_id:33) (Token id: Id.Lit_Chars val: '|C? option C with an optional argument\n' span_id: 34 ) (Token id:Id.Lit_Chars val:'|d,data? short and long option with an optional argument\n' span_id:35) (Token id:Id.Lit_Chars val:'|\n' span_id:36) (Token id:Id.Lit_Chars val:'| Argument hints\n' span_id:37) (Token id: Id.Lit_Chars val: '|B=arg short option required argument\n' span_id: 38 ) (Token id:Id.Lit_Chars val:'|bar2=arg long option required argument\n' span_id:39) (Token id: Id.Lit_Chars val: '|e,fuz=with-space short and long option required argument\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'|s?some short option optional argument\n' span_id:41) (Token id: Id.Lit_Chars val: '|long?data long option optional argument\n' span_id: 42 ) (Token id:Id.Lit_Chars val:'|g,fluf?path short and long option optional argument\n' span_id:43) (Token id: Id.Lit_Chars val: '|longest=very-long-argument-hint a very long argument hint\n' span_id: 44 ) (Token id:Id.Lit_Chars val:'|pair=key=value with an equals sign in the hint\n' span_id:45) (Token id: Id.Lit_Chars val: '|short-hint=a with a one symbol hint\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'|\n' span_id:47) (Token id:Id.Lit_Chars val:'|Extras\n' span_id:48) (Token id: Id.Lit_Chars val: '|extra1 line above used to cause a segfault but no longer does\n' span_id: 49 ) (Token id:Id.Lit_Chars val:'EOF\n' span_id:50) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt help output' span_id:57))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:61) (Token id: Id.Lit_Chars val: '\tsed -e "s/^|//" >expect <<\\END_EXPECT &&\n' span_id: 62 ) (Token id:Id.Lit_Chars val:'|cat <<\\EOF\n' span_id:63) (Token id: Id.Lit_Chars val: '|usage: some-command [options] <args>...\n' span_id: 64 ) (Token id:Id.Lit_Chars val:'|\n' span_id:65) (Token id:Id.Lit_Chars val:'| some-command does foo and bar!\n' span_id:66) (Token id:Id.Lit_Chars val:'|\n' span_id:67) (Token id: Id.Lit_Chars val: '| -h, --help show the help\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'| --foo some nifty option --foo\n' span_id:69) (Token id: Id.Lit_Chars val: '| --bar ... some cool option --bar with an argument\n' span_id: 70 ) (Token id:Id.Lit_Chars val:'| -b, --baz a short and long option\n' span_id:71) (Token id:Id.Lit_Chars val:'|\n' span_id:72) (Token id:Id.Lit_Chars val:'|An option group Header\n' span_id:73) (Token id: Id.Lit_Chars val: '| -C[...] option C with an optional argument\n' span_id: 74 ) (Token id: Id.Lit_Chars val: '| -d, --data[=...] short and long option with an optional argument\n' span_id: 75 ) (Token id:Id.Lit_Chars val:'|\n' span_id:76) (Token id:Id.Lit_Chars val:'|Argument hints\n' span_id:77) (Token id:Id.Lit_Chars val:'| -B <arg> short option required argument\n' span_id:78) (Token id: Id.Lit_Chars val: '| --bar2 <arg> long option required argument\n' span_id: 79 ) (Token id:Id.Lit_Chars val:'| -e, --fuz <with-space>\n' span_id:80) (Token id: Id.Lit_Chars val: '| short and long option required argument\n' span_id: 81 ) (Token id:Id.Lit_Chars val:'| -s[<some>] short option optional argument\n' span_id:82) (Token id: Id.Lit_Chars val: '| --long[=<data>] long option optional argument\n' span_id: 83 ) (Token id: Id.Lit_Chars val: '| -g, --fluf[=<path>] short and long option optional argument\n' span_id: 84 ) (Token id:Id.Lit_Chars val:'| --longest <very-long-argument-hint>\n' span_id:85) (Token id: Id.Lit_Chars val: '| a very long argument hint\n' span_id: 86 ) (Token id:Id.Lit_Chars val:'| --pair <key=value> with an equals sign in the hint\n' span_id:87) (Token id: Id.Lit_Chars val: '| --short-hint <a> with a one symbol hint\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'|\n' span_id:89) (Token id:Id.Lit_Chars val:'|Extras\n' span_id:90) (Token id: Id.Lit_Chars val: '| --extra1 line above used to cause a segfault but no longer does\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'|\n' span_id:92) (Token id:Id.Lit_Chars val:'|EOF\n' span_id:93) (Token id:Id.Lit_Chars val:'END_EXPECT\n' span_id:94) (Token id: Id.Lit_Chars val: '\ttest_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&\n' span_id: 95 ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expect output\n' span_id:96) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.1' span_id:103))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo --bar 'ham' -b -- 'arg'\n") ('EOF\n'))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt' span_id:117))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt -- --foo --bar=ham --baz arg < optionspec > output &&\n' span_id: 122 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:123) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt with mixed options and arguments' span_id: 130 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt -- --foo arg --bar=ham --baz < optionspec > output &&\n' span_id: 135 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:136) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.2' span_id:143))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- 'arg' '--bar=ham'\n") ('EOF\n'))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt with --' span_id:157))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt -- --foo -- arg --bar=ham < optionspec > output &&\n' span_id: 162 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:163) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --stop-at-non-option' span_id:170))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --stop-at-non-option -- --foo arg --bar=ham < optionspec > output &&\n' span_id: 175 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:176) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.3' span_id:183))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- '--' 'arg' '--bar=ham'\n") ('EOF\n'))} ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --keep-dashdash' span_id:197))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:201) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --keep-dashdash -- --foo -- arg --bar=ham < optionspec > output &&\n' span_id: 202 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:203) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.4' span_id:210))} {(DQ ('\n') ('\tcat >expect <<EOF\n') ("set -- --foo -- '--' 'arg' '--spam=ham'\n") ('EOF\n'))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt --keep-dashdash --stop-at-non-option with --' span_id: 224 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:228) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo -- arg --spam=ham <optionspec >output &&\n' span_id: 229 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:230) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.5' span_id:237))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo -- 'arg' '--spam=ham'\n") ('EOF\n'))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt --keep-dashdash --stop-at-non-option without --' span_id: 251 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:255) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --keep-dashdash --stop-at-non-option -- --foo arg --spam=ham <optionspec >output &&\n' span_id: 256 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:257) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.6' span_id:264))} { (DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --foo --bar='z' --baz -C'Z' --data='A' -- 'arg'\n") ('EOF\n') ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test --parseopt --stuck-long' span_id:278))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:282) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --stuck-long -- --foo --bar=z -b arg -CZ -dA <optionspec >output &&\n' span_id: 283 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:284) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.7' span_id:291))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --data='' -C --baz -- 'arg'\n") ('EOF\n'))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt --stuck-long and empty optional argument' span_id: 305 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --stuck-long -- --data= arg -C -b <optionspec >output &&\n' span_id: 310 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:311) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup expect.8' span_id:318))} {(DQ ('\n') ('\tcat > expect <<EOF\n') ("set -- --data --baz -- 'arg'\n") ('EOF\n'))} ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt --stuck-long and long option with unset optional argument' span_id: 332 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:336) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --stuck-long -- --data arg -b <optionspec >output &&\n' span_id: 337 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:338) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'test --parseopt --stuck-long and short option with unset optional argument' span_id: 345 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:349) (Token id: Id.Lit_Chars val: '\tgit rev-parse --parseopt --stuck-long -- -d arg -b <optionspec >output &&\n' span_id: 350 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect output\n' span_id:351) ) } ) (C {(test_done)}) ] )