(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:'ext::cmd remote "connect" helper' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:20) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m initial &&\n' span_id:21) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m second &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m third &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit tag -a -m "tip three" three &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\n' span_id:28) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m fourth\n' span_id:30) ) } ) (C {(test_expect_success)} {(clone)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:39) (Token id: Id.Lit_Chars val: '\tcmd=$(echo "echo >&2 ext::sh invoked && %S .." | sed -e "s/ /% /g") &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\tgit clone "ext::sh -c %S% ." dst &&\n' span_id:41) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n' span_id: 42 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:43) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url "ext::sh -c $cmd" &&\n' span_id:45) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/heads/ refs/tags/\n' span_id: 46 ) (Token id:Id.Lit_Chars val:'\t) >actual &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:48) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update following tag' span_id:55))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m fifth &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\tgit tag -a -m "tip five" five &&\n' span_id:63) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n' span_id: 64 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\tgit pull &&\n' span_id:67) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:70) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update backfilled tag' span_id:77))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m sixth &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tgit tag -a -m "tip two" two three^1 &&\n' span_id:85) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n' span_id: 86 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:87) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\tgit pull &&\n' span_id:89) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n' span_id: 90 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:92) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'update backfilled tag without primary transfer' span_id:99))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit tag -a -m "tip one " one two^1 &&\n' span_id:105) (Token id: Id.Lit_Chars val: '\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n' span_id: 106 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:107) (Token id:Id.Lit_Chars val:'\t\tcd dst &&\n' span_id:108) (Token id:Id.Lit_Chars val:'\t\tgit pull &&\n' span_id:109) (Token id: Id.Lit_Chars val: '\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n' span_id: 110 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:112) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up fake git-daemon' span_id:120))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:124) (Token id:Id.Lit_Chars val:'\tmkdir remote &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit init --bare remote/one.git &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\tmkdir remote/host &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit init --bare remote/host/two.git &&\n' span_id:128) (Token id: Id.Lit_Chars val: '\twrite_script fake-daemon <<-\\EOF &&\n' span_id: 129 ) (Token id:Id.Lit_Chars val:'\tgit daemon --inetd \\\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\t--informative-errors \\\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\t--export-all \\\n' span_id:132) (Token id: Id.Lit_Chars val: '\t\t--base-path="$TRASH_DIRECTORY/remote" \\\n' span_id: 133 ) (Token id:Id.Lit_Chars val:'\t\t--interpolated-path="$TRASH_DIRECTORY/remote/%H%D" \\\n' span_id:134) (Token id:Id.Lit_Chars val:'\t\t"$TRASH_DIRECTORY/remote"\n' span_id:135) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:136) (Token id:Id.Lit_Chars val:'\texport TRASH_DIRECTORY &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\tPATH=$TRASH_DIRECTORY:$PATH\n' span_id:138) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'ext command can connect to git daemon (no vhost)' span_id: 145 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\tgit clone "ext::fake-daemon %G/one.git" dst\n' span_id:151) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ext command can connect to git daemon (vhost)' span_id:158))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:162) (Token id:Id.Lit_Chars val:'\trm -rf dst &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\tgit clone "ext::fake-daemon %G/two.git %Vhost" dst\n' span_id:164) ) } ) (C {(test_done)}) ] )