(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          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]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(file)} spids:[22])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("a\n") ("b\n") ("c\n") ("\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [25]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect-first)} spids:[38])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("a\n") ("b\n") ("c\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [41]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(second)} spids:[53])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {(DQ ("a\n") ("b\n") ("c\n") ("\n") ("d\n") ("e\n") ("f\n") ("\n") ("\n") ("\n") ("\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [56]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect-second)} spids:[76])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("a\n") ("b\n") ("c\n") ("\n") ("d\n") ("e\n") ("f\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [79]
        )
      ]
    )
    (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">
        )
      }
    )
    (SimpleCommand
      words: [{(sed)} {(-e) (SQ <s/Z//>)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(third)} spids:[118])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("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_expansion: True
          here_end: EOF
          was_filled: True
          spids: [121]
        )
      ]
    )
    (SimpleCommand
      words: [{(sed)} {(-e) (SQ <"s/ //g">)}]
      redirects: [
        (Redir op_id:Redir_Less fd:-1 arg_word:{(third)} spids:[146])
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect-third)} spids:[149])
      ]
    )
    (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">
        )
      }
    )
    (SimpleCommand
      words: [{(sed)} {(-e) (SQ <s/Z//>)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(beginning)} spids:[192])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("a\n") ("\t\t    Z\n") ("       Z\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [195]
        )
      ]
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect-beginning)} spids:[204])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("a\n") ("\n") ("\n") ("1\n") ("2\n") ("3\n") ("4\n") ("5\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [207]
        )
      ]
    )
    (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)})
  ]
)