X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=tests%2Fxml-diff.pl;fp=tests%2Fxml-diff.pl;h=b79b252f2264af6c7f3b619be8dc70e7243f2309;hb=82ff866e20de04b78440955d1337e9e9633771de;hp=eed51b40c153a23a5956a24e4aca0e8fca02d414;hpb=9e934ef2402d8ca7fd926f2b2c36ca63801aed86;p=xml-template diff --git a/tests/xml-diff.pl b/tests/xml-diff.pl index eed51b4..b79b252 100644 --- a/tests/xml-diff.pl +++ b/tests/xml-diff.pl @@ -85,13 +85,35 @@ sub compare { my $c1 = $n1->getChildNodes; my $c2 = $n2->getChildNodes; - if ($c1->getLength != $c2->getLength) { + my @c1 = (); + my @c2 = (); + + # find all elements except comments and blanks (not perfect, since we don't get + # compression, but ok) + for my $i (0..($c1->getLength-1)) { + my $item = $c1->item($i); + next if ($item->getNodeType == XML::DOM::COMMENT_NODE); + next if ($item->getNodeType == XML::DOM::TEXT_NODE && $item->getData !~ /\S/); + + push @c1, $item; + } + for my $i (0..($c2->getLength-1)) { + my $item = $c2->item($i); + next if ($item->getNodeType == XML::DOM::COMMENT_NODE); + next if ($item->getNodeType == XML::DOM::TEXT_NODE && $item->getData !~ /\S/); + + push @c2, $item; + } + + if (scalar @c1 != scalar @c2) { + print STDERR scalar @c1, "\n"; + print STDERR scalar @c2, "\n"; print STDERR "$nsuri1/$lname1 has differing number of children\n"; exit(1); } - for my $i (0..($c1->getLength-1)) { - compare($c1->item($i), $c2->item($i), $nsup1, $nsup2); + for my $i (0..$#c1) { + compare($c1[$i], $c2[$i], $nsup1, $nsup2); } $nsup1->pop_context;