(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git-svn svn mergeinfo propagation'>)}
          spids: [16]
        )
      ]
    )
    (C {<.>} {<'./lib-git-svn.sh'>})
    (C {<test_expect_success>} {(SQ <'load svn dump'>)} 
      {
        (DQ <'\n'> <'\tsvnadmin load -q \''> ($ Id.VSub_DollarName '$rawsvnrepo') <'\' '> <'\t  < \''> 
          ($ Id.VSub_DollarName '$TEST_DIRECTORY') <'/t9161/branches.dump\' &&\n'> <'\tgit svn init --minimize-url -R svnmerge '> 
          <'\t  -T trunk -b branches \''> ($ Id.VSub_DollarName '$svnrepo') <'\' &&\n'> <'\tgit svn fetch --all\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'propagate merge information'>)} 
      {
        (SQ <'\n'> <'\tgit config svn.pushmergeinfo yes &&\n'> <'\tgit checkout origin/svnb1 &&\n'> 
          <'\tgit merge --no-ff origin/svnb2 &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check svn:mergeinfo'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb1) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/svnb2:3,8"\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'merge another branch'>)} 
      {(SQ <'\n'> <'\tgit merge --no-ff origin/svnb3 &&\n'> <'\tgit svn dcommit\n'> <'\t'>)}
    )
    (C {<test_expect_success>} {(SQ <'check primary parent mergeinfo respected'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb1) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/svnb2:3,8\n'> <'/branches/svnb3:4,9"\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'merge existing merge'>)} 
      {(SQ <'\n'> <'\tgit merge --no-ff origin/svnb4 &&\n'> <'\tgit svn dcommit\n'> <'\t'>)}
    )
    (C {<test_expect_success>} {(DQ <'check both parents\' mergeinfo respected'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb1) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/svnb2:3,8\n'> <'/branches/svnb3:4,9\n'> <'/branches/svnb4:5-6,10-12\n'> <'/branches/svnb5:6,11"\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'make further commits to branch'>)} 
      {
        (SQ <'\n'> <'\tgit checkout origin/svnb2 &&\n'> <'\ttouch newb2file &&\n'> 
          <'\tgit add newb2file &&\n'> <'\tgit commit -m "later b2 commit" &&\n'> <'\ttouch newb2file-2 &&\n'> <'\tgit add newb2file-2 &&\n'> 
          <'\tgit commit -m "later b2 commit 2" &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'second forward merge'>)} 
      {
        (SQ <'\n'> <'\tgit checkout origin/svnb1 &&\n'> <'\tgit merge --no-ff origin/svnb2 &&\n'> 
          <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check new mergeinfo added'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb1) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/svnb2:3,8,16-17\n'> <'/branches/svnb3:4,9\n'> <'/branches/svnb4:5-6,10-12\n'> <'/branches/svnb5:6,11"\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'reintegration merge'>)} 
      {
        (SQ <'\n'> <'\tgit checkout origin/svnb4 &&\n'> <'\tgit merge --no-ff origin/svnb1 &&\n'> 
          <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'check reintegration mergeinfo'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb4) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/svnb1:2-4,7-9,13-18\n'> <'/branches/svnb2:3,8,16-17\n'> <'/branches/svnb3:4,9\n'> <'/branches/svnb5:6,11"\n'> <'\t'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'dcommit a merge at the top of a stack'>)} 
      {
        (SQ <'\n'> <'\tgit checkout origin/svnb1 &&\n'> <'\ttouch anotherfile &&\n'> 
          <'\tgit add anotherfile &&\n'> <'\tgit commit -m "a commit" &&\n'> <'\tgit merge origin/svnb4 &&\n'> <'\tgit svn dcommit\n'> <'\t'>
        )
      }
    )
    (C {<test_done>})
  ]
)