{"thread":{"id":"2224","subject":"[WIP] Implement a test for git-fetch-pack","startedAt":"2005-10-25T21:34:03Z","lastAt":"2005-10-25T21:34:03Z","messageCount":1,"participants":["Johannes Schindelin"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"10612","messageId":"Pine.LNX.4.63.0510252333180.19596@wbgn013.biozentrum.uni-wuerzburg.de","threadId":"2224","inReplyTo":null,"subject":"[WIP] Implement a test for git-fetch-pack","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2005-10-25T21:34:03Z","receivedAt":"2005-10-25T21:34:03Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"It does some basic things right now, but I'll add more.\n\n---\n\n t/t5500-fetch-pack.sh |  142 +++++++++++++++++++++++++++++++++++++++++++++++++\n 1 files changed, 142 insertions(+), 0 deletions(-)\n\ndiff --git a/t/t5500-fetch-pack.sh b/t/t5500-fetch-pack.sh\nnew file mode 100755\nindex 0000000..a5d3a25\n--- /dev/null\n+++ b/t/t5500-fetch-pack.sh\n@@ -0,0 +1,142 @@\n+#!/bin/sh\n+#\n+# Copyright (c) 2005 Johannes Schindelin\n+#\n+\n+test_description='Testing multi_ack pack fetching\n+\n+'\n+. ./test-lib.sh\n+\n+# Test fetching for an empty, a partial, a full copy, and for a repository,\n+# which is not empty but has no common commits (think coolest merge ever).\n+\n+function add () {\n+\tlocal name=$1\n+\tlocal branch=$(expr $name : '\\(.\\)')\n+\tlocal text=\"$@\"\n+\tlocal parents=\"\"\n+\n+\tshift\n+\twhile test $1; do\n+\t\tlocal sha1=$(eval echo \\$$1)\n+\t\ttest -z \"$sha1\" && sha1=$1\n+\t\tparents=\"$parents -p $sha1\"\n+\t\tshift\n+\tdone\n+\n+\techo \"$text\" > test.txt\n+\tgit-update-index --add test.txt\n+\ttree=$(git-write-tree)\n+\tcommit=$(echo \"$text\" | git-commit-tree $tree $parents 2>/dev/null)\n+\texport $name=$commit\n+\techo $commit > .git/refs/heads/$branch\n+\tgit-symbolic-ref HEAD refs/heads/$branch 2>/dev/null\n+}\n+\n+function tag () {\n+\tlocal name=$1\n+\tlocal commit=$(eval echo \\$$2)\n+\tlocal text=\"$@\"\n+\n+\tgit-tag -m \"$text\" $name $commit\n+}\n+\n+function count_objects () {\n+\tlocal line=\"$(git-count-objects)\"\n+\texpr \"$line\" : '\\([^ ]*\\)'\n+}\n+\n+function test_expect_object_count () {\n+\tlocal repository=$1\n+\tlocal count=$2\n+\n+\texpect=\"$count objects, $count kilobytes\"\n+\toutput=\"$(git-count-objects)\"\n+\ttest_expect_success \"$repository repository is valid\" \\\n+\t\t\"test \\\"$output\\\" = \\\"$expect\\\"\"\n+}\n+\n+function check_rep () {\n+\tlocal rep=$1\n+\tlocal count=$2\n+\n+\tcd $rep\n+\ttest_expect_success \"fetch from upstream into $rep\" \\\n+\t\t'git-fetch-pack -v .. A B C 2> log.txt'\n+\tgit-update-ref HEAD $A46\n+\ttest_expect_success \"fsck $rep\" 'git-fsck-objects --full'\n+\ttest_expect_object_count $rep $count\n+\tcd ..\n+}\n+\n+# A1 - A2 - A3 - A4 - A5 - .. - A47\n+#    \\    \\     /   /\n+# B1 - B2 ------ B3 - B4 - B5\n+#         \\   /     \\\n+#           C1 - C2 - C3\n+\n+# the partial copy is cloned at A1-B3-C2 time.\n+\n+(\n+\tmkdir empty &&\n+\tcd empty &&\n+\tgit-init-db 2>/dev/null\n+)\n+\n+add B1\n+\n+pre_tag_count=$(count_objects)\n+\n+i=1; while [ $i -le 40 ]; do\n+\ttag T$i B1\n+\ti=$(expr $i + 1)\n+done\n+\n+post_tag_count=$(count_objects)\n+\n+add A1\n+add B2 B1 A1\n+add B3 B2\n+add C1 B2\n+add C2 C1\n+\n+# clone\n+git-clone . partial 2>/dev/null\n+\n+partial_count=$(count_objects)\n+\n+add A2 A1\n+add A3 A2\n+add A4 A3 C1\n+add C3 C2 B3\n+add A5 A4 B3\n+add B4 B3\n+add B5 B4\n+i=5\n+while [ $i -le 46 ]; do\n+\tnext=$(expr $i + 1)\n+\tadd A$next A$i\n+\ti=$next\n+done\n+\n+total_count=$(count_objects)\n+\n+git-clone . full 2>/dev/null\n+\n+# let the testing begin\n+\n+test_expect_success 'precalculated counts' \\\n+\t\"test $post_tag_count:$partial_count:$total_count = 43:58:205\"\n+\n+tag_count=$(expr $post_tag_count - $pre_tag_count)\n+empty_diff=$(expr $total_count - $tag_count)\n+partial_diff=$(expr $total_count - $partial_count)\n+\n+check_rep empty $empty_diff\n+check_rep partial $partial_diff\n+check_rep full 0\n+\n+#gitk --all\n+\n+test_done\n"}]}