qw(core.sharedRepository 0644));
is(system(@cmd), 0, "set sharedRepository in all.git");
$git0 = PublicInbox::Git->new("$mainrepo/git/0.git");
qw(core.sharedRepository 0644));
is(system(@cmd), 0, "set sharedRepository in all.git");
$git0 = PublicInbox::Git->new("$mainrepo/git/0.git");
my @warn;
local $SIG{__WARN__} = sub { push @warn, @_ };
is($im->add($mime), undef, 'obvious duplicate rejected');
my @warn;
local $SIG{__WARN__} = sub { push @warn, @_ };
is($im->add($mime), undef, 'obvious duplicate rejected');
- like(join(' ', @warn), qr/resent/, 'warned about resent message');
+ is(scalar(@warn), 0, 'no warning about resent message');
- ok($im->add($mime), 'secondary MID used');
+ is($im->add($mime), undef, 'secondary MID ignored if first matches');
+ my $sec = PublicInbox::MIME->new($mime->as_string);
+ $sec->header_set('Date');
+ $sec->header_set('Message-Id', '<a-mid@b>', '<c@d>');
+ ok($im->add($sec), 'secondary MID used if data is different');
like(join(' ', @warn), qr/mismatched/, 'warned about mismatch');
like(join(' ', @warn), qr/alternative/, 'warned about alternative');
is_deeply([ '<a-mid@b>', '<c@d>' ],
like(join(' ', @warn), qr/mismatched/, 'warned about mismatch');
like(join(' ', @warn), qr/alternative/, 'warned about alternative');
is_deeply([ '<a-mid@b>', '<c@d>' ],
ok($im->add($mime), 'reused mid ok');
like(join(' ', @warn), qr/reused/, 'warned about reused MID');
my @mids = $mime->header_obj->header_raw('Message-Id');
ok($im->add($mime), 'reused mid ok');
like(join(' ', @warn), qr/reused/, 'warned about reused MID');
my @mids = $mime->header_obj->header_raw('Message-Id');
- is($mids[1], '<a-mid@b>', 'original mid not changed');
- like($mids[0], $sane_mid, 'new MID added');
+ is($mids[0], '<a-mid@b>', 'original mid not changed');
+ like($mids[1], $sane_mid, 'new MID added');
my $gen = PublicInbox::Import::digest2mid(content_digest($mime));
unlike($gen, qr![\+/=]!, 'no URL-unfriendly chars in Message-Id');
my $fake = PublicInbox::MIME->new($mime->as_string);
my $gen = PublicInbox::Import::digest2mid(content_digest($mime));
unlike($gen, qr![\+/=]!, 'no URL-unfriendly chars in Message-Id');
my $fake = PublicInbox::MIME->new($mime->as_string);
ok($im->add($fake), 'fake added easily');
is_deeply(\@warn, [], 'no warnings from a faker');
ok($im->add($mime), 'random MID made');
like(join(' ', @warn), qr/using random/, 'warned about using random');
@mids = $mime->header_obj->header_raw('Message-Id');
ok($im->add($fake), 'fake added easily');
is_deeply(\@warn, [], 'no warnings from a faker');
ok($im->add($mime), 'random MID made');
like(join(' ', @warn), qr/using random/, 'warned about using random');
@mids = $mime->header_obj->header_raw('Message-Id');
- is($mids[1], '<a-mid@b>', 'original mid not changed');
- like($mids[0], $sane_mid, 'new MID added');
+ is($mids[0], '<a-mid@b>', 'original mid not changed');
+ like($mids[1], $sane_mid, 'new MID added');
my @found = ();
$srch->each_smsg_by_mid($smsg->mid, sub { push @found, @_; 1 });
is(scalar(@found), 0, 'no longer found in Xapian skeleton');
my @found = ();
$srch->each_smsg_by_mid($smsg->mid, sub { push @found, @_; 1 });
is(scalar(@found), 0, 'no longer found in Xapian skeleton');
is($im->remove($mime, 'test removal'), undef,
'remove is idempotent');
$im->done;
is($im->remove($mime, 'test removal'), undef,
'remove is idempotent');
$im->done;
$after, 'no git history made with idempotent remove');
eval { $im->done };
ok(!$@, '->done is idempotent');
}
$after, 'no git history made with idempotent remove');
eval { $im->done };
ok(!$@, '->done is idempotent');
}