(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 branches/v1 tags &&\n"> <"\t\tsvn_cmd add branches tags &&\n"> <"\t\tsvn_cmd cp trunk branches/v1/start &&\n"> 
          <"\t\tsvn_cmd commit -m \"start a new branch\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\techo \"hi\" >> branches/v1/start/src/b/readme &&\n"> 
          <"\t\tpoke branches/v1/start/src/b/readme &&\n"> <"\t\techo \"hey\" >> branches/v1/start/src/a/readme &&\n"> 
          <"\t\tpoke branches/v1/start/src/a/readme &&\n"> <"\t\tsvn_cmd commit -m \"hi\" &&\n"> <"\t\tsvn_cmd up &&\n"> 
          <"\t\tsvn_cmd cp branches/v1/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/v1/start)\" &&\n"> 
          <"\ttest \"$(git rev-parse refs/remotes/branches/v1/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/v1/start | wc -l) -eq 3 &&\n"> 
          <"\ttest $(git rev-parse refs/remotes/two/branches/v1/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/v1/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">
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{(expect.four)} spids:[156])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: 
            {
              (DQ ("adios\n") ("adding more\n") ("Changed 2 in v2/start\n") 
                ("Another versioned branch\n") ("initial\n")
              )
            }
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [160]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <"test another branch">)} 
      {
        (SQ <"\n"> <"\t(\n"> <"\t\tcd tmp &&\n"> <"\t\tmkdir branches/v2 &&\n"> 
          <"\t\tsvn_cmd add branches/v2 &&\n"> <"\t\tsvn_cmd cp trunk branches/v2/start &&\n"> 
          <"\t\tsvn_cmd commit -m \"Another versioned branch\" &&\n"> <"\t\tsvn_cmd up &&\n"> <"\t\techo \"hello\" >> branches/v2/start/src/b/readme &&\n"> 
          <"\t\tpoke branches/v2/start/src/b/readme &&\n"> <"\t\techo \"howdy\" >> branches/v2/start/src/a/readme &&\n"> 
          <"\t\tpoke branches/v2/start/src/a/readme &&\n"> <"\t\tsvn_cmd commit -m \"Changed 2 in v2/start\" &&\n"> <"\t\tsvn_cmd up &&\n"> 
          <"\t\tsvn_cmd cp branches/v2/start tags/next &&\n"> <"\t\techo \"bye\" >> tags/next/src/b/readme &&\n"> <"\t\tpoke tags/next/src/b/readme &&\n"> 
          <"\t\techo \"aye\" >> tags/next/src/a/readme &&\n"> <"\t\tpoke tags/next/src/a/readme &&\n"> <"\t\tsvn_cmd commit -m \"adding more\" &&\n"> 
          <"\t\techo \"byebye\" >> tags/next/src/b/readme &&\n"> <"\t\tpoke tags/next/src/b/readme &&\n"> <"\t\tsvn_cmd commit -m \"adios\"\n"> <"\t) &&\n"> 
          <"\tgit config --add svn-remote.four.url \"$svnrepo\" &&\n"> <"\tgit config --add svn-remote.four.fetch trunk:refs/remotes/four/trunk &&\n"> 
          <"\tgit config --add svn-remote.four.branches \\\n"> <"\t                 \"branches/*/*:refs/remotes/four/branches/*/*\" &&\n"> 
          <"\tgit config --add svn-remote.four.tags \\\n"> <"\t                 \"tags/*:refs/remotes/four/tags/*\" &&\n"> <"\tgit svn fetch four &&\n"> 
          <"\ttest $(git rev-list refs/remotes/four/tags/next | wc -l) -eq 5 &&\n"> <"\ttest $(git rev-list refs/remotes/four/branches/v2/start | wc -l) -eq 3 &&\n"> 
          <"\ttest $(git rev-parse refs/remotes/four/branches/v2/start~2) = \\\n"> <"\t     $(git rev-parse refs/remotes/four/trunk) &&\n"> 
          <"\ttest $(git rev-parse refs/remotes/four/tags/next~2) = \\\n"> <"\t     $(git rev-parse refs/remotes/four/branches/v2/start) &&\n"> 
          <"\tgit log --pretty=oneline refs/remotes/four/tags/next | \\\n"> <"\t    sed -e \"s/^.\\{41\\}//\" > output.four &&\n"> <"\ttest_cmp expect.four output.four\n"> <"\t">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"prepare test disallow multiple 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 multiple 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)})
  ]
)