Skip to content

Commit

Permalink
t5551: make EXPENSIVE test cheaper
Browse files Browse the repository at this point in the history
We create 50,000 tags to check that we don't overflow the
command-line of fetch-pack. But by using run_with_cmdline_limit,
we can get the same effect with a much smaller number of
tags. This makes the test fast enough that we can drop the
EXPENSIVE prereq, which means people will actually run it.

It was not documented to do so, but this test was also the
only test of a clone-over-http that requires multiple POSTs
during the conversation. We can continue to test that by
dropping http.postbuffer to its minimum size, and checking
that we get two POSTs.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Mar 13, 2015
1 parent 9a308de commit 376e4b3
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions t/t5551-http-fetch-smart.sh
Original file line number Diff line number Diff line change
Expand Up @@ -213,10 +213,10 @@ test_expect_success 'cookies stored in http.cookiefile when http.savecookies set
test_cmp expect_cookies.txt cookies_tail.txt
'

test_expect_success EXPENSIVE 'create 50,000 tags in the repo' '
test_expect_success 'create 2,000 tags in the repo' '
(
cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" &&
for i in `test_seq 50000`
for i in $(test_seq 2000)
do
echo "commit refs/heads/too-many-refs"
echo "mark :$i"
Expand All @@ -237,13 +237,22 @@ test_expect_success EXPENSIVE 'create 50,000 tags in the repo' '
)
'

test_expect_success EXPENSIVE 'clone the 50,000 tag repo to check OS command line overflow' '
git clone $HTTPD_URL/smart/repo.git too-many-refs &&
test_expect_success CMDLINE_LIMIT \
'clone the 2,000 tag repo to check OS command line overflow' '
run_with_limited_cmdline git clone $HTTPD_URL/smart/repo.git too-many-refs &&
(
cd too-many-refs &&
test $(git for-each-ref refs/tags | wc -l) = 50000
git for-each-ref refs/tags >actual &&
test_line_count = 2000 actual
)
'

test_expect_success 'large fetch-pack requests can be split across POSTs' '
GIT_CURL_VERBOSE=1 git -c http.postbuffer=65536 \
clone --bare "$HTTPD_URL/smart/repo.git" split.git 2>err &&
grep "^> POST" err >posts &&
test_line_count = 2 posts
'

stop_httpd
test_done

0 comments on commit 376e4b3

Please sign in to comment.