(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'git rebase --whitespace=fix\n'> <'\n'> 
                <'This test runs git rebase --whitespace=fix and make sure that it works.\n'>
              )
            }
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<file>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 33
              stdin_parts: [<'a\n'> <'b\n'> <'c\n'> <'\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect-first>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 50
              stdin_parts: [<'a\n'> <'b\n'> <'c\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<second>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 75
              stdin_parts: [<'a\n'> <'b\n'> <'c\n'> <'\n'> <'d\n'> <'e\n'> <'f\n'> <'\n'> <'\n'> <'\n'> <'\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect-second>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 96
              stdin_parts: [<'a\n'> <'b\n'> <'c\n'> <'\n'> <'d\n'> <'e\n'> <'f\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'blank line at end of file; extend at end of file'>)} 
      {
        (SQ <'\n'> <'\tgit commit --allow-empty -m "Initial empty commit" &&\n'> 
          <'\tgit add file && git commit -m first &&\n'> <'\tmv second file &&\n'> <'\tgit add file &&\tgit commit -m second &&\n'> 
          <'\tgit rebase --whitespace=fix HEAD^^ &&\n'> <'\tgit diff --exit-code HEAD^:file expect-first &&\n'> <'\ttest_cmp file expect-second\n'>
        )
      }
    )
    (command.Simple
      words: [{<sed>} {<-e> (SQ <'s/Z//'>)}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<third>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 147
              stdin_parts: [
                <'a\n'>
                <'b\n'>
                <'c\n'>
                <'\n'>
                <'d\n'>
                <'e\n'>
                <'f\n'>
                <'    Z\n'>
                <' Z\n'>
                <'h\n'>
                <'i\n'>
                <'j\n'>
                <'k\n'>
                <'l\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<sed>} {<-e> (SQ <'s/ //g'>)}]
      redirects: [
        (redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<third>})
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect-third>})
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'two blanks line at end of file; extend at end of file'>)} 
      {
        (SQ <'\n'> <'\tcp third file && git add file && git commit -m third &&\n'> 
          <'\tgit rebase --whitespace=fix HEAD^^ &&\n'> <'\tgit diff --exit-code HEAD^:file expect-second &&\n'> <'\ttest_cmp file expect-third\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'same, but do not remove trailing spaces'>)} 
      {
        (SQ <'\n'> <'\tgit config core.whitespace "-blank-at-eol" &&\n'> 
          <'\tgit reset --hard HEAD^ &&\n'> <'\tcp third file && git add file && git commit -m third &&\n'> 
          <'\tgit rebase --whitespace=fix HEAD^^ &&\n'> <'\tgit diff --exit-code HEAD^:file expect-second &&\n'> <'\ttest_cmp file third\n'>
        )
      }
    )
    (command.Simple
      words: [{<sed>} {<-e> (SQ <'s/Z//'>)}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<beginning>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 212
              stdin_parts: [<'a\n'> <'\t\t    Z\n'> <'       Z\n'>]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect-beginning>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 231
              stdin_parts: [<'a\n'> <'\n'> <'\n'> <'1\n'> <'2\n'> <'3\n'> <'4\n'> <'5\n'>]
            )
        )
      ]
      do_fork: T
    )
    (C {<test_expect_success>} {(SQ <'at beginning of file'>)} 
      {
        (SQ <'\n'> <'\tgit config core.whitespace "blank-at-eol" &&\n'> <'\tcp beginning file &&\n'> 
          <'\tgit commit -m beginning file &&\n'> <'\tfor i in 1 2 3 4 5; do\n'> <'\t\techo $i\n'> <'\tdone >> file &&\n'> 
          <'\tgit commit -m more file\t&&\n'> <'\tgit rebase --whitespace=fix HEAD^^ &&\n'> <'\ttest_cmp file expect-beginning\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)