]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t5559: fix test failures with LIB_HTTPD_SSL
authorJeff King <peff@peff.net>
Thu, 23 Feb 2023 11:07:29 +0000 (06:07 -0500)
committerJunio C Hamano <gitster@pobox.com>
Thu, 23 Feb 2023 21:01:17 +0000 (13:01 -0800)
One test needs to be tweaked in order for t5559 to pass with SSL/TLS set
up. When we make our initial clone, we check that the curl trace of
requests is what we expected. But we need to fix two things:

  - along with ignoring "data" lines from the trace, we need to ignore
    "SSL data" lines

  - when TLS is used, the server is able to tell the client (via ALPN)
    that it supports HTTP/2 before the first HTTP request is made. So
    rather than request an upgrade using an HTTP header, it can just
    speak HTTP/2 immediately

With this patch, running:

  LIB_HTTPD_SSL=1 ./t5559-http-fetch-smart-http2.sh

works, whereas it did not before.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t5551-http-fetch-smart.sh

index 13b38c7ef5f01b77348ccca73f4cfe5dcb21322c..0908534f2561f4bc68319f4dc4ffc464ba4e4a90 100755 (executable)
@@ -33,8 +33,19 @@ test_expect_success 'create http-accessible bare repository' '
 setup_askpass_helper
 
 test_expect_success 'clone http repository' '
+       if test_have_prereq HTTP2 && test "$HTTPD_PROTO" = "https"
+       then
+               # ALPN lets us immediately use HTTP/2; likewise, POSTs with
+               # bodies can use it because they do not need to upgrade
+               INITIAL_PROTO=HTTP/2
+       else
+               # either we are not using HTTP/2, or the initial
+               # request is sent via HTTP/1.1 and asks for upgrade
+               INITIAL_PROTO=HTTP/1.1
+       fi &&
+
        cat >exp.raw <<-EOF &&
-       > GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
+       > GET /smart/repo.git/info/refs?service=git-upload-pack $INITIAL_PROTO
        > accept: */*
        > accept-encoding: ENCODINGS
        > accept-language: ko-KR, *;q=0.9
@@ -44,25 +55,25 @@ test_expect_success 'clone http repository' '
        < pragma: no-cache
        < cache-control: no-cache, max-age=0, must-revalidate
        < content-type: application/x-git-upload-pack-advertisement
-       > POST /smart/repo.git/git-upload-pack HTTP/1.1
+       > POST /smart/repo.git/git-upload-pack $INITIAL_PROTO
        > accept-encoding: ENCODINGS
        > content-type: application/x-git-upload-pack-request
        > accept: application/x-git-upload-pack-result
        > accept-language: ko-KR, *;q=0.9
        {V2} > git-protocol: version=2
        > content-length: xxx
-       < HTTP/1.1 200 OK
+       < $INITIAL_PROTO 200 OK
        < pragma: no-cache
        < cache-control: no-cache, max-age=0, must-revalidate
        < content-type: application/x-git-upload-pack-result
-       {V2} > POST /smart/repo.git/git-upload-pack HTTP/1.1
+       {V2} > POST /smart/repo.git/git-upload-pack $INITIAL_PROTO
        {V2} > accept-encoding: ENCODINGS
        {V2} > content-type: application/x-git-upload-pack-request
        {V2} > accept: application/x-git-upload-pack-result
        {V2} > accept-language: ko-KR, *;q=0.9
        {V2} > git-protocol: version=2
        {V2} > content-length: xxx
-       {V2} < HTTP/1.1 200 OK
+       {V2} < $INITIAL_PROTO 200 OK
        {V2} < pragma: no-cache
        {V2} < cache-control: no-cache, max-age=0, must-revalidate
        {V2} < content-type: application/x-git-upload-pack-result
@@ -96,6 +107,8 @@ test_expect_success 'clone http repository' '
                s/= Recv header://
                /^<= Recv data/d
                /^=> Send data/d
+               /^<= Recv SSL data/d
+               /^=> Send SSL data/d
                /^$/d
                /^< $/d