(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'ext::cmd remote "connect" helper'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m initial &&\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m second &&\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m third &&\n'> <'\ttest_tick &&\n'> <'\tgit tag -a -m "tip three" three &&\n'> <'\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m fourth\n'> ) } ) (C {(test_expect_success)} {(clone)} { (SQ <'\n'> <'\tcmd=$(echo "echo >&2 ext::sh invoked && %S .." | sed -e "s/ /% /g") &&\n'> <'\tgit clone "ext::sh -c %S% ." dst &&\n'> <'\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit config remote.origin.url "ext::sh -c $cmd" &&\n'> <'\t\tgit for-each-ref refs/heads/ refs/tags/\n'> <'\t) >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'update following tag'>)} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m fifth &&\n'> <'\ttest_tick &&\n'> <'\tgit tag -a -m "tip five" five &&\n'> <'\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit pull &&\n'> <'\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n'> <'\t) &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'update backfilled tag'>)} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tgit commit --allow-empty -m sixth &&\n'> <'\ttest_tick &&\n'> <'\tgit tag -a -m "tip two" two three^1 &&\n'> <'\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit pull &&\n'> <'\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n'> <'\t) &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'update backfilled tag without primary transfer'>)} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tgit tag -a -m "tip one " one two^1 &&\n'> <'\tgit for-each-ref refs/heads/ refs/tags/ >expect &&\n'> <'\t(\n'> <'\t\tcd dst &&\n'> <'\t\tgit pull &&\n'> <'\t\tgit for-each-ref refs/heads/ refs/tags/ >../actual\n'> <'\t) &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'set up fake git-daemon'>)} { (SQ <'\n'> <'\tmkdir remote &&\n'> <'\tgit init --bare remote/one.git &&\n'> <'\tmkdir remote/host &&\n'> <'\tgit init --bare remote/host/two.git &&\n'> <'\twrite_script fake-daemon <<-\\EOF &&\n'> <'\tgit daemon --inetd \\\n'> <'\t\t--informative-errors \\\n'> <'\t\t--export-all \\\n'> <'\t\t--base-path="$TRASH_DIRECTORY/remote" \\\n'> <'\t\t--interpolated-path="$TRASH_DIRECTORY/remote/%H%D" \\\n'> <'\t\t"$TRASH_DIRECTORY/remote"\n'> <'\tEOF\n'> <'\texport TRASH_DIRECTORY &&\n'> <'\tPATH=$TRASH_DIRECTORY:$PATH\n'> ) } ) (C {(test_expect_success)} {(SQ <'ext command can connect to git daemon (no vhost)'>)} {(SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit clone "ext::fake-daemon %G/one.git" dst\n'>)} ) (C {(test_expect_success)} {(SQ <'ext command can connect to git daemon (vhost)'>)} {(SQ <'\n'> <'\trm -rf dst &&\n'> <'\tgit clone "ext::fake-daemon %G/two.git %Vhost" dst\n'>)} ) (C {(test_done)}) ] )