# called by GzipFilter->write or GetlineResponse->getline
sub translate {
my $self = shift;
- my $rec = $_[0] // return $self->zflush; # getline
+ $_[0] // return zflush($self); # getline caller
my @out;
my $lbuf = delete($self->{lbuf}) // shift;
$lbuf .= shift while @_;
}
$self->{lbuf} = $lbuf;
chomp @out;
- $self->SUPER::translate(@out);
+ @out ? $self->SUPER::translate(@out) : ''; # not EOF, yet
}
# $REPO/tags.atom endpoint
# called by GzipFilter->write or GetlineResponse->getline
sub translate {
my $ctx = shift;
- my $rec = $_[0] // return zflush($ctx); # getline
+ $_[0] // return zflush($ctx); # getline caller
my @out;
my $fbuf = delete($ctx->{fbuf}) // shift;
$fbuf .= shift while @_;
$snap_pfx, @snap_fmt);
}
}
- $ctx->{fbuf} = $fbuf;
- $ctx->SUPER::translate(@out);
+ $ctx->{fbuf} = $fbuf; # may be incomplete
+ @out ? $ctx->SUPER::translate(@out) : ''; # not EOF, yet
}
sub _refs_parse_hdr { # {parse_hdr} for Qspawn
is($res->code, 200, 'Atom feed');
SKIP: {
require_mods('XML::TreePP', 1);
- my $t = XML::TreePP->new->parse($res->content);
+ my $t = eval { XML::TreePP->new->parse($res->content) }
+ or diag explain($res);
is(scalar @{$t->{feed}->{entry}}, 50,
- 'got 50 entries');
+ 'got 50 entries') or diag explain([$t, $res]);
$res = $cb->(GET('/public-inbox/atom/COPYING'));
is($res->code, 200, 'file Atom feed');
$t = XML::TreePP->new->parse($res->content);
- ok($t->{feed}->{entry}, 'got entry');
+ ok($t->{feed}->{entry}, 'got entry') or
+ diag explain([ $t, $res ]);
$res = $cb->(GET('/public-inbox/atom/README.md'));
is($res->code, 404, '404 on missing file Atom feed');