Hi there,

We're trying to do a build of the official NaviServer v4.99.23 release
(from the sourceforge tarball) on Debian Buster (10.12) but we're getting
some failed tests.

First one is encoding_ns_http-1.1

Seems it's serving an Emoji but the expected content-length is wrong upon
receiving it.
I see there's been some discussion about Emoji support since 4.99.23 (which
I don't fully understand) - not sure if that's relevant here..

* Test in question:

test encoding_ns_http-1.1 {
    Send body with ns_return and charset utf-8
} -constraints usingExternalToUtf -setup {
    ns_register_proc GET /encoding {
        ns_return 200 "text/plain; charset=utf-8" "äöü😃"
    }
} -body {
    set result [ns_http run [ns_config test listenurl]/encoding]
    set headers [dict get $result headers]
    list [dict get $result status] \
        [ns_set iget $headers Content-Type] \
        [ns_set iget $headers Content-Length] \
        [dict get $result body]
} -cleanup {
    ns_unregister_op GET /encoding
} -result [list 200 "text/plain; charset=utf-8" 10 "äöü😃"]


* Reproduction steps below.

$ uname -a
Linux ip-172-0-1-61 4.19.0-18-cloud-amd64 #1 SMP Debian 4.19.208-1
(2021-09-29) x86_64 GNU/Linux
$ cat /etc/debian_version
10.12
$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

$ apt-get install build-essential git automake tcl8.6-dev libssl-dev
$ cd naviserver-4.99.23
$ ./autogen.sh --disable-ipv6 --with-tcl=/usr/lib/tcl8.6 --enable-rpath
--enable-threads --enable-symbols
$ make
$ make test
<snip>
==== encoding_ns_http-1.1 Send body with ns_return and charset utf-8 FAILED
==== Contents of test case:

    set result [ns_http run [ns_config test listenurl]/encoding]
    set headers [dict get $result headers]
    list [dict get $result status]  [ns_set iget $headers Content-Type]
 [ns_set iget $headers Content-Length]  [dict get $result body]

---- Result was:
200 {text/plain; charset=utf-8} 14 äöü😃
---- Result should have been (exact matching):
200 {text/plain; charset=utf-8} 10 äöü😃
==== encoding_ns_http-1.1 FAILED

Can anyone shed any light?
Regards,
--
David
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to