(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)}) ] )