(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git svn globbing refspecs">)}
          spids: [6]
        )
      ]
      spids: [6]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.end)} spids:[18])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ("the end\n") ("hi\n") ("start a new branch\n") ("initial\n"))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [22]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"test refspec globbing">)} 
      {
        (SQ <"\n"> <"\tmkdir -p trunk/src/a trunk/src/b trunk/doc &&\n"> 
          <"\techo \"hello world\" > trunk/src/a/readme &&\n"> <"\techo \"goodbye world\" > trunk/src/b/readme &&\n"> 
          <"\tsvn_cmd import -m \"initial\" trunk \"$svnrepo\"/trunk &&\n"> <"\tsvn_cmd co \"$svnrepo\" tmp &&\n"> <"\t(\n"> <"\t\tcd tmp &&\n"> <"\t\tmkdir branches tags &&\n"> 
          <"\t\tsvn_cmd add branches tags &&\n"> <"\t\tsvn_cmd cp trunk branches/start &&\n"> <"\t\tsvn_cmd commit -m \"start a new branch\" &&\n"> 
          <"\t\tsvn_cmd up &&\n"> <"\t\techo \"hi\" >> branches/start/src/b/readme &&\n"> <"\t\tpoke branches/start/src/b/readme &&\n"> 
          <"\t\techo \"hey\" >> branches/start/src/a/readme &&\n"> <"\t\tpoke branches/start/src/a/readme &&\n"> <"\t\tsvn_cmd commit -m \"hi\" &&\n"> 
          <"\t\tsvn_cmd up &&\n"> <"\t\tsvn_cmd cp branches/start tags/end &&\n"> <"\t\techo \"bye\" >> tags/end/src/b/readme &&\n"> 
          <"\t\tpoke tags/end/src/b/readme &&\n"> <"\t\techo \"aye\" >> tags/end/src/a/readme &&\n"> <"\t\tpoke tags/end/src/a/readme &&\n"> 
          <"\t\tsvn_cmd commit -m \"the end\" &&\n"> <"\t\techo \"byebye\" >> tags/end/src/b/readme &&\n"> <"\t\tpoke tags/end/src/b/readme &&\n"> 
          <"\t\tsvn_cmd commit -m \"nothing to see here\"\n"> <"\t) &&\n"> <"\tgit config --add svn-remote.svn.url \"$svnrepo\" &&\n"> 
          <"\tgit config --add svn-remote.svn.fetch \\\n"> <"\t                 \"trunk/src/a:refs/remotes/trunk\" &&\n"> 
          <"\tgit config --add svn-remote.svn.branches \\\n"> <"\t                 \"branches/*/src/a:refs/remotes/branches/*\" &&\n"> 
          <"\tgit config --add svn-remote.svn.tags\\\n"> <"\t                 \"tags/*/src/a:refs/remotes/tags/*\" &&\n"> <"\tgit svn multi-fetch &&\n"> 
          <"\tgit log --pretty=oneline refs/remotes/tags/end | \\\n"> <"\t    sed -e \"s/^.\\{41\\}//\" > output.end &&\n"> <"\ttest_cmp expect.end output.end &&\n"> 
          <"\ttest \"$(git rev-parse refs/remotes/tags/end~1)\" = \\\n"> <"\t\t\"$(git rev-parse refs/remotes/branches/start)\" &&\n"> 
          <"\ttest \"$(git rev-parse refs/remotes/branches/start~2)\" = \\\n"> <"\t\t\"$(git rev-parse refs/remotes/trunk)\" &&\n"> 
          <"\ttest_must_fail git rev-parse refs/remotes/tags/end@3\n"> <"\t">
        )
      }
    )
    (SimpleCommand
      words: [{(echo)} {(try)} {(to)} {(try)}]
      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect.two)} spids:[94])]
    )
    (SimpleCommand
      words: [{(echo)} {(nothing)} {(to)} {(see)} {(here)}]
      redirects: [(Redir op_id:Redir_DGreat fd:-1 arg_word:{(expect.two)} spids:[108])]
    )
    (SimpleCommand
      words: [{(cat)} {(expect.end)}]
      redirects: [(Redir op_id:Redir_DGreat fd:-1 arg_word:{(expect.two)} spids:[116])]
    )
    (C {(test_expect_success)} {(SQ <"test left-hand-side only globbing">)} 
      {
        (SQ <"\n"> <"\tgit config --add svn-remote.two.url \"$svnrepo\" &&\n"> 
          <"\tgit config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&\n"> <"\tgit config --add svn-remote.two.branches \\\n"> 
          <"\t                 \"branches/*:refs/remotes/two/branches/*\" &&\n"> <"\tgit config --add svn-remote.two.tags \\\n"> 
          <"\t                 \"tags/*:refs/remotes/two/tags/*\" &&\n"> <"\t(\n"> <"\t\tcd tmp &&\n"> <"\t\techo \"try try\" >> tags/end/src/b/readme &&\n"> 
          <"\t\tpoke tags/end/src/b/readme &&\n"> <"\t\tsvn_cmd commit -m \"try to try\"\n"> <"\t) &&\n"> <"\tgit svn fetch two &&\n"> 
          <"\ttest $(git rev-list refs/remotes/two/tags/end | wc -l) -eq 6 &&\n"> <"\ttest $(git rev-list refs/remotes/two/branches/start | wc -l) -eq 3 &&\n"> 
          <"\ttest $(git rev-parse refs/remotes/two/branches/start~2) = \\\n"> <"\t     $(git rev-parse refs/remotes/two/trunk) &&\n"> 
          <"\ttest $(git rev-parse refs/remotes/two/tags/end~3) = \\\n"> <"\t     $(git rev-parse refs/remotes/two/branches/start) &&\n"> 
          <"\tgit log --pretty=oneline refs/remotes/two/tags/end | \\\n"> <"\t    sed -e \"s/^.\\{41\\}//\" > output.two &&\n"> <"\ttest_cmp expect.two output.two\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"prepare test disallow multi-globs">)} 
      {
        (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 <"test disallow multi-globs">)} 
      {
        (SQ <"\n"> <"\tgit config --add svn-remote.three.url \"$svnrepo\" &&\n"> 
          <"\tgit config --add svn-remote.three.fetch \\\n"> <"\t                 trunk:refs/remotes/three/trunk &&\n"> 
          <"\tgit config --add svn-remote.three.branches \\\n"> <"\t                 \"branches/*/t/*:refs/remotes/three/branches/*\" &&\n"> 
          <"\tgit config --add svn-remote.three.tags \\\n"> <"\t                 \"tags/*/*:refs/remotes/three/tags/*\" &&\n"> <"\t(\n"> <"\t\tcd tmp &&\n"> 
          <"\t\techo \"try try\" >> tags/end/src/b/readme &&\n"> <"\t\tpoke tags/end/src/b/readme &&\n"> <"\t\tsvn_cmd commit -m \"try to try\"\n"> <"\t) &&\n"> 
          <"\ttest_must_fail git svn fetch three 2> stderr.three &&\n"> <"\ttest_cmp expect.three stderr.three\n"> <"\t">
        )
      }
    )
    (C {(test_done)})
  ]
)