(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git svn mergeinfo propagation'>)}
          spids: [13]
        )
      ]
    )
    (C {<.>} {<'./lib-git-svn.sh'>})
    (C {<test_expect_success>} {(SQ <'initialize source svn repo'>)} 
      {
        (SQ <'\n'> <'\tsvn_cmd mkdir -m x "$svnrepo"/trunk &&\n'> 
          <'\tsvn_cmd co "$svnrepo"/trunk "$SVN_TREE" &&\n'> <'\t(\n'> <'\t\tcd "$SVN_TREE" &&\n'> <'\t\ttouch foo &&\n'> <'\t\tsvn_cmd add foo &&\n'> 
          <'\t\tsvn_cmd commit -m "initial commit"\n'> <'\t) &&\n'> <'\trm -rf "$SVN_TREE"\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'clone svn repo'>)} 
      {(SQ <'\n'> <'\tgit svn init "$svnrepo"/trunk &&\n'> <'\tgit svn fetch\n'>)}
    )
    (C {<test_expect_success>} {(SQ <'change svn:mergeinfo'>)} 
      {
        (SQ <'\n'> <'\ttouch bar &&\n'> <'\tgit add bar &&\n'> <'\tgit commit -m "bar" &&\n'> 
          <'\tgit svn dcommit --mergeinfo="/branches/foo:1-10"\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'verify svn:mergeinfo'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/trunk) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/foo:1-10"\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'change svn:mergeinfo multiline'>)} 
      {
        (SQ <'\n'> <'\ttouch baz &&\n'> <'\tgit add baz &&\n'> <'\tgit commit -m "baz" &&\n'> 
          <'\tgit svn dcommit --mergeinfo="/branches/bar:1-10 /branches/other:3-5,8,10-11"\n'>
        )
      }
    )
    (C {<test_expect_success>} {(SQ <'verify svn:mergeinfo multiline'>)} 
      {
        (SQ <'\n'> <'\tmergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/trunk) &&\n'> 
          <'\ttest "$mergeinfo" = "/branches/bar:1-10\n'> <'/branches/other:3-5,8,10-11"\n'>
        )
      }
    )
    (C {<test_done>})
  ]
)