(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:'git svn init/clone tests' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(Id.KW_Set set)} {(-e)})
    (C {(rm)} {(-r)} {(.git)})
    (C {(mkdir)} {(tmp)})
    (C {(cd)} {(tmp)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup svnrepo' span_id:49))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\tmkdir project project/trunk project/branches project/tags &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\techo foo > project/trunk/foo &&\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\tsvn_cmd import -m "$test_description" project "$svnrepo"/project &&\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\trm -rf project\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\t' span_id:58)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'basic clone' span_id:65))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d trunk &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit svn clone "$svnrepo"/project/trunk &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\ttest -d trunk/.git/svn &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\ttest -e trunk/foo &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\trm -rf trunk\n' span_id:74) (Token id:Id.Lit_Chars val:'\t' span_id:75)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone to target directory' span_id:82))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d target &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\tgit svn clone "$svnrepo"/project/trunk target &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\ttest -d target/.git/svn &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\ttest -e target/foo &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\trm -rf target\n' span_id:91) (Token id:Id.Lit_Chars val:'\t' span_id:92)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'clone with --stdlayout' span_id:99))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit svn clone -s "$svnrepo"/project &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\ttest -d project/.git/svn &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest -e project/foo &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\trm -rf project\n' span_id:108) (Token id:Id.Lit_Chars val:'\t' span_id:109)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone to target directory with --stdlayout' span_id:116))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d target &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\tgit svn clone -s "$svnrepo"/project target &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\ttest -d target/.git/svn &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest -e target/foo &&\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\trm -rf target\n' span_id:125) (Token id:Id.Lit_Chars val:'\t' span_id:126)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init without -s/-T/-b/-t does not warn' span_id:133))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d trunk &&\n' span_id:138) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit svn init "$svnrepo"/project/trunk trunk 2>warning &&\n'
            span_id: 139
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail grep -q prefix warning &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\trm -rf trunk &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\t' span_id:143)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone without -s/-T/-b/-t does not warn' span_id:150))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d trunk &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\tgit svn clone "$svnrepo"/project/trunk 2>warning &&\n' span_id:156) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail grep -q prefix warning &&\n'
            span_id: 157
          ) (Token id:Id.Lit_Chars val:'\trm -rf trunk &&\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:159) (Token id:Id.Lit_Chars val:'\t' span_id:160)
        )
      }
    )
    (command.ShFunction
      name: test_svn_configured_prefix
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:prefix)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [172]
                    )
                  ]
                )
                (command.Simple
                  words: [{(cat)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:180)
                      fd: -1
                      arg_word: {(expect)}
                    )
                    (redir.HereDoc
                      op: (Token id:Id.Redir_DLess val:'<<' span_id:183)
                      fd: -1
                      here_begin: {(EOF)}
                      here_end_span_id: 204
                      stdin_parts: [
                        ('project/trunk:refs/remotes/')
                        (${ Id.VSub_Name prefix)
                        ('trunk\n')
                        ('project/branches/*:refs/remotes/')
                        (${ Id.VSub_Name prefix)
                        ('*\n')
                        ('project/tags/*:refs/remotes/')
                        (${ Id.VSub_Name prefix)
                        ('tags/*\n')
                      ]
                    )
                  ]
                )
                (C {(test)} {(Id.KW_Bang '!')} {(-f)} {(actual)})
                (command.Simple
                  words: [
                    {(git)}
                    {(--git-dir) (Id.Lit_Equals '=') (project/.git)}
                    {(config)}
                    {(svn-remote.svn.fetch)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:227)
                      fd: -1
                      arg_word: {(actual)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(git)}
                    {(--git-dir) (Id.Lit_Equals '=') (project/.git)}
                    {(config)}
                    {(svn-remote.svn.branches)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:243)
                      fd: -1
                      arg_word: {(actual)}
                    )
                  ]
                )
                (command.Simple
                  words: [
                    {(git)}
                    {(--git-dir) (Id.Lit_Equals '=') (project/.git)}
                    {(config)}
                    {(svn-remote.svn.tags)}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:259)
                      fd: -1
                      arg_word: {(actual)}
                    )
                  ]
                )
                (C {(test_cmp)} {(expect)} {(actual)})
                (C {(rm)} {(-f)} {(expect)} {(actual)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init with -s/-T/-b/-t assumes --prefix=origin/' span_id:288))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\tgit svn init -s "$svnrepo"/project project 2>warning &&\n' span_id:294) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail grep -q prefix warning &&\n'
            span_id: 295
          ) (Token id:Id.Lit_Chars val:'\ttest_svn_configured_prefix "origin/" &&\n' span_id:296) 
          (Token id:Id.Lit_Chars val:'\trm -rf project &&\n' span_id:297) (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:298) 
          (Token id:Id.Lit_Chars val:'\t' span_id:299)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'clone with -s/-T/-b/-t assumes --prefix=origin/' span_id:306))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:310) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:311) (Token id:Id.Lit_Chars val:'\tgit svn clone -s "$svnrepo"/project 2>warning &&\n' span_id:312) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail grep -q prefix warning &&\n'
            span_id: 313
          ) (Token id:Id.Lit_Chars val:'\ttest_svn_configured_prefix "origin/" &&\n' span_id:314) 
          (Token id:Id.Lit_Chars val:'\trm -rf project &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:316) 
          (Token id:Id.Lit_Chars val:'\t' span_id:317)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'init with -s/-T/-b/-t and --prefix "" still works'
            span_id: 324
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:328) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:329) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit svn init -s "$svnrepo"/project project --prefix "" 2>warning &&\n'
            span_id: 330
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail grep -q prefix warning &&\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\ttest_svn_configured_prefix "" &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\trm -rf project &&\n' span_id:333) 
          (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:334) (Token id:Id.Lit_Chars val:'\t' span_id:335)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'clone with -s/-T/-b/-t and --prefix "" still works'
            span_id: 342
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:346) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:347) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit svn clone -s "$svnrepo"/project --prefix "" 2>warning &&\n'
            span_id: 348
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail grep -q prefix warning &&\n' span_id:349) 
          (Token id:Id.Lit_Chars val:'\ttest_svn_configured_prefix "" &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\trm -rf project &&\n' span_id:351) 
          (Token id:Id.Lit_Chars val:'\trm -f warning\n' span_id:352) (Token id:Id.Lit_Chars val:'\t' span_id:353)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'init with -T as a full url works' span_id:360))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) 
          (Token id:Id.Lit_Chars val:'\ttest ! -d project &&\n' span_id:365) (Token id:Id.Lit_Chars val:'\tgit svn init -T "$svnrepo"/project/trunk project &&\n' span_id:366) 
          (Token id:Id.Lit_Chars val:'\trm -rf project\n' span_id:367) (Token id:Id.Lit_Chars val:'\t' span_id:368)
        )
      }
    )
    (C {(test_done)})
  ]
)