(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'tests remote-svn'>)}
          spids: [4]
        )
      ]
    )
    (C {<.>} {<'./test-lib.sh'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MARKSPATH)
          op: assign_op.Equal
          rhs: {<'.git/info/fast-import/remote-svn'>}
          spids: [15]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [(command.Pipeline children:[(C {<test_have_prereq>} {<PYTHON>})] negated:T)]
            )
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: {(SQ <'skipping remote-svn tests, python not available'>)}
                  spids: [30]
                )
              ]
            )
            (C {<test_done>})
          ]
          spids: [19 27]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$HOME') <':'> ($ Id.VSub_DollarName '$PATH'))}
          spids: [44]
        )
      ]
    )
    (C {<export>} {<PATH>} {<PYTHON_PATH>} {<GIT_BUILD_DIR>})
    (command.Simple
      words: [{<write_script>} {(DQ ($ Id.VSub_DollarName '$HOME') <'/svnrdump'>)}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>}
              here_end_span_id: 72
              stdin_parts: [
                <'exec "$PYTHON_PATH" "$GIT_BUILD_DIR/contrib/svn-fe/svnrdump_sim.py" "$@"\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShFunction
      name: init_git
      body: 
        (BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {<rm>} {<-fr>} {<.git>})
                (C {<git>} {<init>})
                (C {<git>} {<remote>} {<add>} {<svnsim>} 
                  {<testsvn> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <sim> <Id.Lit_Colon ':'> <'//'> 
                    ($ Id.VSub_DollarName '$TEST_DIRECTORY') <'/t9154/svn.dump'>
                  }
                )
              ]
            )
            (C {<git>} {<remote>} {<add>} {<svnfile>} 
              {<testsvn> <Id.Lit_Colon ':'> <Id.Lit_Colon ':'> <file> <Id.Lit_Colon ':'> <'//'> 
                ($ Id.VSub_DollarName '$TEST_DIRECTORY') <'/t9154/svn.dump'>
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (C {<test>} {<-e>} {(DQ ($ Id.VSub_DollarName '$GIT_BUILD_DIR') <'/git-remote-testsvn'>)})
              ]
            )
          action: [(C {<test_set_prereq>} {<REMOTE_SVN>})]
          spids: [144 155]
        )
      ]
    )
    (C {<test_debug>} {(SQ <'\n'> <'\tgit --version\n'> <'\ttype git\n'> <'\ttype svnrdump\n'>)})
    (C {<test_expect_success>} {<REMOTE_SVN>} {(SQ <'simple fetch'>)} 
      {
        (SQ <'\n'> <'\tinit_git &&\n'> <'\tgit fetch svnsim &&\n'> 
          <'\ttest_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master  &&\n'> <'\tcp .git/refs/remotes/svnsim/master master.good\n'>
        )
      }
    )
    (C {<test_debug>} 
      {
        (SQ <'\n'> <'\tcat .git/refs/svn/svnsim/master\n'> <'\tcat .git/refs/remotes/svnsim/master\n'>)
      }
    )
    (C {<test_expect_success>} {<REMOTE_SVN>} {(SQ <'repeated fetch, nothing shall change'>)} 
      {
        (SQ <'\n'> <'\tgit fetch svnsim &&\n'> 
          <'\ttest_cmp master.good .git/refs/remotes/svnsim/master\n'>
        )
      }
    )
    (C {<test_expect_success>} {<REMOTE_SVN>} {(SQ <'fetch from a file:// url gives the same result'>)} 
      {(SQ <'\n'> <'\tgit fetch svnfile\n'>)}
    )
    (C {<test_expect_failure>} {<REMOTE_SVN>} 
      {(SQ <'the sha1 differ because the git-svn-id line in the commit msg contains the url'>)} {(SQ <'\n'> <'\ttest_cmp .git/refs/remotes/svnfile/master .git/refs/remotes/svnsim/master\n'>)}
    )
    (C {<test_expect_success>} {<REMOTE_SVN>} {(SQ <'mark-file regeneration'>)} 
      {
        (SQ <'\n'> 
          <
'\t# filter out any other marks, that can not be regenerated. Only up to 3 digit revisions are allowed here\n'
          > <'\tgrep ":[0-9]\\{1,3\\} " $MARKSPATH/svnsim.marks > $MARKSPATH/svnsim.marks.old &&\n'> 
          <'\trm $MARKSPATH/svnsim.marks &&\n'> <'\tgit fetch svnsim &&\n'> <'\ttest_cmp $MARKSPATH/svnsim.marks.old $MARKSPATH/svnsim.marks\n'>
        )
      }
    )
    (C {<test_expect_success>} {<REMOTE_SVN>} {(SQ <'incremental imports must lead to the same head'>)} 
      {
        (SQ <'\n'> <'\tSVNRMAX=3 &&\n'> <'\texport SVNRMAX &&\n'> <'\tinit_git &&\n'> 
          <'\tgit fetch svnsim &&\n'> <'\ttest_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master  &&\n'> 
          <'\tunset SVNRMAX &&\n'> <'\tgit fetch svnsim &&\n'> <'\ttest_cmp master.good .git/refs/remotes/svnsim/master\n'>
        )
      }
    )
    (C {<test_debug>} {(SQ <'git branch -a'>)})
    (C {<test_done>})
  ]
)