about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/mid.t7
-rw-r--r--t/psgi_v2.t2
-rw-r--r--t/v2reindex.t16
-rw-r--r--t/v2writable.t16
4 files changed, 35 insertions, 6 deletions
diff --git a/t/mid.t b/t/mid.t
index 9ad10a99..98b0c200 100644
--- a/t/mid.t
+++ b/t/mid.t
@@ -1,7 +1,7 @@
 # Copyright (C) 2016-2019 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use Test::More;
-use PublicInbox::MID qw(mid_escape mids references);
+use PublicInbox::MID qw(mid_escape mids references mids_for_index);
 
 is(mid_escape('foo!@(bar)'), 'foo!@(bar)');
 is(mid_escape('foo%!@(bar)'), 'foo%25!@(bar)');
@@ -10,6 +10,7 @@ is(mid_escape('foo%!@(bar)'), 'foo%25!@(bar)');
 {
         use Email::MIME;
         my $mime = Email::MIME->create;
+        $mime->header_set('X-Alt-Message-ID', '<alt-id-for-nntp>');
         $mime->header_set('Message-Id', '<mid-1@a>');
         is_deeply(['mid-1@a'], mids($mime->header_obj), 'mids in common case');
         $mime->header_set('Message-Id', '<mid-1@a>', '<mid-2@b>');
@@ -40,6 +41,10 @@ is(mid_escape('foo%!@(bar)'), 'foo%25!@(bar)');
         $mime->header_set('To', 'u@example.com');
         $mime->header_set('References', '<hello> <world> <n> <u@example.com>');
         is_deeply(references($mime->header_obj), [qw(hello world)]);
+
+        is_deeply([qw(helloworld alt-id-for-nntp)],
+                mids_for_index($mime->header_obj),
+                'X-Alt-Message-ID can be indexed');
 }
 
 done_testing();
diff --git a/t/psgi_v2.t b/t/psgi_v2.t
index cb5ece63..c7550e2d 100644
--- a/t/psgi_v2.t
+++ b/t/psgi_v2.t
@@ -168,7 +168,7 @@ test_psgi(sub { $www->call(@_) }, sub {
         @from_ = ($raw =~ m/>From: /mg);
         is(scalar(@from_), 3, 'three From: lines');
         foreach my $mid ('a-mid@b', $new_mid, $third) {
-                like($raw, qr/&lt;\Q$mid\E&gt;/s, "Message-ID $mid shown");
+                like($raw, qr!>\Q$mid\E</a>!s, "Message-ID $mid shown");
         }
         like($raw, qr/\b3\+ messages\b/, 'thread overview shown');
 
diff --git a/t/v2reindex.t b/t/v2reindex.t
index 52711f8f..3e56ddfa 100644
--- a/t/v2reindex.t
+++ b/t/v2reindex.t
@@ -439,7 +439,7 @@ ok(!-d $xap, 'Xapian directories removed again');
         my @warn;
         local $SIG{__WARN__} = sub { push @warn, @_ };
         my %config = %$ibx_config;
-        $config{indexlevel} = 'basic';
+        $config{indexlevel} = 'medium';
         my $ibx = PublicInbox::Inbox->new(\%config);
         my $im = PublicInbox::V2Writable->new($ibx);
         my $m3 = PublicInbox::MIME->new(<<'EOF');
@@ -447,7 +447,7 @@ Date: Tue, 24 May 2016 14:34:22 -0700 (PDT)
 Message-Id: <20160524.143422.552507610109476444.d@example.com>
 To: t@example.com
 Cc: c@example.com
-Subject: Re: [PATCH v2 2/2]
+Subject: Re: [PATCH v2 2/2] uno
 From: <f@example.com>
 In-Reply-To: <1463825855-7363-2-git-send-email-y@example.com>
 References: <1463825855-7363-1-git-send-email-y@example.com>
@@ -456,14 +456,14 @@ Date: Wed, 25 May 2016 10:01:51 +0900
 From: h@example.com
 To: g@example.com
 Cc: m@example.com
-Subject: Re: [PATCH]
+Subject: Re: [PATCH] dos
 Message-ID: <20160525010150.GD7292@example.com>
 References: <1463498133-23918-1-git-send-email-g+r@example.com>
 In-Reply-To: <1463498133-23918-1-git-send-email-g+r@example.com>
 From: s@example.com
 To: h@example.com
 Cc: m@example.com
-Subject: [PATCH 12/13]
+Subject: [PATCH 12/13] tres
 Date: Wed, 01 Jun 2016 01:32:35 +0300
 Message-ID: <1923946.Jvi0TDUXFC@wasted.example.com>
 In-Reply-To: <13205049.n7pM8utpHF@wasted.example.com>
@@ -495,6 +495,14 @@ EOF
         eval { $im->index_sync({reindex=>1}) };
         is($@, '', 'no error from reindexing after reused Message-ID (x3)');
         is_deeply(\@warn, [], 'no warnings on reindex');
+
+        my %uniq;
+        for my $s (qw(uno dos tres)) {
+                my $msgs = $ibx->search->query("s:$s");
+                is(scalar(@$msgs), 1, "only one result for `$s'");
+                $uniq{$msgs->[0]->{num}}++;
+        }
+        is_deeply([values %uniq], [3], 'search on different subjects');
 }
 
 done_testing();
diff --git a/t/v2writable.t b/t/v2writable.t
index 06dafe98..bfe17d0a 100644
--- a/t/v2writable.t
+++ b/t/v2writable.t
@@ -115,6 +115,7 @@ if ('ensure git configs are correct') {
 
 {
         $mime->header_set('Message-Id', '<abcde@1>', '<abcde@2>');
+        $mime->header_set('X-Alt-Message-Id', '<alt-id-for-nntp>');
         $mime->header_set('References', '<zz-mid@b>');
         ok($im->add($mime), 'message with multiple Message-ID');
         $im->done;
@@ -127,6 +128,21 @@ if ('ensure git configs are correct') {
         is($mset2->size, 1, 'message found by second MID');
         is((($mset1->items)[0])->get_docid, (($mset2->items)[0])->get_docid,
                 'same document') if ($mset1->size);
+
+        my $alt = $srch->reopen->query('m:alt-id-for-nntp', { mset => 1 });
+        is($alt->size, 1, 'message found by alt MID (NNTP)');
+        is((($alt->items)[0])->get_docid, (($mset1->items)[0])->get_docid,
+                'same document') if ($mset1->size);
+        $mime->header_set('X-Alt-Message-Id');
+
+        my %uniq;
+        for my $mid (qw(abcde@1 abcde@2 alt-id-for-nntp)) {
+                my $msgs = $ibx->over->get_thread($mid);
+                my $key = join(' ', sort(map { $_->{num} } @$msgs));
+                $uniq{$key}++;
+        }
+        is(scalar(keys(%uniq)), 1, 'all alt Message-ID queries give same smsg');
+        is_deeply([values(%uniq)], [3], '3 queries, 3 results');
 }
 
 {