X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fv2mirror.t;h=ecf968912f6eb768a4edfa5630661bbdf23e44a2;hb=fb8e7dbd1b711d25d1033c3f5f540ce47f6c0849;hp=e3c384fa77a1f546741e153a59492d2d96b49c20;hpb=3c313f9034aac96182e2efdc2f92c40803626f32;p=public-inbox.git
diff --git a/t/v2mirror.t b/t/v2mirror.t
index e3c384fa..ecf96891 100644
--- a/t/v2mirror.t
+++ b/t/v2mirror.t
@@ -1,4 +1,4 @@
-# Copyright (C) 2018-2019 all contributors
+# Copyright (C) 2018-2020 all contributors
# License: AGPL-3.0+
use strict;
use warnings;
@@ -9,11 +9,8 @@ require_git(2.6);
local $ENV{HOME} = abs_path('t');
# Integration tests for HTTP cloning + mirroring
-foreach my $mod (qw(Plack::Util Plack::Builder
- HTTP::Date HTTP::Status Search::Xapian DBD::SQLite)) {
- eval "require $mod";
- plan skip_all => "$mod missing for v2mirror.t" if $@;
-}
+require_mods(qw(Plack::Util Plack::Builder
+ HTTP::Date HTTP::Status Search::Xapian DBD::SQLite));
use IO::Socket;
use POSIX qw(dup2);
use_ok 'PublicInbox::V2Writable';
@@ -58,6 +55,11 @@ for my $i (1..9) {
my $epoch_max = $v2w->{epoch_max};
ok($epoch_max > 0, "multiple epochs");
$v2w->done;
+{
+ my $smsg = $ibx->over->get_art(1);
+ like($smsg->{lines}, qr/\A[0-9]+\z/, 'lines is a digit');
+ like($smsg->{bytes}, qr/\A[0-9]+\z/, 'bytes is a digit');
+}
$ibx->cleanup;
my $sock = tcp_server();
@@ -74,7 +76,7 @@ foreach my $i (0..$epoch_max) {
"http://$host:$port/v2/$i$sfx",
"$tmpdir/m/git/$i.git");
- is(system(@cmd), 0, "cloned $i.git");
+ is(xsys(@cmd), 0, "cloned $i.git");
ok(-d "$tmpdir/m/git/$i.git", "mirror $i OK");
}
@@ -100,7 +102,7 @@ $ibx->cleanup;
my $fetch_each_epoch = sub {
foreach my $i (0..$epoch_max) {
my $dir = "$tmpdir/m/git/$i.git";
- is(system('git', "--git-dir=$dir", 'fetch', '-q'), 0,
+ is(xsys('git', "--git-dir=$dir", 'fetch', '-q'), 0,
'fetch successful');
}
};
@@ -185,6 +187,37 @@ is($mibx->git->check($to_purge), undef, 'unindex+prune successful in mirror');
is(scalar($mset->items), 0, '1@example.com no longer visible in mirror');
}
+if ('max size') {
+ $mime->header_set('Message-ID', '<2big@a>');
+ my $max = '2k';
+ $mime->body_str_set("z\n" x 1024);
+ ok($v2w->add($mime), "add big message");
+ $v2w->done;
+ $ibx->cleanup;
+ $fetch_each_epoch->();
+ PublicInbox::InboxWritable::cleanup($mibx);
+ my $cmd = ['-index', "$tmpdir/m", "--max-size=$max" ];
+ my $opt = { 2 => \(my $err) };
+ ok(run_script($cmd, undef, $opt), 'indexed with --max-size');
+ like($err, qr/skipping [a-f0-9]{40,}/, 'warned about skipping message');
+ $mset = $mibx->search->reopen->query('m:2big@a', {mset =>1});
+ is(scalar($mset->items), 0, 'large message not indexed');
+
+ {
+ open my $fh, '>>', $pi_config or die;
+ print $fh <search->reopen->query('m:2big@a', {mset =>1});
+ is(scalar($mset->items), 0, 'large message not re-indexed');
+}
+
ok($td->kill, 'killed httpd');
$td->join;