(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"merge-recursive backend test">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ <"setup repo with criss-cross history">)} 
      {
        (SQ <"\n"> <"\tmkdir data &&\n"> <"\n"> <"\t# create a bunch of files\n"> <"\tn=1 &&\n"> 
          <"\twhile test $n -le 10\n"> <"\tdo\n"> <"\t\techo $n > data/$n &&\n"> <"\t\tn=$(($n+1)) ||\n"> <"\t\treturn 1\n"> <"\tdone &&\n"> 
          <"\n"> <"\t# check them in\n"> <"\tgit add data &&\n"> <"\tgit commit -m A &&\n"> <"\tgit branch A &&\n"> <"\n"> 
          <"\t# a file in one branch\n"> <"\tgit checkout -b B A &&\n"> <"\tgit rm data/9 &&\n"> <"\tgit add data &&\n"> 
          <"\tgit commit -m B &&\n"> <"\n"> <"\t# with a branch off of it\n"> <"\tgit branch D &&\n"> <"\n"> <"\t# put some commits on D\n"> 
          <"\tgit checkout D &&\n"> <"\techo testD > data/testD &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m D &&\n"> <"\n"> 
          <"\t# back up to the top, create another branch and cause\n"> <"\t# a rename conflict with the file we deleted earlier\n"> <"\tgit checkout -b C A &&\n"> 
          <"\tgit mv data/9 data/new-9 &&\n"> <"\tgit add data &&\n"> <"\tgit commit -m C &&\n"> <"\n"> <"\t# with a branch off of it\n"> 
          <"\tgit branch E &&\n"> <"\n"> <"\t# put a commit on E\n"> <"\tgit checkout E &&\n"> <"\techo testE > data/testE &&\n"> 
          <"\tgit add data &&\n"> <"\tgit commit -m E &&\n"> <"\n"> <"\t# now, merge E into B\n"> <"\tgit checkout B &&\n"> 
          <"\ttest_must_fail git merge E &&\n"> <"\t# force-resolve\n"> <"\tgit add data &&\n"> <"\tgit commit -m F &&\n"> <"\tgit branch F &&\n"> <"\n"> 
          <"\t# and merge D into C\n"> <"\tgit checkout C &&\n"> <"\ttest_must_fail git merge D &&\n"> <"\t# force-resolve\n"> 
          <"\tgit add data &&\n"> <"\tgit commit -m G &&\n"> <"\tgit branch G\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"recursive merge between F and G, causes segfault">)} 
      {(SQ <"\n"> <"\tgit merge F\n">)}
    )
    (C {(test_done)})
  ]
)