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