Tests: added js tests for multi-values headers in r.headersIn.
diff --git a/js_headers.t b/js_headers.t
index f460f46..3f447f8 100644
--- a/js_headers.t
+++ b/js_headers.t
@@ -303,7 +303,7 @@
EOF
-$t->try_run('no njs')->plan(34);
+$t->try_run('no njs')->plan(37);
###############################################################################
@@ -380,14 +380,41 @@
. 'Cookie: foo1' . CRLF
. 'Cookie: foo2' . CRLF
. 'Host: localhost' . CRLF . CRLF
-), qr/cookie: foo1; foo2/, 'r.headersIn cookie2');
+), qr/cookie: foo1;\s?foo2/, 'r.headersIn cookie2');
like(http(
'GET /hdr_in HTTP/1.0' . CRLF
. 'X-Forwarded-For: foo1' . CRLF
. 'X-Forwarded-For: foo2' . CRLF
. 'Host: localhost' . CRLF . CRLF
-), qr/x-forwarded-for: foo1, foo2/, 'r.headersIn xff2');
+), qr/x-forwarded-for: foo1,\s?foo2/, 'r.headersIn xff2');
+
+like(http(
+ 'GET /hdr_in HTTP/1.0' . CRLF
+ . 'ETag: bar1' . CRLF
+ . 'ETag: bar2' . CRLF
+ . 'Host: localhost' . CRLF . CRLF
+), qr/etag: bar1(?!,\s?bar2)/, 'r.headersIn duplicate single');
+
+like(http(
+ 'GET /hdr_in HTTP/1.0' . CRLF
+ . 'Content-Type: bar1' . CRLF
+ . 'Content-Type: bar2' . CRLF
+ . 'Host: localhost' . CRLF . CRLF
+), qr/content-type: bar1(?!,\s?bar2)/, 'r.headersIn duplicate single 2');
+
+TODO: {
+local $TODO = 'not yet'
+ unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.4.1';
+
+like(http(
+ 'GET /hdr_in HTTP/1.0' . CRLF
+ . 'Foo: bar1' . CRLF
+ . 'Foo: bar2' . CRLF
+ . 'Host: localhost' . CRLF . CRLF
+), qr/foo: bar1,bar2/, 'r.headersIn duplicate generic');
+
+}
like(http(
'GET /hdr_sorted_keys?in=1 HTTP/1.0' . CRLF