From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Subject: [PATCH 05/16] t5551: lower-case headers in expected curl trace
Date: Thu, 23 Feb 2023 05:54:02 -0500 [thread overview]
Message-ID: <Y/dFyjOAliTgOHYV@coredump.intra.peff.net> (raw)
In-Reply-To: <Y/dEYYWKy/o96vBG@coredump.intra.peff.net>
There's a test in t5551 which checks the curl trace (after simplifying
it a bit). It doesn't work with HTTP/2, because in that case curl
outputs all of the headers in lower-case. Even though this test is run
with HTTP/2 by t5559, nobody has noticed because checking the trace only
happens if GIT_TEST_PROTOCOL_VERSION is manually set to "0".
Let's fix this by lower-casing all of the header names in the trace, and
then checking for those in our expected code (this is easier than making
HTTP/2 traces look like HTTP/1.1, since HTTP/1.1 uses title-casing).
Sadly, we can't quite do this in our existing sed script. This works if
you have GNU sed:
s/^\\([><]\\) \\([A-Za-z0-9-]*:\\)/\1 \L\2\E/
but \L is a GNU-ism, and I don't think there's a portable solution. We
could just "tr A-Z a-z" on the way in, of course, but that makes the
non-header parts harder to read (e.g., lowercase "post" requests). But
to paraphrase Baron Munchausen, I have learned from experience that a
modicum of Perl can be most efficacious.
Note that this doesn't quite get the test passing with t5559; there are
more fixes needed on top.
Signed-off-by: Jeff King <peff@peff.net>
---
t/t5551-http-fetch-smart.sh | 55 ++++++++++++++++++++-----------------
1 file changed, 30 insertions(+), 25 deletions(-)
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index 29d489768e..a81f852cbf 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -35,30 +35,35 @@ setup_askpass_helper
test_expect_success 'clone http repository' '
cat >exp <<-\EOF &&
> GET /smart/repo.git/info/refs?service=git-upload-pack HTTP/1.1
- > Accept: */*
- > Accept-Encoding: ENCODINGS
- > Accept-Language: ko-KR, *;q=0.9
- > Pragma: no-cache
+ > accept: */*
+ > accept-encoding: ENCODINGS
+ > accept-language: ko-KR, *;q=0.9
+ > pragma: no-cache
< HTTP/1.1 200 OK
- < Pragma: no-cache
- < Cache-Control: no-cache, max-age=0, must-revalidate
- < Content-Type: application/x-git-upload-pack-advertisement
+ < 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
- > 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
- > Content-Length: xxx
+ > 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
+ > content-length: xxx
< HTTP/1.1 200 OK
- < Pragma: no-cache
- < Cache-Control: no-cache, max-age=0, must-revalidate
- < Content-Type: application/x-git-upload-pack-result
+ < pragma: no-cache
+ < cache-control: no-cache, max-age=0, must-revalidate
+ < content-type: application/x-git-upload-pack-result
EOF
GIT_TRACE_CURL=true GIT_TEST_PROTOCOL_VERSION=0 LANGUAGE="ko_KR.UTF-8" \
git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
test_cmp file clone/file &&
tr '\''\015'\'' Q <err |
+ perl -pe '\''
+ s/(Send|Recv) header: ([A-Za-z0-9-]+):/
+ "$1 header: " . lc($2) . ":"
+ /e;
+ '\'' |
sed -e "
s/Q\$//
/^[*] /d
@@ -78,31 +83,31 @@ test_expect_success 'clone http repository' '
s/^/> /
}
- /^> User-Agent: /d
- /^> Host: /d
+ /^> user-agent: /d
+ /^> host: /d
/^> POST /,$ {
/^> Accept: [*]\\/[*]/d
}
- s/^> Content-Length: .*/> Content-Length: xxx/
+ s/^> content-length: .*/> content-length: xxx/
/^> 00..want /d
/^> 00.*done/d
- /^< Server: /d
- /^< Expires: /d
- /^< Date: /d
- /^< Content-Length: /d
- /^< Transfer-Encoding: /d
+ /^< server: /d
+ /^< expires: /d
+ /^< date: /d
+ /^< content-length: /d
+ /^< transfer-encoding: /d
" >actual &&
# NEEDSWORK: If the overspecification of the expected result is reduced, we
# might be able to run this test in all protocol versions.
if test "$GIT_TEST_PROTOCOL_VERSION" = 0
then
- sed -e "s/^> Accept-Encoding: .*/> Accept-Encoding: ENCODINGS/" \
+ sed -e "s/^> accept-encoding: .*/> accept-encoding: ENCODINGS/" \
actual >actual.smudged &&
test_cmp exp actual.smudged &&
- grep "Accept-Encoding:.*gzip" actual >actual.gzip &&
+ grep "accept-encoding:.*gzip" actual >actual.gzip &&
test_line_count = 2 actual.gzip
fi
'
--
2.39.2.981.g6157336f25
next prev parent reply other threads:[~2023-02-23 10:54 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-23 10:48 [PATCH 0/16] http test bug potpourri Jeff King
2023-02-23 10:49 ` [PATCH 01/16] t5541: run "used receive-pack service" test earlier Jeff King
2023-02-23 10:50 ` [PATCH 02/16] t5541: stop marking "used receive-pack service" test as v0 only Jeff King
2023-02-23 10:51 ` [PATCH 03/16] t5541: simplify and move "no empty path components" test Jeff King
2023-02-23 23:36 ` Junio C Hamano
2023-02-24 2:11 ` Jeff King
2023-02-23 10:52 ` [PATCH 04/16] t5551: drop redundant grep for Accept-Language Jeff King
2023-02-23 23:36 ` Junio C Hamano
2023-02-23 10:54 ` Jeff King [this message]
2023-02-23 10:56 ` [PATCH 06/16] t5551: handle HTTP/2 when checking curl trace Jeff King
2023-02-23 10:57 ` [PATCH 07/16] t5551: stop forcing clone to run with v0 protocol Jeff King
2023-02-23 10:59 ` [PATCH 08/16] t5551: handle v2 protocol when checking curl trace Jeff King
2023-02-23 11:00 ` [PATCH 09/16] t5551: handle v2 protocol in upload-pack service test Jeff King
2023-02-23 11:01 ` [PATCH 10/16] t5551: simplify expected cookie file Jeff King
2023-02-23 11:02 ` [PATCH 11/16] t5551: handle v2 protocol in cookie test Jeff King
2023-02-23 11:05 ` [PATCH 12/16] t5551: drop curl trace lines without headers Jeff King
2023-02-23 11:05 ` [PATCH 13/16] t/lib-httpd: respect $HTTPD_PROTO in expect_askpass() Jeff King
2023-02-23 11:06 ` [PATCH 14/16] t/lib-httpd: enable HTTP/2 "h2" protocol, not just h2c Jeff King
2023-02-23 23:37 ` Junio C Hamano
2023-02-23 11:07 ` [PATCH 15/16] t5559: fix test failures with LIB_HTTPD_SSL Jeff King
2023-02-23 11:08 ` [PATCH 16/16] t5559: make SSL/TLS the default Jeff King
2023-02-23 23:37 ` [PATCH 0/16] http test bug potpourri Junio C Hamano
2023-02-24 2:13 ` Jeff King
2023-02-24 3:01 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y/dFyjOAliTgOHYV@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).