(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.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<file>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<EOF>}
          here_end_span_id: 33
          stdin_parts: [<'a\n'> <'b\n'> <'c\n'> <'\n'>]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expect-first>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<EOF>}
          here_end_span_id: 50
          stdin_parts: [<'a\n'> <'b\n'> <'c\n'>]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<second>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          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'>]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expect-second>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<EOF>}
          here_end_span_id: 96
          stdin_parts: [<'a\n'> <'b\n'> <'c\n'> <'\n'> <'d\n'> <'e\n'> <'f\n'>]
        )
      ]
    )
    (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.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<third>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          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'>
          ]
        )
      ]
    )
    (command.Simple
      words: [{<sed>} {<-e> (SQ <'s/ //g'>)}]
      redirects: [
        (redir.Redir op:<Id.Redir_Less '<'> fd:-1 arg_word:{<third>})
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expect-third>})
      ]
    )
    (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.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<beginning>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<EOF>}
          here_end_span_id: 212
          stdin_parts: [<'a\n'> <'\t\t    Z\n'> <'       Z\n'>]
        )
      ]
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{<expect-beginning>})
        (redir.HereDoc
          op: <Id.Redir_DLess '<<'>
          fd: -1
          here_begin: {<EOF>}
          here_end_span_id: 231
          stdin_parts: [<'a\n'> <'\n'> <'\n'> <'1\n'> <'2\n'> <'3\n'> <'4\n'> <'5\n'>]
        )
      ]
    )
    (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>})
  ]
)