about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/common.perl4
-rw-r--r--t/git.t58
-rw-r--r--t/nntpd.t37
3 files changed, 40 insertions, 59 deletions
diff --git a/t/common.perl b/t/common.perl
index e49a5965..5a898e32 100644
--- a/t/common.perl
+++ b/t/common.perl
@@ -3,6 +3,8 @@
 
 use Fcntl qw(FD_CLOEXEC F_SETFD F_GETFD);
 use POSIX qw(dup2);
+use strict;
+use warnings;
 
 sub stream_to_string {
         my ($res) = @_;
@@ -48,7 +50,7 @@ sub require_git ($;$) {
         my $cur_int = ($cur_maj << 24) | ($cur_min << 16);
         if ($cur_int < $req_int) {
                 return 0 if $maybe;
-                plan skip_all => "git $req+ required, have $git_ver";
+                plan skip_all => "git $req+ required, have $cur_maj.$cur_min";
         }
         1;
 }
diff --git a/t/git.t b/t/git.t
index 913f6e5e..9bc8900c 100644
--- a/t/git.t
+++ b/t/git.t
@@ -33,33 +33,7 @@ use_ok 'PublicInbox::Git';
         my $raw = $gcf->cat_file($f);
         is($x[2], length($$raw), 'length matches');
 
-        {
-                my $size;
-                my $rv = $gcf->cat_file($f, sub {
-                        my ($in, $left) = @_;
-                        $size = $$left;
-                        'nothing'
-                });
-                is($rv, 'nothing', 'returned from callback without reading');
-                is($size, $x[2], 'set size for callback correctly');
-        }
-
-        eval { $gcf->cat_file($f, sub { die 'OMG' }) };
-        like($@, qr/\bOMG\b/, 'died in callback propagated');
         is(${$gcf->cat_file($f)}, $$raw, 'not broken after failures');
-
-        {
-                my ($buf, $r);
-                my $rv = $gcf->cat_file($f, sub {
-                        my ($in, $left) = @_;
-                        $r = read($in, $buf, 2);
-                        $$left -= $r;
-                        'blah'
-                });
-                is($r, 2, 'only read 2 bytes');
-                is($buf, '--', 'partial read succeeded');
-                is($rv, 'blah', 'return value propagated');
-        }
         is(${$gcf->cat_file($f)}, $$raw, 'not broken after partial read');
 }
 
@@ -79,44 +53,12 @@ if (1) {
 
         my $gcf = PublicInbox::Git->new($dir);
         my $rsize;
-        is($gcf->cat_file($buf, sub {
-                $rsize = ${$_[1]};
-                'x';
-        }), 'x', 'checked input');
-        is($rsize, $size, 'got correct size on big file');
-
         my $x = $gcf->cat_file($buf, \$rsize);
         is($rsize, $size, 'got correct size ref on big file');
         is(length($$x), $size, 'read correct number of bytes');
 
-        my $rline;
-        $gcf->cat_file($buf, sub {
-                my ($in, $left) = @_;
-                $rline = <$in>;
-                $$left -= length($rline);
-        });
-        {
-                open my $fh, '<', $big_data or die "open failed: $!\n";
-                is($rline, <$fh>, 'first line matches');
-        };
-
-        my $all;
-        $gcf->cat_file($buf, sub {
-                my ($in, $left) = @_;
-                my $x = read($in, $all, $$left);
-                $$left -= $x;
-        });
-        {
-                open my $fh, '<', $big_data or die "open failed: $!\n";
-                local $/;
-                is($all, <$fh>, 'entire read matches');
-        };
-
         my $ref = $gcf->qx(qw(cat-file blob), $buf);
-        is($all, $ref, 'qx read giant single string');
-
         my @ref = $gcf->qx(qw(cat-file blob), $buf);
-        is($all, join('', @ref), 'qx returned array when wanted');
         my $nl = scalar @ref;
         ok($nl > 1, "qx returned array length of $nl");
 
diff --git a/t/nntpd.t b/t/nntpd.t
index c73cc122..a95fb6fc 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -231,6 +231,43 @@ EOF
                 ok($date >= $t0, 'valid date after start');
                 ok($date <= $t1, 'valid date before stop');
         }
+        if ('leafnode interop') {
+                my $for_leafnode = PublicInbox::MIME->new(<<"");
+From: longheader\@example.com
+To: $addr
+Subject: none
+Date: Fri, 02 Oct 1993 00:00:00 +0000
+
+                my $long_hdr = 'for-leafnode-'.('y'x200).'@example.com';
+                $for_leafnode->header_set('Message-ID', "<$long_hdr>");
+                $im->add($for_leafnode);
+                $im->done;
+                if ($version == 1) {
+                        my $s = PublicInbox::SearchIdx->new($mainrepo, 1);
+                        $s->index_sync;
+                }
+                my $hdr = $n->head("<$long_hdr>");
+                my $expect = qr/\AMessage-ID: /i . qr/\Q<$long_hdr>\E/;
+                ok(scalar(grep(/$expect/, @$hdr)), 'Message-ID not folded');
+                ok(scalar(grep(/^Path:/, @$hdr)), 'Path: header found');
+
+                # it's possible for v2 messages to have 2+ Message-IDs,
+                # but leafnode can't handle it
+                if ($version != 1) {
+                        my @mids = ("<$long_hdr>", '<2mid@wtf>');
+                        $for_leafnode->header_set('Message-ID', @mids);
+                        $for_leafnode->body_set('not-a-dupe');
+                        my $warn = '';
+                        $SIG{__WARN__} = sub { $warn .= join('', @_) };
+                        $im->add($for_leafnode);
+                        $im->done;
+                        like($warn, qr/reused/, 'warned for reused MID');
+                        $hdr = $n->head('<2mid@wtf>');
+                        my @hmids = grep(/\AMessage-ID: /i, @$hdr);
+                        is(scalar(@hmids), 1, 'Single Message-ID in header');
+                        like($hmids[0], qr/: <2mid\@wtf>/, 'got expected mid');
+                }
+        }
 
         # pipelined requests:
         {