(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>})
  ]
)