Merge branch 'jt/t5551-test-chunked'
authorJunio C Hamano <gitster@pobox.com>
Thu, 11 Jul 2019 22:16:47 +0000 (15:16 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Jul 2019 22:16:47 +0000 (15:16 -0700)
Update smart-http test.

* jt/t5551-test-chunked:
t5551: test usage of chunked encoding explicitly

1  2 
t/t5551-http-fetch-smart.sh
index cb11f13d6dd72a0101850d8fbaedc6f722bb8377,482134987fe77842a66d327a7aae24bfafad649c..e38e54386795a0e05003e803dc79301ed1cd52d9
@@@ -43,8 -43,7 +43,8 @@@ test_expect_success 'clone http reposit
        < Cache-Control: no-cache, max-age=0, must-revalidate
        < Content-Type: application/x-git-upload-pack-result
        EOF
 -      GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
 +      GIT_TRACE_CURL=true GIT_TEST_PROTOCOL_VERSION= \
 +              git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
        test_cmp file clone/file &&
        tr '\''\015'\'' Q <err |
        sed -e "
                /^< Content-Length: /d
                /^< Transfer-Encoding: /d
        " >actual &&
 -      sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
 -                      actual >actual.smudged &&
 -      test_cmp exp actual.smudged &&
  
 -      grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
 -      test_line_count = 2 actual.gzip
 +      # NEEDSWORK: If the overspecification of the expected result is reduced, we
 +      # might be able to run this test in all protocol versions.
 +      if test -z "$GIT_TEST_PROTOCOL_VERSION"
 +      then
 +              sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
 +                              actual >actual.smudged &&
 +              test_cmp exp actual.smudged &&
 +
 +              grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
 +              test_line_count = 2 actual.gzip
 +      fi
  '
  
  test_expect_success 'fetch changes via http' '
@@@ -110,13 -103,7 +110,13 @@@ test_expect_success 'used upload-pack s
        GET  /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1 200
        POST /smart/repo.git/git-upload-pack HTTP/1.1 200
        EOF
 -      check_access_log exp
 +
 +      # NEEDSWORK: If the overspecification of the expected result is reduced, we
 +      # might be able to run this test in all protocol versions.
 +      if test -z "$GIT_TEST_PROTOCOL_VERSION"
 +      then
 +              check_access_log exp
 +      fi
  '
  
  test_expect_success 'follow redirects (301)' '
@@@ -164,17 -151,7 +164,17 @@@ test_expect_success 'clone from auth-on
  
  test_expect_success 'no-op half-auth fetch does not require a password' '
        set_askpass wrong &&
 -      git --git-dir=half-auth fetch &&
 +
 +      # NEEDSWORK: When using HTTP(S), protocol v0 supports a "half-auth"
 +      # configuration with authentication required only when downloading
 +      # objects and not refs, by having the HTTP server only require
 +      # authentication for the "git-upload-pack" path and not "info/refs".
 +      # This is not possible with protocol v2, since both objects and refs
 +      # are obtained from the "git-upload-pack" path. A solution to this is
 +      # to teach the server and client to be able to inline ls-refs requests
 +      # as an Extra Parameter (see pack-protocol.txt), so that "info/refs"
 +      # can serve refs, just like it does in protocol v0.
 +      GIT_TEST_PROTOCOL_VERSION=0 git --git-dir=half-auth fetch &&
        expect_askpass none
  '
  
@@@ -199,7 -176,7 +199,7 @@@ test_expect_success 'GIT_SMART_HTTP ca
  
  test_expect_success 'invalid Content-Type rejected' '
        test_must_fail git clone $HTTPD_URL/broken_smart/repo.git 2>actual &&
 -      grep "not valid:" actual
 +      test_i18ngrep "not valid:" actual
  '
  
  test_expect_success 'create namespaced refs' '
@@@ -238,14 -215,8 +238,14 @@@ test_expect_success 'cookies stored in 
        git config http.cookiefile cookies.txt &&
        git config http.savecookies true &&
        git ls-remote $HTTPD_URL/smart_cookies/repo.git master &&
 -      tail -3 cookies.txt | sort >cookies_tail.txt &&
 -      test_cmp expect_cookies.txt cookies_tail.txt
 +
 +      # NEEDSWORK: If the overspecification of the expected result is reduced, we
 +      # might be able to run this test in all protocol versions.
 +      if test -z "$GIT_TEST_PROTOCOL_VERSION"
 +      then
 +              tail -3 cookies.txt | sort >cookies_tail.txt &&
 +              test_cmp expect_cookies.txt cookies_tail.txt
 +      fi
  '
  
  test_expect_success 'transfer.hiderefs works over smart-http' '
@@@ -301,11 -272,10 +301,10 @@@ test_expect_success CMDLINE_LIMIT 
        )
  '
  
- test_expect_success 'large fetch-pack requests can be split across POSTs' '
+ test_expect_success 'large fetch-pack requests can be sent using chunked encoding' '
        GIT_TRACE_CURL=true git -c http.postbuffer=65536 \
                clone --bare "$HTTPD_URL/smart/repo.git" split.git 2>err &&
-       grep "^=> Send header: POST" err >posts &&
-       test_line_count = 2 posts
+       grep "^=> Send header: Transfer-Encoding: chunked" err
  '
  
  test_expect_success 'test allowreachablesha1inwant' '
@@@ -335,10 -305,7 +334,10 @@@ test_expect_success 'test allowreachabl
  
        git init --bare test_reachable.git &&
        git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" &&
 -      test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
 +      # Some protocol versions (e.g. 2) support fetching
 +      # unadvertised objects, so restrict this test to v0.
 +      test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
 +              git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
  '
  
  test_expect_success 'test allowanysha1inwant with unreachable' '
  
        git init --bare test_reachable.git &&
        git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" &&
 -      test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" &&
 +      # Some protocol versions (e.g. 2) support fetching
 +      # unadvertised objects, so restrict this test to v0.
 +      test_must_fail env GIT_TEST_PROTOCOL_VERSION= \
 +              git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" &&
  
        git -C "$server" config uploadpack.allowanysha1inwant 1 &&
        git -C test_reachable.git fetch origin "$(git rev-parse HEAD)"
@@@ -466,7 -430,8 +465,7 @@@ test_expect_success 'GIT_TRACE_CURL_NO_
  
  test_expect_success 'server-side error detected' '
        test_must_fail git clone $HTTPD_URL/error_smart/repo.git 2>actual &&
 -      grep "server-side error" actual
 +      test_i18ngrep "server-side error" actual
  '
  
 -stop_httpd
  test_done