use PublicInbox::MIME;
use Cwd;
use PublicInbox::Config;
-my @mods = qw(Filesys::Notify::Simple PublicInbox::V2Writable);
+require './t/common.perl';
+require_git(2.6);
+my @mods = qw(Search::Xapian DBD::SQLite Filesys::Notify::Simple);
foreach my $mod (@mods) {
eval "require $mod";
plan skip_all => "$mod missing for watch_maildir_v2.t" if $@;
}
-
+require PublicInbox::V2Writable;
my $tmpdir = tempdir('watch_maildir-v2-XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $mainrepo = "$tmpdir/v2";
my $maildir = "$tmpdir/md";
'create FIFO to ensure we do not get stuck on it :P');
my $sem = PublicInbox::Emergency->new($spamdir); # create dirs
-my $config = PublicInbox::Config->new({
+my %orig = (
"$cfgpfx.address" => $addr,
"$cfgpfx.mainrepo" => $mainrepo,
"$cfgpfx.watch" => "maildir:$maildir",
"$cfgpfx.filter" => 'PublicInbox::Filter::Vger',
- "publicinboxlearn.watchspam" => "maildir:$spamdir",
-});
+ "publicinboxlearn.watchspam" => "maildir:$spamdir"
+);
+my $config = PublicInbox::Config->new({%orig});
my $ibx = $config->lookup_name('test');
ok($ibx, 'found inbox by name');
my $srch = $ibx->search;
is($nr, 1, 'inbox has one mail after spamc OK-ed a message');
my $mref = $ibx->msg_by_smsg($msgs->[0]);
like($$mref, qr/something\n\z/s, 'message scrubbed on import');
+ delete $config->{'publicinboxwatch.spamcheck'};
+}
+
+{
+ my $patch = 't/data/0001.patch';
+ open my $fh, '<', $patch or die "failed to open $patch: $!\n";
+ $msg = eval { local $/; <$fh> };
+ PublicInbox::Emergency->new($maildir)->prepare(\$msg);
+ PublicInbox::WatchMaildir->new($config)->scan('full');
+ ($nr, $msgs) = $srch->reopen->query('dfpost:6e006fd7');
+ is($nr, 1, 'diff postimage found');
+ my $post = $msgs->[0];
+ ($nr, $msgs) = $srch->query('dfpre:090d998b6c2c');
+ is($nr, 1, 'diff preimage found');
+ is($post->{blob}, $msgs->[0]->{blob}, 'same message');
+}
+
+# multiple inboxes in the same maildir
+{
+ my $v1repo = "$tmpdir/v1";
+ my $v1pfx = "publicinbox.v1";
+ my $v1addr = 'v1-public@example.com';
+ is(system(qw(git init -q --bare), $v1repo), 0, 'v1 init OK');
+ my $config = PublicInbox::Config->new({
+ %orig,
+ "$v1pfx.address" => $v1addr,
+ "$v1pfx.mainrepo" => $v1repo,
+ "$v1pfx.watch" => "maildir:$maildir",
+ });
+ my $both = <<EOF;
+From: user\@example.com
+To: $addr, $v1addr
+Subject: both
+Message-Id: <both\@b.com>
+Date: Sat, 18 Jun 2016 00:00:00 +0000
+
+both
+EOF
+ PublicInbox::Emergency->new($maildir)->prepare(\$both);
+ PublicInbox::WatchMaildir->new($config)->scan('full');
+ my ($total, $msgs) = $srch->reopen->query('m:both@b.com');
+ my $v1 = $config->lookup_name('v1');
+ my $msg = $v1->git->cat_file($msgs->[0]->{blob});
+ is($both, $$msg, 'got original message back from v1');
+ $msg = $ibx->git->cat_file($msgs->[0]->{blob});
+ is($both, $$msg, 'got original message back from v2');
}
done_testing;