(command.CommandList
  children: [
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git-svn svn mergeinfo properties'>)}
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ <'load svn dump'>)} 
      {
        (DQ ('\n') ("\tsvnadmin load -q '") ($ VSub_DollarName '$rawsvnrepo') ("' ") ("\t  < '") 
          ($ VSub_DollarName '$TEST_DIRECTORY') ("/t9151/svn-mergeinfo.dump' &&\n") ('\tgit svn init --minimize-url -R svnmerge ') 
          ('\t  --rewrite-root=http://svn.example.org ') ("\t  -T trunk -b branches '") ($ VSub_DollarName '$svnrepo') ("' &&\n") ('\tgit svn fetch --all\n') 
          ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'all svn merges became git merge commits'>)} 
      {
        (SQ <'\n'> <'\tunmarked=$(git rev-list --parents --all --grep=Merge |\n'> 
          <'\t\tgrep -v " .* " | cut -f1 -d" ") &&\n'> <'\t[ -z "$unmarked" ]\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'cherry picks did not become git merge commits'>)} 
      {
        (SQ <'\n'> <'\tbad_cherries=$(git rev-list --parents --all --grep=Cherry |\n'> 
          <'\t\tgrep " .* " | cut -f1 -d" ") &&\n'> <'\t[ -z "$bad_cherries" ]\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'svn non-merge merge commits did not become git merge commits'>)} 
      {
        (SQ <'\n'> <'\tbad_non_merges=$(git rev-list --parents --all --grep=non-merge |\n'> 
          <'\t\tgrep " .* " | cut -f1 -d" ") &&\n'> <'\t[ -z "$bad_non_merges" ]\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'commit made to merged branch is reachable from the merge'>)} 
      {
        (SQ <'\n'> 
          <
'\tbefore_commit=$(git rev-list --all --grep="trunk commit before merging trunk to b2") &&\n'
          > <'\tmerge_commit=$(git rev-list --all --grep="Merge trunk to b2") &&\n'> 
          <'\tnot_reachable=$(git rev-list -1 $before_commit --not $merge_commit) &&\n'> <'\t[ -z "$not_reachable" ]\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'merging two branches in one commit is detected correctly'>)} 
      {
        (SQ <'\n'> <'\tf1_commit=$(git rev-list --all --grep="make f1 branch from trunk") &&\n'> 
          <'\tf2_commit=$(git rev-list --all --grep="make f2 branch from trunk") &&\n'> <'\tmerge_commit=$(git rev-list --all --grep="Merge f1 and f2 to trunk") &&\n'> 
          <'\tnot_reachable=$(git rev-list -1 $f1_commit $f2_commit --not $merge_commit) &&\n'> <'\t[ -z "$not_reachable" ]\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_failure)} {(SQ <'everything got merged in the end'>)} 
      {
        (SQ <'\n'> <'\tunmerged=$(git rev-list --all --not master) &&\n'> <'\t[ -z "$unmerged" ]\n'> 
          <'\t'>
        )
      }
    )
    (C {(test_done)})
  ]
)