(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'Merge-recursive merging renames'>)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'cat >A <<\\EOF &&\n'> <'a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n'> 
          <'b bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n'> <'c cccccccccccccccccccccccccccccccccccccccccccccccc\n'> 
          <'d dddddddddddddddddddddddddddddddddddddddddddddddd\n'> <'e eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\n'> 
          <'f ffffffffffffffffffffffffffffffffffffffffffffffff\n'> <'g gggggggggggggggggggggggggggggggggggggggggggggggg\n'> 
          <'h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh\n'> <'i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii\n'> 
          <'j jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj\n'> <'k kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk\n'> 
          <'l llllllllllllllllllllllllllllllllllllllllllllllll\n'> <'m mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm\n'> 
          <'n nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\n'> <'o oooooooooooooooooooooooooooooooooooooooooooooooo\n'> <'EOF\n'> <'\n'> <'cat >M <<\\EOF &&\n'> 
          <'A AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n'> <'B BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\n'> 
          <'C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\n'> <'D DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\n'> 
          <'E EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n'> <'F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n'> 
          <'G GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n'> <'H HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\n'> 
          <'I IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII\n'> <'J JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ\n'> 
          <'K KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK\n'> <'L LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL\n'> 
          <'M MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\n'> <'N NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN\n'> 
          <'O OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO\n'> <'EOF\n'> <'\n'> <'git add A M &&\n'> <'git commit -m "initial has A and M" &&\n'> 
          <'git branch white &&\n'> <'git branch red &&\n'> <'git branch blue &&\n'> <'\n'> <'git checkout white &&\n'> 
          <'sed -e "/^g /s/.*/g : white changes a line/" <A >B &&\n'> <'sed -e "/^G /s/.*/G : colored branch changes a line/" <M >N &&\n'> <'rm -f A M &&\n'> 
          <'git update-index --add --remove A B M N &&\n'> <'git commit -m "white renames A->B, M->N" &&\n'> <'\n'> <'git checkout red &&\n'> 
          <'echo created by red >R &&\n'> <'git update-index --add R &&\n'> <'git commit -m "red creates R" &&\n'> <'\n'> 
          <'git checkout blue &&\n'> <'sed -e "/^o /s/.*/g : blue changes a line/" <A >B &&\n'> <'rm -f A &&\n'> <'mv B A &&\n'> 
          <'git update-index A &&\n'> <'git commit -m "blue modify A" &&\n'> <'\n'> <'git checkout master'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge white into red (A->B,M->N)'>)} 
      {
        (SQ <'\n'> <'\tgit checkout -b red-white red &&\n'> <'\tgit merge white &&\n'> 
          <'\tgit write-tree &&\n'> <'\ttest_path_is_file B &&\n'> <'\ttest_path_is_file N &&\n'> <'\ttest_path_is_file R &&\n'> 
          <'\ttest_path_is_missing A &&\n'> <'\ttest_path_is_missing M\n'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merge blue into white (A->B, mod A, A untracked)'>)} 
      {
        (SQ <'\n'> <'\tgit checkout -b white-blue white &&\n'> <'\techo dirty >A &&\n'> 
          <'\tgit merge blue &&\n'> <'\tgit write-tree &&\n'> <'\ttest_path_is_file A &&\n'> <'\techo dirty >expect &&\n'> 
          <'\ttest_cmp expect A &&\n'> <'\ttest_path_is_file B &&\n'> <'\ttest_path_is_file N &&\n'> <'\ttest_path_is_missing M\n'>
        )
      }
    )
    (C {(test_done)})
  ]
)