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