(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git svn globbing refspecs with prefixed globs'>)}
          spids: [3]
        )
      ]
      spids: [3]
    )
    (C {(.)} {(./lib-git-svn.sh)})
    (C {(test_expect_success)} {(SQ <'prepare test refspec prefixed globbing'>)} 
      {
        (SQ <'\n'> <'\tcat >expect.end <<EOF\n'> <'the end\n'> <'hi\n'> <'start a new branch\n'> 
          <'initial\n'> <'EOF\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test refspec prefixed 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/b_start &&\n'> <'\t\tsvn_cmd commit -m "start a new branch" &&\n'> 
          <'\t\tsvn_cmd up &&\n'> <'\t\techo "hi" >>branches/b_start/src/b/readme &&\n'> <'\t\tpoke branches/b_start/src/b/readme &&\n'> 
          <'\t\techo "hey" >>branches/b_start/src/a/readme &&\n'> <'\t\tpoke branches/b_start/src/a/readme &&\n'> <'\t\tsvn_cmd commit -m "hi" &&\n'> 
          <'\t\tsvn_cmd up &&\n'> <'\t\tsvn_cmd cp branches/b_start tags/t_end &&\n'> <'\t\techo "bye" >>tags/t_end/src/b/readme &&\n'> 
          <'\t\tpoke tags/t_end/src/b/readme &&\n'> <'\t\techo "aye" >>tags/t_end/src/a/readme &&\n'> <'\t\tpoke tags/t_end/src/a/readme &&\n'> 
          <'\t\tsvn_cmd commit -m "the end" &&\n'> <'\t\techo "byebye" >>tags/t_end/src/b/readme &&\n'> <'\t\tpoke tags/t_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\t\t "trunk/src/a:refs/remotes/trunk" &&\n'> <'\tgit config --add svn-remote.svn.branches \\\n'> 
          <'\t\t\t "branches/b_*/src/a:refs/remotes/branches/b_*" &&\n'> <'\tgit config --add svn-remote.svn.tags\\\n'> <'\t\t\t "tags/t_*/src/a:refs/remotes/tags/t_*" &&\n'> 
          <'\tgit svn multi-fetch &&\n'> <'\tgit log --pretty=oneline refs/remotes/tags/t_end | \\\n'> 
          <'\t    sed -e "s/^.\\{41\\}//" >output.end &&\n'> <'\ttest_cmp expect.end output.end &&\n'> 
          <'\ttest "$(git rev-parse refs/remotes/tags/t_end~1)" = \\\n'> <'\t\t"$(git rev-parse refs/remotes/branches/b_start)" &&\n'> 
          <'\ttest "$(git rev-parse refs/remotes/branches/b_start~2)" = \\\n'> <'\t\t"$(git rev-parse refs/remotes/trunk)" &&\n'> 
          <'\ttest_must_fail git rev-parse refs/remotes/tags/t_end@3\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'prepare test left-hand-side only prefixed globbing'>)} 
      {
        (SQ <'\n'> <'\techo try to try >expect.two &&\n'> 
          <'\techo nothing to see here >>expect.two &&\n'> <'\tcat expect.end >>expect.two\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test left-hand-side only prefixed 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\t\t "branches/b_*:refs/remotes/two/branches/*" &&\n'> <'\tgit config --add svn-remote.two.tags \\\n'> <'\t\t\t "tags/t_*:refs/remotes/two/tags/*" &&\n'> 
          <'\t(\n'> <'\t\tcd tmp &&\n'> <'\t\techo "try try" >>tags/t_end/src/b/readme &&\n'> 
          <'\t\tpoke tags/t_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/t_end | wc -l) -eq 6 &&\n'> <'\ttest $(git rev-list refs/remotes/two/branches/b_start | wc -l) -eq 3 &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/two/branches/b_start~2) = \\\n'> <'\t     $(git rev-parse refs/remotes/two/trunk) &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/two/tags/t_end~3) = \\\n'> <'\t     $(git rev-parse refs/remotes/two/branches/b_start) &&\n'> 
          <'\tgit log --pretty=oneline refs/remotes/two/tags/t_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 prefixed globs match just prefix'>)} 
      {
        (SQ <'\n'> <'\tcat >expect.three <<EOF\n'> <'Tag commit to t_\n'> <'Branch commit to b_\n'> 
          <'initial\n'> <'EOF\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test prefixed globs match just prefix'>)} 
      {
        (SQ <'\n'> <'\tgit config --add svn-remote.three.url "$svnrepo" &&\n'> 
          <'\tgit config --add svn-remote.three.fetch \\\n'> <'\t\t\t trunk:refs/remotes/three/trunk &&\n'> <'\tgit config --add svn-remote.three.branches \\\n'> 
          <'\t\t\t "branches/b_*:refs/remotes/three/branches/*" &&\n'> <'\tgit config --add svn-remote.three.tags \\\n'> <'\t\t\t "tags/t_*:refs/remotes/three/tags/*" &&\n'> 
          <'\t(\n'> <'\t\tcd tmp &&\n'> <'\t\tsvn_cmd cp trunk branches/b_ &&\n'> 
          <'\t\techo "Branch commit to b_" >>branches/b_/src/a/readme &&\n'> <'\t\tpoke branches/b_/src/a/readme &&\n'> <'\t\tsvn_cmd commit -m "Branch commit to b_" &&\n'> 
          <'\t\tsvn_cmd up && svn_cmd cp branches/b_ tags/t_ &&\n'> <'\t\techo "Tag commit to t_" >>tags/t_/src/a/readme &&\n'> <'\t\tpoke tags/t_/src/a/readme &&\n'> 
          <'\t\tsvn_cmd commit -m "Tag commit to t_" &&\n'> <'\t\tsvn_cmd up\n'> <'\t) &&\n'> <'\tgit svn fetch three &&\n'> 
          <'\ttest $(git rev-list refs/remotes/three/branches/b_ | wc -l) -eq 2 &&\n'> <'\ttest $(git rev-list refs/remotes/three/tags/t_ | wc -l) -eq 3 &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/three/branches/b_~1) = \\\n'> <'\t     $(git rev-parse refs/remotes/three/trunk) &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/three/tags/t_~1) = \\\n'> <'\t     $(git rev-parse refs/remotes/three/branches/b_) &&\n'> 
          <'\tgit log --pretty=oneline refs/remotes/three/tags/t_ | \\\n'> <'\t    sed -e "s/^.\\{41\\}//" >output.three &&\n'> <'\ttest_cmp expect.three output.three\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'prepare test disallow prefixed multi-globs'>)} 
      {
        (DQ ('\n') ('cat >expect.four <<EOF\n') 
          ("Only one set of wildcards (e.g. '*' or '*/*/*') is supported: branches/b_*/t/*\n") ('\n') ('EOF\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test disallow prefixed multi-globs'>)} 
      {
        (SQ <'\n'> <'\tgit config --add svn-remote.four.url "$svnrepo" &&\n'> 
          <'\tgit config --add svn-remote.four.fetch \\\n'> <'\t\t\t trunk:refs/remotes/four/trunk &&\n'> <'\tgit config --add svn-remote.four.branches \\\n'> 
          <'\t\t\t "branches/b_*/t/*:refs/remotes/four/branches/*" &&\n'> <'\tgit config --add svn-remote.four.tags \\\n'> <'\t\t\t "tags/t_*/*:refs/remotes/four/tags/*" &&\n'> 
          <'\t(\n'> <'\t\tcd tmp &&\n'> <'\t\techo "try try" >>tags/t_end/src/b/readme &&\n'> 
          <'\t\tpoke tags/t_end/src/b/readme &&\n'> <'\t\tsvn_cmd commit -m "try to try"\n'> <'\t) &&\n'> 
          <'\ttest_must_fail git svn fetch four 2>stderr.four &&\n'> <'\ttest_cmp expect.four stderr.four &&\n'> <'\tgit config --unset svn-remote.four.branches &&\n'> 
          <'\tgit config --unset svn-remote.four.tags\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'prepare test globbing in the middle of the word'>)} 
      {
        (SQ <'\n'> <'\tcat >expect.five <<EOF\n'> <'Tag commit to fghij\n'> <'Branch commit to abcde\n'> 
          <'initial\n'> <'EOF\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test globbing in the middle of the word'>)} 
      {
        (SQ <'\n'> <'\tgit config --add svn-remote.five.url "$svnrepo" &&\n'> 
          <'\tgit config --add svn-remote.five.fetch \\\n'> <'\t\t\t trunk:refs/remotes/five/trunk &&\n'> <'\tgit config --add svn-remote.five.branches \\\n'> 
          <'\t\t\t "branches/a*e:refs/remotes/five/branches/*" &&\n'> <'\tgit config --add svn-remote.five.tags \\\n'> <'\t\t\t "tags/f*j:refs/remotes/five/tags/*" &&\n'> 
          <'\t(\n'> <'\t\tcd tmp &&\n'> <'\t\tsvn_cmd cp trunk branches/abcde &&\n'> 
          <'\t\techo "Branch commit to abcde" >>branches/abcde/src/a/readme &&\n'> <'\t\tpoke branches/b_/src/a/readme &&\n'> <'\t\tsvn_cmd commit -m "Branch commit to abcde" &&\n'> 
          <'\t\tsvn_cmd up &&\n'> <'\t\tsvn_cmd cp branches/abcde tags/fghij &&\n'> 
          <'\t\techo "Tag commit to fghij" >>tags/fghij/src/a/readme &&\n'> <'\t\tpoke tags/fghij/src/a/readme &&\n'> <'\t\tsvn_cmd commit -m "Tag commit to fghij" &&\n'> 
          <'\t\tsvn_cmd up\n'> <'\t) &&\n'> <'\tgit svn fetch five &&\n'> 
          <'\ttest $(git rev-list refs/remotes/five/branches/abcde | wc -l) -eq 2 &&\n'> <'\ttest $(git rev-list refs/remotes/five/tags/fghij | wc -l) -eq 3 &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/five/branches/abcde~1) = \\\n'> <'\t     $(git rev-parse refs/remotes/five/trunk) &&\n'> 
          <'\ttest $(git rev-parse refs/remotes/five/tags/fghij~1) = \\\n'> <'\t     $(git rev-parse refs/remotes/five/branches/abcde) &&\n'> 
          <'\tgit log --pretty=oneline refs/remotes/five/tags/fghij | \\\n'> <'\t    sed -e "s/^.\\{41\\}//" >output.five &&\n'> <'\ttest_cmp expect.five output.five\n'> <'\t'>
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'prepare test disallow multiple asterisks in one word'>)} 
      {
        (DQ ('\n') ('\techo ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) 
          ("Only one '*' is allowed in a pattern: 'a*c*e'") (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' >expect.six &&\n') ('\techo ') 
          (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' >>expect.six\n') ('\t')
        )
      }
    )
    (C {(test_expect_success)} {(SQ <'test disallow multiple asterisks in one word'>)} 
      {
        (SQ <'\n'> <'\tgit config --add svn-remote.six.url "$svnrepo" &&\n'> 
          <'\tgit config --add svn-remote.six.fetch \\\n'> <'\t\t\t trunk:refs/remotes/six/trunk &&\n'> <'\tgit config --add svn-remote.six.branches \\\n'> 
          <'\t\t\t "branches/a*c*e:refs/remotes/six/branches/*" &&\n'> <'\tgit config --add svn-remote.six.tags \\\n'> <'\t\t\t "tags/f*h*j:refs/remotes/six/tags/*" &&\n'> 
          <'\t(\n'> <'\t\tcd tmp &&\n'> <'\t\techo "try try" >>tags/fghij/src/b/readme &&\n'> 
          <'\t\tpoke tags/fghij/src/b/readme &&\n'> <'\t\tsvn_cmd commit -m "try to try"\n'> <'\t) &&\n'> 
          <'\ttest_must_fail git svn fetch six 2>stderr.six &&\n'> <'\ttest_cmp expect.six stderr.six\n'> <'\t'>
        )
      }
    )
    (C {(test_done)})
  ]
)