(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git svn globbing refspecs'>)}
          spids: [6]
        )
      ]
    )
    (C {<.>} {<'./lib-git-svn.sh'>})
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect.end>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {<EOF>}
              here_end_span_id: 30
              stdin_parts: [<'the end\n'> <'hi\n'> <'start a new branch\n'> <'initial\n'>]
            )
        )
      ]
      do_fork: T
    )
    (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'>
        )
      }
    )
    (command.Simple
      words: [{<echo>} {<try>} {<to>} {<try>}]
      redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect.two>})]
      do_fork: T
    )
    (command.Simple
      words: [{<echo>} {<nothing>} {<to>} {<see>} {<here>}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect.two>})]
      do_fork: T
    )
    (command.Simple
      words: [{<cat>} {<expect.end>}]
      redirects: [(redir op:<Id.Redir_DGreat '>>'> loc:(redir_loc.Fd fd:1) arg:{<expect.two>})]
      do_fork: T
    )
    (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'>
        )
      }
    )
    (command.Simple
      words: [{<cat>}]
      redirects: [
        (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expect.four>})
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              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'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (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>})
  ]
)