about summary refs log tree commit homepage
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/admin.t16
-rw-r--r--t/config.t3
-rw-r--r--t/ds-poll.t28
-rw-r--r--t/epoll.t8
-rw-r--r--t/git.t5
-rw-r--r--t/imapd.t26
-rw-r--r--t/search.t4
7 files changed, 42 insertions, 48 deletions
diff --git a/t/admin.t b/t/admin.t
index af132577..60c6037d 100644
--- a/t/admin.t
+++ b/t/admin.t
@@ -12,10 +12,7 @@ my $v2_dir = "$tmpdir/v2";
 my ($res, $err, $v);
 
 PublicInbox::Import::init_bare($git_dir);
-*resolve_inboxdir = do {
-        no warnings 'once';
-        *PublicInbox::Admin::resolve_inboxdir;
-};
+*resolve_inboxdir = \&PublicInbox::Admin::resolve_inboxdir;
 
 # v1
 is(resolve_inboxdir($git_dir), $git_dir, 'top-level GIT_DIR resolved');
@@ -72,16 +69,23 @@ SKIP: {
         ok(-e "$v2_dir/inbox.lock", 'exists');
         is(resolve_inboxdir($v2_dir), $v2_dir,
                 'resolve_inboxdir works on v2_dir');
-        ok(chdir($v2_dir), 'chdir v2_dir OK');
+        chdir($v2_dir) or BAIL_OUT "chdir v2_dir: $!";
         is(resolve_inboxdir(), $v2_dir, 'resolve_inboxdir works inside v2_dir');
         $res = resolve_inboxdir(undef, \$v);
         is($v, 2, 'version 2 detected');
         is($res, $v2_dir, 'detects directory along with version');
 
         # TODO: should work from inside Xapian dirs, and git dirs, here...
+        PublicInbox::Import::init_bare("$v2_dir/git/0.git");
+        my $objdir = "$v2_dir/git/0.git/objects";
+        is($v2_dir, resolve_inboxdir($objdir, \$v), 'at $objdir');
+        is($v, 2, 'version 2 detected at $objdir');
+        chdir($objdir) or BAIL_OUT "chdir objdir: $!";
+        is(resolve_inboxdir(undef, \$v), $v2_dir, 'inside $objdir');
+        is($v, 2, 'version 2 detected inside $objdir');
 }
 
-chdir '/';
+chdir '/' or BAIL_OUT "chdir: $!";
 
 my @pairs = (
         '1g' => 1024 ** 3,
diff --git a/t/config.t b/t/config.t
index 99a7fef4..7fb44acc 100644
--- a/t/config.t
+++ b/t/config.t
@@ -234,12 +234,13 @@ EOF
 }
 
 SKIP: {
+        # XXX wildcard match requires git 2.26+
         require_git('1.8.5', 2) or
                 skip 'git 1.8.5+ required for --url-match', 2;
         my $f = "$tmpdir/urlmatch";
         open my $fh, '>', $f or BAIL_OUT $!;
         print $fh <<EOF or BAIL_OUT $!;
-[imap "imap://*.example.com"]
+[imap "imap://mail.example.com"]
         pollInterval = 9
 EOF
         close $fh or BAIL_OUT;
diff --git a/t/ds-poll.t b/t/ds-poll.t
index 3771059b..0ee57b69 100644
--- a/t/ds-poll.t
+++ b/t/ds-poll.t
@@ -16,35 +16,35 @@ pipe($r, $w) or die;
 pipe($x, $y) or die;
 is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($r), EPOLLIN), 0, 'add EPOLLIN');
 my $events = [];
-my $n = $p->epoll_wait(9, 0, $events);
+$p->epoll_wait(9, 0, $events);
 is_deeply($events, [], 'no events set');
-is($n, 0, 'nothing ready, yet');
 is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($w), EPOLLOUT|EPOLLONESHOT), 0,
         'add EPOLLOUT|EPOLLONESHOT');
-$n = $p->epoll_wait(9, -1, $events);
-is($n, 1, 'got POLLOUT event');
-is($events->[0]->[0], fileno($w), '$w ready');
+$p->epoll_wait(9, -1, $events);
+is(scalar(@$events), 1, 'got POLLOUT event');
+is($events->[0], fileno($w), '$w ready');
 
-$n = $p->epoll_wait(9, 0, $events);
-is($n, 0, 'nothing ready after oneshot');
+$p->epoll_wait(9, 0, $events);
+is(scalar(@$events), 0, 'nothing ready after oneshot');
 is_deeply($events, [], 'no events set after oneshot');
 
 syswrite($w, '1') == 1 or die;
 for my $t (0..1) {
-        $n = $p->epoll_wait(9, $t, $events);
-        is($events->[0]->[0], fileno($r), "level-trigger POLLIN ready #$t");
-        is($n, 1, "only event ready #$t");
+        $p->epoll_wait(9, $t, $events);
+        is($events->[0], fileno($r), "level-trigger POLLIN ready #$t");
+        is(scalar(@$events), 1, "only event ready #$t");
 }
 syswrite($y, '1') == 1 or die;
 is($p->epoll_ctl(EPOLL_CTL_ADD, fileno($x), EPOLLIN|EPOLLONESHOT), 0,
         'EPOLLIN|EPOLLONESHOT add');
-is($p->epoll_wait(9, -1, $events), 2, 'epoll_wait has 2 ready');
-my @fds = sort(map { $_->[0] } @$events);
+$p->epoll_wait(9, -1, $events);
+is(scalar @$events, 2, 'epoll_wait has 2 ready');
+my @fds = sort @$events;
 my @exp = sort((fileno($r), fileno($x)));
 is_deeply(\@fds, \@exp, 'got both ready FDs');
 
 is($p->epoll_ctl(EPOLL_CTL_DEL, fileno($r), 0), 0, 'EPOLL_CTL_DEL OK');
-$n = $p->epoll_wait(9, 0, $events);
-is($n, 0, 'nothing ready after EPOLL_CTL_DEL');
+$p->epoll_wait(9, 0, $events);
+is(scalar @$events, 0, 'nothing ready after EPOLL_CTL_DEL');
 
 done_testing;
diff --git a/t/epoll.t b/t/epoll.t
index b47650e3..a1e73e07 100644
--- a/t/epoll.t
+++ b/t/epoll.t
@@ -12,11 +12,11 @@ is(epoll_ctl($epfd, EPOLL_CTL_ADD, fileno($w), EPOLLOUT), 0,
     'epoll_ctl socket EPOLLOUT');
 
 my @events;
-is(epoll_wait($epfd, 100, 10000, \@events), 1, 'epoll_wait returns');
+epoll_wait($epfd, 100, 10000, \@events);
 is(scalar(@events), 1, 'got one event');
-is($events[0]->[0], fileno($w), 'got expected FD');
-is($events[0]->[1], EPOLLOUT, 'got expected event');
+is($events[0], fileno($w), 'got expected FD');
 close $w;
-is(epoll_wait($epfd, 100, 0, \@events), 0, 'epoll_wait timeout');
+epoll_wait($epfd, 100, 0, \@events);
+is(@events, 0, 'epoll_wait timeout');
 
 done_testing;
diff --git a/t/git.t b/t/git.t
index dfd7173a..2cfff248 100644
--- a/t/git.t
+++ b/t/git.t
@@ -76,12 +76,17 @@ if (1) {
         is(length($$x), $size, 'read correct number of bytes');
 
         my $ref = $gcf->qx(qw(cat-file blob), $buf);
+        is($?, 0, 'no error on scalar success');
         my @ref = $gcf->qx(qw(cat-file blob), $buf);
+        is($?, 0, 'no error on wantarray success');
         my $nl = scalar @ref;
         ok($nl > 1, "qx returned array length of $nl");
+        is(join('', @ref), $ref, 'qx array and scalar context both work');
 
         $gcf->qx(qw(repack -adq));
         ok($gcf->packed_bytes > 0, 'packed size is positive');
+        $gcf->qx(qw(rev-parse --verify bogus));
+        isnt($?, 0, '$? set on failure'.$?);
 }
 
 SKIP: {
diff --git a/t/imapd.t b/t/imapd.t
index 43ec200c..63a86e71 100644
--- a/t/imapd.t
+++ b/t/imapd.t
@@ -296,27 +296,11 @@ $pi_cfg->each_inbox(sub {
 
         # ensure IDLE persists across HUP, w/o extra watches or FDs
         $td->kill('HUP') or BAIL_OUT "failed to kill -imapd: $!";
-        SKIP: {
-                skip 'no inotify fdinfo (or support)', 2 if !@ino_info;
-                my (@tmp, %prev);
-                local $/ = "\n";
-                my $end = time + 5;
-                until (time > $end) {
-                        select undef, undef, undef, 0.01;
-                        open my $fh, '<', $ino_fdinfo or
-                                                BAIL_OUT "$ino_fdinfo: $!";
-                        %prev = map { $_ => 1 } @ino_info;
-                        @tmp = grep(/^inotify wd:/, <$fh>);
-                        if (scalar(@tmp) == scalar(@ino_info)) {
-                                delete @prev{@tmp};
-                                last if scalar(keys(%prev)) == @ino_info;
-                        }
-                }
-                is(scalar @tmp, scalar @ino_info,
-                        'old inotify watches replaced');
-                is(scalar keys %prev, scalar @ino_info,
-                        'no previous watches overlap');
-        };
+        for my $n (1..2) { # kick the event loop so we know HUP is done
+                my $m = $imap_client->new(%mic_opt);
+                ok($m->login && $m->IsAuthenticated && $m->logout,
+                        "connection $n works after HUP");
+        }
 
         open($fh, '<', 't/data/0001.patch') or BAIL_OUT("open: $!");
         run_script(['-mda', '--no-precheck'], $env, { 0 => $fh }) or
diff --git a/t/search.t b/t/search.t
index da9acb07..3754717d 100644
--- a/t/search.t
+++ b/t/search.t
@@ -332,13 +332,13 @@ $ibx->with_umask(sub {
                 like($smsg->{to}, qr/\blist\@example\.com\b/, 'to appears');
                 my $doc = $m->get_document;
                 my $col = PublicInbox::Search::BYTES();
-                my $bytes = PublicInbox::SearchIdx::get_val($doc, $col);
+                my $bytes = PublicInbox::Search::int_val($doc, $col);
                 like($bytes, qr/\A[0-9]+\z/, '$bytes stored as digit');
                 ok($bytes > 0, '$bytes is > 0');
                 is($bytes, $smsg->{bytes}, 'bytes Xapian value matches Over');
 
                 $col = PublicInbox::Search::UID();
-                my $uid = PublicInbox::SearchIdx::get_val($doc, $col);
+                my $uid = PublicInbox::Search::int_val($doc, $col);
                 is($uid, $smsg->{num}, 'UID column matches {num}');
                 is($uid, $m->get_docid, 'UID column matches docid');
         }