aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorYi EungJun <eungjun.yi@navercorp.com>2014-06-18 07:11:53 +0900
committerJunio C Hamano <gitster@pobox.com>2014-06-17 15:25:00 -0700
commitf34a655d4d1e25f314cd5760e2a39bec28950aa1 (patch)
tree0f60932eb635669b9429eee85479046dcd4a390f /t
parentc553fd1c1ef76688b6200e66a825b530b0b02140 (diff)
downloadgit-f34a655d4d1e25f314cd5760e2a39bec28950aa1.tar.gz
git-f34a655d4d1e25f314cd5760e2a39bec28950aa1.tar.xz
http: fix charset detection of extract_content_type()
extract_content_type() could not extract a charset parameter if the parameter is not the first one and there is a whitespace and a following semicolon just before the parameter. For example: text/plain; format=fixed ;charset=utf-8 And it also could not handle correctly some other cases, such as: text/plain; charset=utf-8; format=fixed text/plain; some-param="a long value with ;semicolons;"; charset=utf-8 Thanks-to: Jeff King <peff@peff.net> Signed-off-by: Yi EungJun <eungjun.yi@navercorp.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/lib-httpd/error.sh4
-rwxr-xr-xt/t5550-http-fetch-dumb.sh5
2 files changed, 9 insertions, 0 deletions
diff --git a/t/lib-httpd/error.sh b/t/lib-httpd/error.sh
index eafc9d2d9..a77b8e546 100755
--- a/t/lib-httpd/error.sh
+++ b/t/lib-httpd/error.sh
@@ -19,6 +19,10 @@ case "$PATH_INFO" in
printf "text/plain; charset=utf-16"
charset=utf-16
;;
+*odd-spacing*)
+ printf "text/plain; foo=bar ;charset=utf-16; other=nonsense"
+ charset=utf-16
+ ;;
esac
printf "\n"
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index 01b8aae2e..ac71418a1 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -191,5 +191,10 @@ test_expect_success 'http error messages are reencoded' '
grep "this is the error message" stderr
'
+test_expect_success 'reencoding is robust to whitespace oddities' '
+ test_must_fail git clone "$HTTPD_URL/error/odd-spacing" 2>stderr &&
+ grep "this is the error message" stderr
+'
+
stop_httpd
test_done