(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'tests remote-svn' span_id:6))}
          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: [(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 
                        (Token
                          id: Id.Lit_Chars
                          val: 'skipping remote-svn tests, python not available'
                          span_id: 32
                        )
                      )
                    }
                  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.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:67)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:68)) (OF)}
          here_end_span_id: 72
          stdin_parts: [
            ('exec "$PYTHON_PATH" "$GIT_BUILD_DIR/contrib/svn-fe/svnrdump_sim.py" "$@"\n')
          ]
        )
      ]
    )
    (command.ShFunction
      name: init_git
      body: 
        (command.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_Other ':') (Id.Lit_Other ':') (sim) (Id.Lit_Other ':') (//) 
                    ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/t9154/svn.dump)
                  }
                )
              ]
            )
            (C {(git)} {(remote)} {(add)} {(svnfile)} 
              {(testsvn) (Id.Lit_Other ':') (Id.Lit_Other ':') (file) (Id.Lit_Other ':') (//) 
                ($ Id.VSub_DollarName '$TEST_DIRECTORY') (/t9154/svn.dump)
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (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 (Token id:Id.Lit_Chars val:'\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\tgit --version\n' span_id:169) (Token id:Id.Lit_Chars val:'\ttype git\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\ttype svnrdump\n' span_id:171)
        )
      }
    )
    (C {(test_expect_success)} {(REMOTE_SVN)} 
      {(SQ (Token id:Id.Lit_Chars val:'simple fetch' span_id:180))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\tinit_git &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\tgit fetch svnsim &&\n' span_id:186) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master  &&\n'
            span_id: 187
          ) (Token id:Id.Lit_Chars val:'\tcp .git/refs/remotes/svnsim/master master.good\n' span_id:188)
        )
      }
    )
    (C {(test_debug)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\tcat .git/refs/svn/svnsim/master\n' span_id:196) (Token id:Id.Lit_Chars val:'\tcat .git/refs/remotes/svnsim/master\n' span_id:197)
        )
      }
    )
    (C {(test_expect_success)} {(REMOTE_SVN)} 
      {(SQ (Token id:Id.Lit_Chars val:'repeated fetch, nothing shall change' span_id:206))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'\tgit fetch svnsim &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest_cmp master.good .git/refs/remotes/svnsim/master\n' span_id:212)
        )
      }
    )
    (C {(test_expect_success)} {(REMOTE_SVN)} 
      {(SQ (Token id:Id.Lit_Chars val:'fetch from a file:// url gives the same result' span_id:221))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\tgit fetch svnfile\n' span_id:226)
        )
      }
    )
    (C {(test_expect_failure)} {(REMOTE_SVN)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'the sha1 differ because the git-svn-id line in the commit msg contains the url'
            span_id: 235
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:239) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp .git/refs/remotes/svnfile/master .git/refs/remotes/svnsim/master\n'
            span_id: 240
          )
        )
      }
    )
    (C {(test_expect_success)} {(REMOTE_SVN)} 
      {(SQ (Token id:Id.Lit_Chars val:'mark-file regeneration' span_id:249))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) 
          (Token
            id: Id.Lit_Chars
            val: 
'\t# filter out any other marks, that can not be regenerated. Only up to 3 digit revisions are allowed here\n'
            span_id: 254
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgrep ":[0-9]\\{1,3\\} " $MARKSPATH/svnsim.marks > $MARKSPATH/svnsim.marks.old &&\n'
            span_id: 255
          ) (Token id:Id.Lit_Chars val:'\trm $MARKSPATH/svnsim.marks &&\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'\tgit fetch svnsim &&\n' span_id:257) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp $MARKSPATH/svnsim.marks.old $MARKSPATH/svnsim.marks\n'
            span_id: 258
          )
        )
      }
    )
    (C {(test_expect_success)} {(REMOTE_SVN)} 
      {(SQ (Token id:Id.Lit_Chars val:'incremental imports must lead to the same head' span_id:267))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:271) 
          (Token id:Id.Lit_Chars val:'\tSVNRMAX=3 &&\n' span_id:272) (Token id:Id.Lit_Chars val:'\texport SVNRMAX &&\n' span_id:273) 
          (Token id:Id.Lit_Chars val:'\tinit_git &&\n' span_id:274) (Token id:Id.Lit_Chars val:'\tgit fetch svnsim &&\n' span_id:275) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master  &&\n'
            span_id: 276
          ) (Token id:Id.Lit_Chars val:'\tunset SVNRMAX &&\n' span_id:277) 
          (Token id:Id.Lit_Chars val:'\tgit fetch svnsim &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\ttest_cmp master.good .git/refs/remotes/svnsim/master\n' span_id:279)
        )
      }
    )
    (C {(test_debug)} {(SQ (Token id:Id.Lit_Chars val:'git branch -a' span_id:286))})
    (C {(test_done)})
  ]
)