(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git svn globbing refspecs' span_id:8))} spids: [6] ) ] ) (C {(.)} {(./lib-git-svn.sh)}) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:18) fd: -1 arg_word: {(expect.end)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:22) fd: -1 here_begin: {(EOF)} here_end_span_id: 30 stdin_parts: [('the end\n') ('hi\n') ('start a new branch\n') ('initial\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test refspec globbing' span_id:35))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id: Id.Lit_Chars val: '\tmkdir -p trunk/src/a trunk/src/b trunk/doc &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\techo "hello world" > trunk/src/a/readme &&\n' span_id:41) (Token id: Id.Lit_Chars val: '\techo "goodbye world" > trunk/src/b/readme &&\n' span_id: 42 ) (Token id:Id.Lit_Chars val:'\tsvn_cmd import -m "initial" trunk "$svnrepo"/trunk &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\tsvn_cmd co "$svnrepo" tmp &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\t(\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\tmkdir branches branches/v1 tags &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add branches tags &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp trunk branches/v1/start &&\n' span_id:49) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd commit -m "start a new branch" &&\n' span_id: 50 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:51) (Token id: Id.Lit_Chars val: '\t\techo "hi" >> branches/v1/start/src/b/readme &&\n' span_id: 52 ) (Token id:Id.Lit_Chars val:'\t\tpoke branches/v1/start/src/b/readme &&\n' span_id:53) (Token id: Id.Lit_Chars val: '\t\techo "hey" >> branches/v1/start/src/a/readme &&\n' span_id: 54 ) (Token id:Id.Lit_Chars val:'\t\tpoke branches/v1/start/src/a/readme &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "hi" &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:57) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd cp branches/v1/start tags/end &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\t\techo "bye" >> tags/end/src/b/readme &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo "aye" >> tags/end/src/a/readme &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/a/readme &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "the end" &&\n' span_id:63) (Token id: Id.Lit_Chars val: '\t\techo "byebye" >> tags/end/src/b/readme &&\n' span_id: 64 ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:65) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd commit -m "nothing to see here"\n' span_id: 66 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:67) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.svn.url "$svnrepo" &&\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.fetch \\\n' span_id:69) (Token id: Id.Lit_Chars val: '\t "trunk/src/a:refs/remotes/trunk" &&\n' span_id: 70 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.branches \\\n' span_id:71) (Token id: Id.Lit_Chars val: '\t "branches/*/*/src/a:refs/remotes/branches/*/*" &&\n' span_id: 72 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.svn.tags\\\n' span_id:73) (Token id: Id.Lit_Chars val: '\t "tags/*/src/a:refs/remotes/tags/*" &&\n' span_id: 74 ) (Token id:Id.Lit_Chars val:'\tgit svn multi-fetch &&\n' span_id:75) (Token id: Id.Lit_Chars val: '\tgit log --pretty=oneline refs/remotes/tags/end | \\\n' span_id: 76 ) (Token id:Id.Lit_Chars val:'\t sed -e "s/^.\\{41\\}//" > output.end &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.end output.end &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\ttest "$(git rev-parse refs/remotes/tags/end~1)" = \\\n' span_id:79) (Token id: Id.Lit_Chars val: '\t\t"$(git rev-parse refs/remotes/branches/v1/start)" &&\n' span_id: 80 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse refs/remotes/branches/v1/start~2)" = \\\n' span_id: 81 ) (Token id:Id.Lit_Chars val:'\t\t"$(git rev-parse refs/remotes/trunk)" &&\n' span_id:82) (Token id: Id.Lit_Chars val: '\ttest_must_fail git rev-parse refs/remotes/tags/end@3\n' span_id: 83 ) (Token id:Id.Lit_Chars val:'\t' span_id:84) ) } ) (command.Simple words: [{(echo)} {(try)} {(to)} {(try)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:96) fd: -1 arg_word: {(expect.two)} ) ] ) (command.Simple words: [{(echo)} {(nothing)} {(to)} {(see)} {(here)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:110) fd: -1 arg_word: {(expect.two)} ) ] ) (command.Simple words: [{(cat)} {(expect.end)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:118) fd: -1 arg_word: {(expect.two)} ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test left-hand-side only globbing' span_id:126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.two.url "$svnrepo" &&\n' span_id: 131 ) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.two.fetch trunk:refs/remotes/two/trunk &&\n' span_id: 132 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.two.branches \\\n' span_id:133) (Token id: Id.Lit_Chars val: '\t "branches/*/*:refs/remotes/two/branches/*/*" &&\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.two.tags \\\n' span_id:135) (Token id: Id.Lit_Chars val: '\t "tags/*:refs/remotes/two/tags/*" &&\n' span_id: 136 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\techo "try try" >> tags/end/src/b/readme &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "try to try"\n' span_id:141) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\tgit svn fetch two &&\n' span_id:143) (Token id: Id.Lit_Chars val: '\ttest $(git rev-list refs/remotes/two/tags/end | wc -l) -eq 6 &&\n' span_id: 144 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-list refs/remotes/two/branches/v1/start | wc -l) -eq 3 &&\n' span_id: 145 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse refs/remotes/two/branches/v1/start~2) = \\\n' span_id: 146 ) (Token id:Id.Lit_Chars val:'\t $(git rev-parse refs/remotes/two/trunk) &&\n' span_id:147) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse refs/remotes/two/tags/end~3) = \\\n' span_id: 148 ) (Token id: Id.Lit_Chars val: '\t $(git rev-parse refs/remotes/two/branches/v1/start) &&\n' span_id: 149 ) (Token id:Id.Lit_Chars val:'\tgit log --pretty=oneline refs/remotes/two/tags/end | \\\n' span_id:150) (Token id: Id.Lit_Chars val: '\t sed -e "s/^.\\{41\\}//" > output.two &&\n' span_id: 151 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.two output.two\n' span_id:152) (Token id:Id.Lit_Chars val:'\t' span_id:153) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:158) fd: -1 arg_word: {(expect.four)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:162) fd: -1 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') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'test another branch' span_id:176))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\t(\n' span_id:181) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\t\tmkdir branches/v2 &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd add branches/v2 &&\n' span_id:184) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd cp trunk branches/v2/start &&\n' span_id: 185 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Another versioned branch" &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\t\techo "hello" >> branches/v2/start/src/b/readme &&\n' span_id:188) (Token id: Id.Lit_Chars val: '\t\tpoke branches/v2/start/src/b/readme &&\n' span_id: 189 ) (Token id:Id.Lit_Chars val:'\t\techo "howdy" >> branches/v2/start/src/a/readme &&\n' span_id:190) (Token id: Id.Lit_Chars val: '\t\tpoke branches/v2/start/src/a/readme &&\n' span_id: 191 ) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "Changed 2 in v2/start" &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd up &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd cp branches/v2/start tags/next &&\n' span_id:194) (Token id: Id.Lit_Chars val: '\t\techo "bye" >> tags/next/src/b/readme &&\n' span_id: 195 ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/b/readme &&\n' span_id:196) (Token id: Id.Lit_Chars val: '\t\techo "aye" >> tags/next/src/a/readme &&\n' span_id: 197 ) (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/a/readme &&\n' span_id:198) (Token id: Id.Lit_Chars val: '\t\tsvn_cmd commit -m "adding more" &&\n' span_id: 199 ) (Token id:Id.Lit_Chars val:'\t\techo "byebye" >> tags/next/src/b/readme &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\t\tpoke tags/next/src/b/readme &&\n' span_id:201) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "adios"\n' span_id:202) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.url "$svnrepo" &&\n' span_id:204) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.four.fetch trunk:refs/remotes/four/trunk &&\n' span_id: 205 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.branches \\\n' span_id:206) (Token id: Id.Lit_Chars val: '\t "branches/*/*:refs/remotes/four/branches/*/*" &&\n' span_id: 207 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.four.tags \\\n' span_id:208) (Token id: Id.Lit_Chars val: '\t "tags/*:refs/remotes/four/tags/*" &&\n' span_id: 209 ) (Token id:Id.Lit_Chars val:'\tgit svn fetch four &&\n' span_id:210) (Token id: Id.Lit_Chars val: '\ttest $(git rev-list refs/remotes/four/tags/next | wc -l) -eq 5 &&\n' span_id: 211 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-list refs/remotes/four/branches/v2/start | wc -l) -eq 3 &&\n' span_id: 212 ) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse refs/remotes/four/branches/v2/start~2) = \\\n' span_id: 213 ) (Token id:Id.Lit_Chars val:'\t $(git rev-parse refs/remotes/four/trunk) &&\n' span_id:214) (Token id: Id.Lit_Chars val: '\ttest $(git rev-parse refs/remotes/four/tags/next~2) = \\\n' span_id: 215 ) (Token id: Id.Lit_Chars val: '\t $(git rev-parse refs/remotes/four/branches/v2/start) &&\n' span_id: 216 ) (Token id: Id.Lit_Chars val: '\tgit log --pretty=oneline refs/remotes/four/tags/next | \\\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\t sed -e "s/^.\\{41\\}//" > output.four &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.four output.four\n' span_id:219) (Token id:Id.Lit_Chars val:'\t' span_id:220) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'prepare test disallow multiple globs' span_id:227))} { (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 (Token id:Id.Lit_Chars val:'test disallow multiple globs' span_id:243))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:247) (Token id: Id.Lit_Chars val: '\tgit config --add svn-remote.three.url "$svnrepo" &&\n' span_id: 248 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.fetch \\\n' span_id:249) (Token id: Id.Lit_Chars val: '\t trunk:refs/remotes/three/trunk &&\n' span_id: 250 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.branches \\\n' span_id:251) (Token id: Id.Lit_Chars val: '\t "branches/*/t/*:refs/remotes/three/branches/*/*" &&\n' span_id: 252 ) (Token id:Id.Lit_Chars val:'\tgit config --add svn-remote.three.tags \\\n' span_id:253) (Token id: Id.Lit_Chars val: '\t "tags/*:refs/remotes/three/tags/*" &&\n' span_id: 254 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:255) (Token id:Id.Lit_Chars val:'\t\tcd tmp &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\techo "try try" >> tags/end/src/b/readme &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\t\tpoke tags/end/src/b/readme &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tsvn_cmd commit -m "try to try"\n' span_id:259) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:260) (Token id:Id.Lit_Chars val:'\ttest_must_fail git svn fetch three 2> stderr.three &&\n' span_id:261) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.three stderr.three\n' span_id:262) (Token id:Id.Lit_Chars val:'\t' span_id:263) ) } ) (C {(test_done)}) ] )