Backport test fixes from github master. Passes with libxml-2.15.2p0.

This commit is contained in:
bluhm
2026-04-04 21:53:07 +00:00
parent cc5232e607
commit 284941666f
8 changed files with 211 additions and 0 deletions
@@ -0,0 +1,54 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
https://github.com/shlomif/perl-XML-LibXML/commit/ecbebc2f33fecb66b3d5487c6e48bea353e374f9
Index: t/02parse.t
--- t/02parse.t.orig
+++ t/02parse.t
@@ -14,7 +14,7 @@ use locale;
POSIX::setlocale(LC_ALL, "C");
-use Test::More tests => 533;
+use Test::More tests => 531;
use IO::File;
use XML::LibXML::Common qw(:libxml);
@@ -25,7 +25,7 @@ use constant XML_DECL => "<?xml version=\"1.0\"?>\n";
use Errno qw(ENOENT);
-# TEST*533
+# TEST*531
##
# test values
@@ -773,15 +773,6 @@ EOXML
my $newkid = $root->appendChild( $doc->createElement( "bar" ) );
is( $newkid->line_number(), 0, "line number is 0");
-
- $parser->line_numbers(0);
- eval { $doc = $parser->parse_string( $goodxml ); };
-
- $root = $doc->documentElement();
- is( $root->line_number(), 0, "line number is 0");
-
- @kids = $root->childNodes();
- is( $kids[1]->line_number(), 0, "line number is 0");
}
SKIP: {
@@ -884,7 +875,12 @@ EOXML
eval {
$doc2 = $parser->parse_string( $xmldoc );
};
- isnt($@, '', "error parsing $xmldoc");
+ # https://gitlab.gnome.org/GNOME/libxml2/-/commit/b717abdd
+ if (XML::LibXML::LIBXML_RUNTIME_VERSION() < 21300) {
+ isnt($@, '', "error parsing $xmldoc");
+ } else {
+ is( $doc2->documentElement()->firstChild()->nodeName(), "foo" );
+ }
$parser->validation(1);
@@ -0,0 +1,20 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
Index: t/08findnodes.t
--- t/08findnodes.t.orig
+++ t/08findnodes.t
@@ -123,7 +123,13 @@ my $docstring = q{
my @ns = $root->findnodes('namespace::*');
# TEST
-is(scalar(@ns), 2, ' TODO : Add test name' );
+# https://gitlab.gnome.org/GNOME/libxml2/-/commit/aca16fb3
+# fixed xmlCopyNamespace with XML namespace.
+if (XML::LibXML::LIBXML_RUNTIME_VERSION() < 21300) {
+ is(scalar(@ns), 2, ' TODO : Add test name' );
+} else {
+ is(scalar(@ns), 3, ' TODO : Add test name' );
+}
# bad xpaths
# TEST:$badxpath=4;
@@ -0,0 +1,19 @@
https://github.com/shlomif/perl-XML-LibXML/commit/c9f9c2fe51173b0a00969f01b577399f1098aa47
Index: t/16docnodes.t
--- t/16docnodes.t.orig
+++ t/16docnodes.t
@@ -60,7 +60,12 @@ for my $time (0 .. 2) {
$doc->setDocumentElement($node);
# TEST
- is( $node->serialize(), '<test contents="&#xE4;"/>', 'Node serialise works.' );
+ # libxml2 2.14 avoids unnecessary escaping of attribute values.
+ if (XML::LibXML::LIBXML_VERSION() >= 21400) {
+ is( $node->serialize(), "<test contents=\"\xE4\"/>", 'Node serialise works.' );
+ } else {
+ is( $node->serialize(), '<test contents="&#xE4;"/>', 'Node serialise works.' );
+ }
$doc->setEncoding('utf-8');
# Second output
@@ -0,0 +1,14 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
Index: t/19die_on_invalid_utf8_rt_58848.t
--- t/19die_on_invalid_utf8_rt_58848.t.orig
+++ t/19die_on_invalid_utf8_rt_58848.t
@@ -16,7 +16,7 @@ use XML::LibXML;
my $err = $@;
# TEST
- like ("$err", qr{parser error : Input is not proper UTF-8},
+ like ("$err", qr{not proper UTF-8|Invalid bytes in character encoding},
'Parser error.',
);
}
@@ -0,0 +1,23 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
Index: t/25relaxng.t
--- t/25relaxng.t.orig
+++ t/25relaxng.t
@@ -132,7 +132,7 @@ print "# 6 check that no_network => 1 works\n";
{
my $rng = eval { XML::LibXML::RelaxNG->new( location => $netfile, no_network => 1 ) };
# TEST
- like( $@, qr{I/O error : Attempt to load network entity}, 'RNG from file location with external import and no_network => 1 throws an exception.' );
+ like( $@, qr{Attempt to load network entity}, 'RNG from file location with external import and no_network => 1 throws an exception.' );
# TEST
ok( !defined $rng, 'RNG from file location with external import and no_network => 1 is not loaded.' );
}
@@ -152,7 +152,7 @@ print "# 6 check that no_network => 1 works\n";
</grammar>
EOF
# TEST
- like( $@, qr{I/O error : Attempt to load network entity}, 'RNG from buffer with external import and no_network => 1 throws an exception.' );
+ like( $@, qr{Attempt to load network entity}, 'RNG from buffer with external import and no_network => 1 throws an exception.' );
# TEST
ok( !defined $rng, 'RNG from buffer with external import and no_network => 1 is not loaded.' );
}
@@ -0,0 +1,23 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
Index: t/26schema.t
--- t/26schema.t.orig
+++ t/26schema.t
@@ -117,7 +117,7 @@ EOF
{
my $schema = eval { XML::LibXML::Schema->new( location => $netfile, no_network => 1 ) };
# TEST
- like( $@, qr{I/O error : Attempt to load network entity}, 'Schema from file location with external import and no_network => 1 throws an exception.' );
+ like( $@, qr{Attempt to load network entity}, 'Schema from file location with external import and no_network => 1 throws an exception.' );
# TEST
ok( !defined $schema, 'Schema from file location with external import and no_network => 1 is not loaded.' );
}
@@ -129,7 +129,7 @@ EOF
</xsd:schema>
EOF
# TEST
- like( $@, qr{I/O error : Attempt to load network entity}, 'Schema from buffer with external import and no_network => 1 throws an exception.' );
+ like( $@, qr{Attempt to load network entity}, 'Schema from buffer with external import and no_network => 1 throws an exception.' );
# TEST
ok( !defined $schema, 'Schema from buffer with external import and no_network => 1 is not loaded.' );
}
@@ -0,0 +1,20 @@
https://github.com/shlomif/perl-XML-LibXML/commit/c9f9c2fe51173b0a00969f01b577399f1098aa47
Index: t/49_load_html.t
--- t/49_load_html.t.orig
+++ t/49_load_html.t
@@ -52,7 +52,13 @@ use XML::LibXML;
</div>
EOS
- {
+ SKIP: {
+ # libxml2 2.14 tokenizes HTML according to HTML5 where
+ # this isn't an error, see "13.2.5.73 Named character
+ # reference state".
+ skip("libxml2 version >= 21400", 1)
+ if XML::LibXML::LIBXML_VERSION >= 21400;
+
my $buf = '';
open my $fh, '>', \$buf;
# redirect STDERR there
@@ -0,0 +1,38 @@
https://github.com/shlomif/perl-XML-LibXML/commit/bee8338fd1cbd7aad4bf60c2965833343b6ead6f
Index: t/60error_prev_chain.t
--- t/60error_prev_chain.t.orig
+++ t/60error_prev_chain.t
@@ -16,13 +16,11 @@ use XML::LibXML;
{
my $parser = XML::LibXML->new();
- $parser->validation(0);
- $parser->load_ext_dtd(0);
eval
{
local $^W = 0;
- $parser->parse_file('example/JBR-ALLENtrees.htm');
+ $parser->parse_string('<doc>&ldquo;&nbsp;&rdquo;</doc>');
};
my $err = $@;
@@ -31,7 +29,7 @@ use XML::LibXML;
if( $err && !ref($err) ) {
plan skip_all => 'The local libxml library does not support errors as objects to $@';
}
- plan tests => 1;
+ plan tests => 2;
while (defined($err) && $count < 200)
{
@@ -44,6 +42,8 @@ use XML::LibXML;
# TEST
ok ((!$err), "Reached the end of the chain.");
+ # TEST
+ is ($count, 3, "Correct number of errors reported")
}
=head1 COPYRIGHT & LICENSE