use warnings;
use Test::More;
use PublicInbox::MIME;
-use PublicInbox::ContentId qw(content_digest);
+use PublicInbox::ContentId qw(content_digest content_id);
use PublicInbox::TestCommon;
use Cwd qw(abs_path);
require_git(2.6);
-primary_address => 'test@example.com',
};
$ibx = PublicInbox::Inbox->new($ibx);
-my $mime = PublicInbox::MIME->create(
- header => [
- From => 'a@example.com',
- To => 'test@example.com',
- Subject => 'this is a subject',
- 'Message-ID' => '<a-mid@b>',
- Date => 'Fri, 02 Oct 1993 00:00:00 +0000',
- ],
- body => "hello world\n",
-);
+my $mime = PublicInbox::MIME->new(<<'EOF');
+From: a@example.com
+To: test@example.com
+Subject: this is a subject
+Message-ID: <a-mid@b>
+Date: Fri, 02 Oct 1993 00:00:00 +0000
+hello world
+EOF
my $im = PublicInbox::V2Writable->new($ibx, {nproc => 1});
is($im->{shards}, 1, 'one shard when forced');
ok($im->add($mime), 'ordinary message added');
if ('ensure git configs are correct') {
my @cmd = (qw(git config), "--file=$inboxdir/all.git/config",
qw(core.sharedRepository 0644));
- is(system(@cmd), 0, "set sharedRepository in all.git");
+ is(xsys(@cmd), 0, "set sharedRepository in all.git");
$git0 = PublicInbox::Git->new("$inboxdir/git/0.git");
chomp(my $v = $git0->qx(qw(config core.sharedRepository)));
is($v, '0644', 'child repo inherited core.sharedRepository');
@mids = $mime->header_obj->header_raw('Message-Id');
like($mids[0], $sane_mid, 'mid was generated');
is(scalar(@mids), 1, 'new generated');
+
+ @warn = ();
+ $mime->header_set('Message-Id', '<space@ (NXDOMAIN) >');
+ ok($im->add($mime), 'message added with space in Message-Id');
+ is_deeply([], \@warn);
}
{
is($uniq{$mid}++, 0, "MID for $num is unique in XOVER");
is_deeply($n->xhdr('Message-ID', $num),
{ $num => $mid }, "XHDR lookup OK on num $num");
+
+ # FIXME PublicInbox::NNTP (server) doesn't handle spaces in
+ # Message-ID, but neither does Net::NNTP (client)
+ next if $mid =~ / /;
+
is_deeply($n->xhdr('Message-ID', $mid),
- { $mid => $mid }, "XHDR lookup OK on MID $num");
+ { $mid => $mid }, "XHDR lookup OK on MID $mid ($num)");
}
my %nn;
foreach my $mid (@{$n->newnews(0, $group)}) {
my $before = $git0->qx(@log, qw(--pretty=raw --raw -r));
$im = PublicInbox::V2Writable->new($ibx, {nproc => 2});
is($im->{shards}, 1, 'detected single shard from previous');
- my $smsg = $im->remove($mime, 'test removal');
+ my ($mark, $rm_mime, $smsg) = $im->remove($mime, 'test removal');
+ is(content_id($rm_mime), content_id($mime),
+ 'removed object returned matches');
+ ok(defined($mark), 'mark set');
$im->done;
my @after = $git0->qx(@log, qw(--pretty=oneline));
my $tip = shift @after;