From 2b359355ae5839a5597ba81a40194bb3503118a0 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 2 Feb 2020 06:52:14 +0000 Subject: t/multi-mid.t: extra test for -convert highwater mark This is derived from a real-world test case where I encounterd multiple Message-IDs in a v1 inbox causing regen problems. Fixes: eea47b676127bcdb ("convert: preserve highwater mark from v1 msgmap") --- t/multi-mid.t | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 t/multi-mid.t (limited to 't') diff --git a/t/multi-mid.t b/t/multi-mid.t new file mode 100644 index 00000000..0d283a0d --- /dev/null +++ b/t/multi-mid.t @@ -0,0 +1,61 @@ +# Copyright (C) 2020 all contributors +# License: AGPL-3.0+ +use Test::More; +use PublicInbox::MIME; +use PublicInbox::TestCommon; +use PublicInbox::InboxWritable; +use PublicInbox::SearchIdx; +require_git(2.6); +require_mods(qw(DBD::SQLite)); + +my $addr = 'test@example.com'; +my $bad = PublicInbox::MIME->new(< +Message-ID: +From: a\@example.com +To: $addr +Date: Fri, 02 Oct 1993 00:00:00 +0000 +Subject: bad + +EOF + +my $good = PublicInbox::MIME->new(< +Date: Fri, 02 Oct 1993 00:00:00 +0000 +From: b\@example.com +To: $addr +Subject: good + +EOF + +for my $order ([$bad, $good], [$good, $bad]) { + my $before; + my ($tmpdir, $for_destroy) = tmpdir(); + my $ibx = PublicInbox::InboxWritable->new({ + inboxdir => "$tmpdir/v1", + name => 'test-v1', + indexlevel => 'basic', + -primary_address => $addr, + }, my $creat_opt = {}); + if ('setup v1 inbox') { + my $im = $ibx->importer(0); + ok($im->add($_), 'added '.$_->header('Subject')) for @$order; + $im->done; + my $s = PublicInbox::SearchIdx->new($ibx, 1); + $s->index_sync; + $before = [ $ibx->mm->minmax ]; + $ibx->cleanup; + } + my $rdr = { 1 => \(my $out = ''), 2 => \(my $err = '') }; + my $cmd = [ '-convert', $ibx->{inboxdir}, "$tmpdir/v2" ]; + ok(run_script($cmd, undef, $rdr), + 'convert to v2'); + $err =~ s!\AW: $tmpdir/v1 not configured[^\n]+\n!!s; + is($err, '', 'no errors or warnings from -convert'); + $ibx->{version} = 2; + $ibx->{inboxdir} = "$tmpdir/v2"; + is_deeply([$ibx->mm->minmax], $before, + 'min, max article numbers unchanged'); +} + +done_testing(); -- cgit v1.2.3-24-ge0c7