-# Copyright (C) 2018-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2018-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
use strict;
use warnings;
inboxdir => $inboxdir,
name => 'test-v2writable',
version => 2,
+ -no_fsync => 1,
-primary_address => 'test@example.com',
};
$ibx = PublicInbox::Inbox->new($ibx);
}
{
- use Net::NNTP;
+ require_mods('Net::NNTP', 1);
my $err = "$inboxdir/stderr.log";
my $out = "$inboxdir/stdout.log";
my $group = 'inbox.comp.test.v2writable';
;
close $fh or die "close: $!\n";
my $sock = tcp_server();
- ok($sock, 'sock created');
my $len;
my $cmd = [ '-nntpd', '-W0', "--stdout=$out", "--stderr=$err" ];
my $env = { PI_CONFIG => $pi_config };
my $td = start_script($cmd, $env, { 3 => $sock });
- my $host_port = $sock->sockhost . ':' . $sock->sockport;
+ my $host_port = tcp_host_port($sock);
my $n = Net::NNTP->new($host_port);
$n->group($group);
my $x = $n->xover('1-');
{
ok($im->add($mime), 'add message to be purged');
local $SIG{__WARN__} = sub {};
- ok(my $cmts = $im->purge($mime), 'purged message');
- like($cmts->[0], qr/\A[a-f0-9]{40}\z/, 'purge returned current commit');
+ ok(my $cmt = $im->purge($mime), 'purged message');
+ like($cmt->[0], qr/\A[a-f0-9]{40,}\z/, 'purge returned current commit');
$im->done;
# again
$mime->header_set('Message-ID', "<$y>");
$mime->header_set('References', "<$x>");
ok($im->add($mime), 'add excessively long References');
- $im->barrier;
+ $im->done;
my $msgs = $ibx->over->get_thread('x'x244);
is(2, scalar(@$msgs), 'got both messages');
is($msgs->[0]->{mid}, 'x'x244, 'stored truncated mid');
is($msgs->[1]->{references}, '<'.('x'x244).'>', 'stored truncated ref');
is($msgs->[1]->{mid}, 'y'x244, 'stored truncated mid(2)');
+}
+
+if ('UTF-8 References') {
+ my @w;
+ local $SIG{__WARN__} = sub { push @w, @_ };
+ my $msg = <<EOM;
+From: a\@example.com
+Subject: b
+Message-ID: <horrible\@example>
+References: <\xc4\x80\@example>
+
+EOM
+ ok($im->add(PublicInbox::Eml->new($msg."a\n")), 'UTF-8 References 1');
+ ok($im->add(PublicInbox::Eml->new($msg."b\n")), 'UTF-8 References 2');
$im->done;
+ ok(!grep(/Wide character/, @w), 'no wide characters') or xbail(\@w);
}
my $tmp = {
open $fh, '<', $alt or die $!;
my $before = do { local $/; <$fh> };
- ok($v2w->git_init(3), 'init a new epoch');
+ ok($v2w->{mg}->add_epoch(3), 'init a new epoch');
open $fh, '<', $alt or die $!;
my $after = do { local $/; <$fh> };
ok(index($after, $before) > 0,