XML::Feed pulls in a lot of dependencies, some of which XS.
That makes testing with blead or any non-OS-supplied Perl
installations more time consuming and more difficult because
of the need to have development headers and libraries for
libexpat1 or libxml2.
Performance from libexpat1 or libxml2 for our small tests cases
isn't relevant, either, and the pure Perl XML::TreePP seems up
to the task. It's also available in CentOS 7.x, FreeBSD 11.x,
and Debian, at least.
pkg: perl5
rpm: perl-Test-Simple
pkg: perl5
rpm: perl-Test-Simple
-- XML::Feed deb: libxml-feed-perl
- pkg: p5-XML-Feed
- rpm: perl-XML-Feed
+- XML::TreePP deb: libxml-treepp-perl
+ pkg: p5-XML-TreePP
+ rpm: perl-XML-TreePP
standard MakeMaker installation (Perl)
--------------------------------------
standard MakeMaker installation (Perl)
--------------------------------------
# optional developer stuff
devtest => [ qw(
# optional developer stuff
devtest => [ qw(
SKIP: { skip 'DBD::SQLite not available', 2 };
}
SKIP: { skip 'DBD::SQLite not available', 2 };
}
- my $have_xml_feed = eval { require XML::Feed; 1 } if $indexed;
- if ($have_xml_feed) {
+ my $have_xml_treepp = eval { require XML::TreePP; 1 } if $indexed;
+ if ($have_xml_treepp) {
$path = "/test/blahblah\@example.com/t.atom";
$res = cgi_run($path);
like($res->{head}, qr/^Status: 200 /, "atom returned 200");
like($res->{head}, qr!^Content-Type: application/atom\+xml!m,
"search returned atom");
$path = "/test/blahblah\@example.com/t.atom";
$res = cgi_run($path);
like($res->{head}, qr/^Status: 200 /, "atom returned 200");
like($res->{head}, qr!^Content-Type: application/atom\+xml!m,
"search returned atom");
- my $p = XML::Feed->parse(\($res->{body}));
- is($p->format, "Atom", "parsed atom feed");
- is(scalar $p->entries, 3, "parsed three entries");
+ my $t = XML::TreePP->new->parse($res->{body});
+ is(scalar @{$t->{feed}->{entry}}, 3, "parsed three entries");
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
- SKIP: { skip 'DBD::SQLite or XML::Feed missing', 2 };
+ SKIP: { skip 'DBD::SQLite or XML::TreePP missing', 2 };
use PublicInbox::Feed;
use PublicInbox::Import;
use PublicInbox::Inbox;
use PublicInbox::Feed;
use PublicInbox::Import;
use PublicInbox::Inbox;
-my $have_xml_feed = eval { require XML::Feed; 1 };
+my $have_xml_treepp = eval { require XML::TreePP; 1 };
use PublicInbox::TestCommon;
sub string_feed {
use PublicInbox::TestCommon;
sub string_feed {
{
my $feed = string_feed({ -inbox => $ibx });
SKIP: {
{
my $feed = string_feed({ -inbox => $ibx });
SKIP: {
- skip 'XML::Feed missing', 2 unless $have_xml_feed;
- my $p = XML::Feed->parse(\$feed);
- is($p->format, "Atom", "parsed atom feed");
- is(scalar $p->entries, 3, "parsed three entries");
- is($p->id, 'mailto:test@example',
- "id is set to default");
+ skip 'XML::TreePP missing', 3 unless $have_xml_treepp;
+ my $t = XML::TreePP->new->parse($feed);
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
+ is(scalar @{$t->{feed}->{entry}}, 3,
+ 'parsed three entries');
+ is($t->{feed}->{id}, 'mailto:test@example',
+ 'id is set to default');
}
like($feed, qr/drop me/, "long quoted text kept");
}
like($feed, qr/drop me/, "long quoted text kept");
{
my $spammy_feed = string_feed({ -inbox => $ibx });
SKIP: {
{
my $spammy_feed = string_feed({ -inbox => $ibx });
SKIP: {
- skip 'XML::Feed missing', 2 unless $have_xml_feed;
- my $p = XML::Feed->parse(\$spammy_feed);
- is($p->format, "Atom", "parsed atom feed");
- is(scalar $p->entries, 3, "parsed three entries");
+ skip 'XML::TreePP missing', 2 unless $have_xml_treepp;
+ my $t = XML::TreePP->new->parse($spammy_feed);
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
+ is(scalar @{$t->{feed}->{entry}}, 3,
+ 'parsed three entries');
}
like($spammy_feed, qr/SPAM/s, "spam showed up :<");
}
}
like($spammy_feed, qr/SPAM/s, "spam showed up :<");
}
{
my $feed = string_feed({ -inbox => $ibx });
SKIP: {
{
my $feed = string_feed({ -inbox => $ibx });
SKIP: {
- skip 'XML::Feed missing', 2 unless $have_xml_feed;
- my $p = XML::Feed->parse(\$feed);
- is($p->format, "Atom", "parsed atom feed");
- is(scalar $p->entries, 3, "parsed three entries");
+ skip 'XML::TreePP missing', 2 unless $have_xml_treepp;
+ my $t = XML::TreePP->new->parse($feed);
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
+ is(scalar @{$t->{feed}->{entry}}, 3,
+ 'parsed three entries');
}
unlike($feed, qr/SPAM/, "spam gone :>");
}
}
unlike($feed, qr/SPAM/, "spam gone :>");
}
$res = $cb->(GET('/v2test/?q=m:a-mid@b&x=A'));
is($res->code, 200, 'success with Atom search');
SKIP: {
$res = $cb->(GET('/v2test/?q=m:a-mid@b&x=A'));
is($res->code, 200, 'success with Atom search');
SKIP: {
- require_mods(qw(XML::Feed), 2);
- $raw = $res->content;
- my $p = XML::Feed->parse(\$raw);
- is($p->format, "Atom", "parsed atom feed");
- is(scalar $p->entries, 3, "parsed three entries");
+ require_mods(qw(XML::TreePP), 2);
+ my $t = XML::TreePP->new->parse($res->content);
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
+ is(scalar @{$t->{feed}->{entry}}, 3, 'parsed three entries');
};
local $SIG{__WARN__} = 'DEFAULT';
};
local $SIG{__WARN__} = 'DEFAULT';