)
'
-if test -n "$NO_CURL" -o -z "$GIT_TEST_HTTPD"; then
- say 'skipping remaining tests, git built without http support'
- test_done
-fi
-
-. "$TEST_DIRECTORY"/lib-httpd.sh
-start_httpd
-
-test_expect_success 'clone http repository' '
- git clone --bare --no-local shallow "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
- git clone $HTTPD_URL/smart/repo.git clone &&
- (
- cd clone &&
- git fsck &&
- git log --format=%s origin/master >actual &&
- cat <<EOF >expect &&
-7
-6
-5
+test_expect_success POSIXPERM,SANITY 'shallow fetch from a read-only repo' '
+ cp -R .git read-only.git &&
+ find read-only.git -print | xargs chmod -w &&
+ test_when_finished "find read-only.git -type d -print | xargs chmod +w" &&
+ git clone --no-local --depth=2 read-only.git from-read-only &&
+ git --git-dir=from-read-only/.git log --format=%s >actual &&
+ cat >expect <<EOF &&
+add-1-back
4
-3
EOF
test_cmp expect actual
- )
-'
-
-# This test is tricky. We need large enough "have"s that fetch-pack
-# will put pkt-flush in between. Then we need a "have" the server
-# does not have, it'll send "ACK %s ready"
-test_expect_success 'no shallow lines after receiving ACK ready' '
- (
- cd shallow &&
- for i in $(test_seq 10)
- do
- git checkout --orphan unrelated$i &&
- test_commit unrelated$i &&
- git push -q "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" \
- refs/heads/unrelated$i:refs/heads/unrelated$i &&
- git push -q ../clone/.git \
- refs/heads/unrelated$i:refs/heads/unrelated$i ||
- exit 1
- done &&
- git checkout master &&
- test_commit new &&
- git push "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" master
- ) &&
- (
- cd clone &&
- git checkout --orphan newnew &&
- test_commit new-too &&
- GIT_TRACE_PACKET="$TRASH_DIRECTORY/trace" git fetch --depth=2 &&
- grep "fetch-pack< ACK .* ready" ../trace &&
- ! grep "fetch-pack> done" ../trace
- )
'
-stop_httpd
test_done