(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 globbing refspecs' span_id:8))}
          spids: [6]
        )
      ]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:18)
          fd: -1
          arg_word: {(expect.end)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:22)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 30
          stdin_parts: [('the end\n') ('hi\n') ('start a new branch\n') ('initial\n')]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test refspec globbing' span_id:35))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '\tmkdir -p trunk/src/a trunk/src/b trunk/doc &&\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'\techo "hello world" > trunk/src/a/readme &&\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "goodbye world" > trunk/src/b/readme &&\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'\tsvn_cmd import -m "initial" trunk "$svnrepo"/trunk &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\tsvn_cmd co "$svnrepo" tmp &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\t(\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\tmkdir branches branches/v1 tags &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add branches tags &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp trunk branches/v1/start &&\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "start a new branch" &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "hi" >> branches/v1/start/src/b/readme &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\t\tpoke branches/v1/start/src/b/readme &&\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "hey" >> branches/v1/start/src/a/readme &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\t\tpoke branches/v1/start/src/a/readme &&\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "hi" &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd cp branches/v1/start tags/end &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\t\techo "bye" >> tags/end/src/b/readme &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo "aye" >> tags/end/src/a/readme &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/a/readme &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "the end" &&\n' span_id:63) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "byebye" >> tags/end/src/b/readme &&\n'
            span_id: 64
          ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:65) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "nothing to see here"\n'
            span_id: 66
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add svn-remote.svn.url "$svnrepo" &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.fetch \\\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "trunk/src/a:refs/remotes/trunk" &&\n'
            span_id: 70
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.branches \\\n' span_id:71) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "branches/*/*/src/a:refs/remotes/branches/*/*" &&\n'
            span_id: 72
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.tags\\\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "tags/*/src/a:refs/remotes/tags/*" &&\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\tgit svn multi-fetch &&\n' span_id:75) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --pretty=oneline refs/remotes/tags/end | \\\n'
            span_id: 76
          ) (Token id:Id.Lit_Chars val:'\t    sed -e "s/^.\\{41\\}//" > output.end &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.end output.end &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\ttest "$(git rev-parse refs/remotes/tags/end~1)" = \\\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t"$(git rev-parse refs/remotes/branches/v1/start)" &&\n'
            span_id: 80
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git rev-parse refs/remotes/branches/v1/start~2)" = \\\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\t\t"$(git rev-parse refs/remotes/trunk)" &&\n' span_id:82) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git rev-parse refs/remotes/tags/end@3\n'
            span_id: 83
          ) (Token id:Id.Lit_Chars val:'\t' span_id:84)
        )
      }
    )
    (command.Simple
      words: [{(echo)} {(try)} {(to)} {(try)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:96)
          fd: -1
          arg_word: {(expect.two)}
        )
      ]
    )
    (command.Simple
      words: [{(echo)} {(nothing)} {(to)} {(see)} {(here)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_DGreat val:'>>' span_id:110)
          fd: -1
          arg_word: {(expect.two)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)} {(expect.end)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_DGreat val:'>>' span_id:118)
          fd: -1
          arg_word: {(expect.two)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test left-hand-side only globbing' span_id:126))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add svn-remote.two.url "$svnrepo" &&\n'
            span_id: 131
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&\n'
            span_id: 132
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.two.branches \\\n' span_id:133) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "branches/*/*:refs/remotes/two/branches/*/*" &&\n'
            span_id: 134
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.two.tags \\\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "tags/*:refs/remotes/two/tags/*" &&\n'
            span_id: 136
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\techo "try try" >> tags/end/src/b/readme &&\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "try to try"\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\tgit svn fetch two &&\n' span_id:143) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-list refs/remotes/two/tags/end | wc -l) -eq 6 &&\n'
            span_id: 144
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-list refs/remotes/two/branches/v1/start | wc -l) -eq 3 &&\n'
            span_id: 145
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse refs/remotes/two/branches/v1/start~2) = \\\n'
            span_id: 146
          ) (Token id:Id.Lit_Chars val:'\t     $(git rev-parse refs/remotes/two/trunk) &&\n' span_id:147) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse refs/remotes/two/tags/end~3) = \\\n'
            span_id: 148
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t     $(git rev-parse refs/remotes/two/branches/v1/start) &&\n'
            span_id: 149
          ) (Token id:Id.Lit_Chars val:'\tgit log --pretty=oneline refs/remotes/two/tags/end | \\\n' span_id:150) 
          (Token
            id: Id.Lit_Chars
            val: '\t    sed -e "s/^.\\{41\\}//" > output.two &&\n'
            span_id: 151
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.two output.two\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t' span_id:153)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:158)
          fd: -1
          arg_word: {(expect.four)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:162)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 171
          stdin_parts: [
            ('adios\n')
            ('adding more\n')
            ('Changed 2 in v2/start\n')
            ('Another versioned branch\n')
            ('initial\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test another branch' span_id:176))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:182) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir branches/v2 &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add branches/v2 &&\n' span_id:184) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd cp trunk branches/v2/start &&\n'
            span_id: 185
          ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Another versioned branch" &&\n' span_id:186) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\t\techo "hello" >> branches/v2/start/src/b/readme &&\n' span_id:188) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tpoke branches/v2/start/src/b/readme &&\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\t\techo "howdy" >> branches/v2/start/src/a/readme &&\n' span_id:190) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tpoke branches/v2/start/src/a/readme &&\n'
            span_id: 191
          ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Changed 2 in v2/start" &&\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp branches/v2/start tags/next &&\n' span_id:194) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "bye" >> tags/next/src/b/readme &&\n'
            span_id: 195
          ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/b/readme &&\n' span_id:196) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo "aye" >> tags/next/src/a/readme &&\n'
            span_id: 197
          ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/a/readme &&\n' span_id:198) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsvn_cmd commit -m "adding more" &&\n'
            span_id: 199
          ) (Token id:Id.Lit_Chars val:'\t\techo "byebye" >> tags/next/src/b/readme &&\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/b/readme &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "adios"\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.url "$svnrepo" &&\n' span_id:204) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add svn-remote.four.fetch trunk:refs/remotes/four/trunk &&\n'
            span_id: 205
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.branches \\\n' span_id:206) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "branches/*/*:refs/remotes/four/branches/*/*" &&\n'
            span_id: 207
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.tags \\\n' span_id:208) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "tags/*:refs/remotes/four/tags/*" &&\n'
            span_id: 209
          ) (Token id:Id.Lit_Chars val:'\tgit svn fetch four &&\n' span_id:210) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-list refs/remotes/four/tags/next | wc -l) -eq 5 &&\n'
            span_id: 211
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-list refs/remotes/four/branches/v2/start | wc -l) -eq 3 &&\n'
            span_id: 212
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse refs/remotes/four/branches/v2/start~2) = \\\n'
            span_id: 213
          ) (Token id:Id.Lit_Chars val:'\t     $(git rev-parse refs/remotes/four/trunk) &&\n' span_id:214) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse refs/remotes/four/tags/next~2) = \\\n'
            span_id: 215
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t     $(git rev-parse refs/remotes/four/branches/v2/start) &&\n'
            span_id: 216
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit log --pretty=oneline refs/remotes/four/tags/next | \\\n'
            span_id: 217
          ) (Token id:Id.Lit_Chars val:'\t    sed -e "s/^.\\{41\\}//" > output.four &&\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.four output.four\n' span_id:219) (Token id:Id.Lit_Chars val:'\t' span_id:220)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'prepare test disallow multiple globs' span_id:227))} 
      {
        (DQ ('\n') ('cat >expect.three <<EOF\n') 
          ("Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/*/t/*\n") ('\n') ('EOF\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test disallow multiple globs' span_id:243))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:247) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config --add svn-remote.three.url "$svnrepo" &&\n'
            span_id: 248
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.fetch \\\n' span_id:249) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 trunk:refs/remotes/three/trunk &&\n'
            span_id: 250
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.branches \\\n' span_id:251) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "branches/*/t/*:refs/remotes/three/branches/*/*" &&\n'
            span_id: 252
          ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.tags \\\n' span_id:253) 
          (Token
            id: Id.Lit_Chars
            val: '\t                 "tags/*:refs/remotes/three/tags/*" &&\n'
            span_id: 254
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:255) 
          (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\techo "try try" >> tags/end/src/b/readme &&\n' span_id:257) 
          (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "try to try"\n' span_id:259) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:260) (Token id:Id.Lit_Chars val:'\ttest_must_fail git svn fetch three 2> stderr.three &&\n' span_id:261) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect.three stderr.three\n' span_id:262) (Token id:Id.Lit_Chars val:'\t' span_id:263)
        )
      }
    )
    (C {(test_done)})
  ]
)