[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1107289: Apache2 2.4.63-1 has a failing test in its test suite



Source: apache2
Tags: fixed-upstream patch
Version: 2.4.63-1
Severity: normal

Discovered downstream in Ubuntu during migration tests.

Downstream bug: https://bugs.launchpad.net/bugs/2112429

------

Downstream bug summary:

Discovered through update_excuses and confirmed locally in an LXD autopkgtest container (from https://github.com/canonical/ubuntu-maintainers-handbook/blob/main/PackageTests.md to create it), the autopkgtests on 2.4.63-1ubuntu2 fail for apache2's test suite.

It fails on debian/perl-framework/t/apache/pr64339.t, test #12 which makes sure certain content is rendered by xml2enc's backend components.

I followed every single step and reproduced in a pure LXD container with the apache2 binaries in proposed.

With this in mind, the following is the specific items in the test at fault:

EXPECTED: response from looking at http://localhost:8529/modules/xml2enc/front/doc.isohtml with a GET call is "<html><body><p>fóó\n</p></body></html>" and is UTF-8 encoded

ACTUAL: response from looking at http://localhost:8529/modules/xml2enc/front/doc.isohtml with a GET call is "<html><body>fóó\n</body></html>"

There is a changelog that introduces this test via a pull request:
  *) mod_xml2enc: Update check to accept any text/ media type
     or any XML media type per RFC 7303, avoiding
     corruption of Microsoft OOXML formats. PR 64339.
     [Joseph Heenan joseph.heenan fintechlabs.io, Joe Orton]

... in 2.4.59 in April 2024. At the time the test was written, Apache was using libxml2 and the 2.12 branch.

After examining the Apache code (modules/filters/mod_xml2enc.c), it calls htmlParser which is part of libxml2.

Using HTMLParser from python3-lxml (which is libxml2 wrappings for Python), I went through the decoding process of perl-framework/t/htdocs/modules/xml2enc/doc.isohtml which is what is used during the test suite during t/apache/pr64339.t, I was able to determine that libxml2's parser outputs the value observed in teh failing test - namely "<html><body>fóó\n</body></html>" - which indicates this is a libxml2 change.

------

Downstream in Ubuntu, it is simple enough to patch the tests with the attached diff which corresponds to commit 1925450 in upstream test suites.

I looked at the Debian source and the flawed test still exists.  This should be patched in Debian.


Thomas

Index: t/apache/pr64339.t
===================================================================
--- t/apache/pr64339.t (revision 1925449)
+++ t/apache/pr64339.t (revision 1925450)
@@ -18,7 +18,7 @@
     ['/doc.notxml', "application/notreallyxml", "f\xf3\xf3\n" ],

     # Sent with charset=ISO-8859-1 - should be transformed to utf-8
- ['/doc.isohtml', "text/html;charset=utf-8", "<html><body><p>fóó\n</p></body></html>" ],
+ ['/doc.isohtml', "text/html;charset=utf-8", "<html><body>.*fóó\n.*</body></html>" ],
 );

 # mod_xml2enc on trunk behaves quite differently to the 2.4.x version
@@ -42,5 +42,5 @@

     ok t_cmp($r->code, 200, "fetching ".$t->[0]);
     ok t_cmp($r->header('Content-Type'), $t->[1], "content-type header test for ".$t->[0]);
- ok t_cmp($r->content, $t->[2], "content test for ".$t->[0]);
+ ok t_cmp($r->content, qr/$t->[2]/, "content test for ".$t->[0]);
 }

Reply to: