X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=t%2Fadmin.t;h=8d09bfc1102c9b907051851319121e91822aa9c7;hp=af1325775405d32feaf157808625b50b23fc8689;hb=refs%2Fheads%2Fmaster;hpb=526f25b2da71377da8e2d8c9a3b717411e58682f diff --git a/t/admin.t b/t/admin.t index af132577..20e3deb7 100644 --- a/t/admin.t +++ b/t/admin.t @@ -1,22 +1,29 @@ -# Copyright (C) 2019-2020 all contributors +#!perl -w +# Copyright (C) all contributors # License: AGPL-3.0+ use strict; -use warnings; -use Test::More; +use v5.10.1; use PublicInbox::TestCommon; use PublicInbox::Import; use_ok 'PublicInbox::Admin'; +my $v1 = create_inbox 'v1', -no_gc => 1, sub {}; my ($tmpdir, $for_destroy) = tmpdir(); -my $git_dir = "$tmpdir/v1"; -my $v2_dir = "$tmpdir/v2"; +my $git_dir = $v1->{inboxdir}; my ($res, $err, $v); - -PublicInbox::Import::init_bare($git_dir); -*resolve_inboxdir = do { - no warnings 'once'; - *PublicInbox::Admin::resolve_inboxdir; +my $v2ibx; +SKIP: { + require_mods(qw(DBD::SQLite), 5); + require_git(2.6, 5); + $v2ibx = create_inbox 'v2', indexlevel => 'basic', version => 2, + -no_gc => 1, sub { + my ($v2w, $ibx) = @_; + $v2w->idx_init; + $v2w->importer; + }; }; +*resolve_inboxdir = \&PublicInbox::Admin::resolve_inboxdir; + # v1 is(resolve_inboxdir($git_dir), $git_dir, 'top-level GIT_DIR resolved'); is(resolve_inboxdir("$git_dir/objects"), $git_dir, 'GIT_DIR/objects resolved'); @@ -54,34 +61,26 @@ SKIP: { } # v2 -SKIP: { - for my $m (qw(DBD::SQLite)) { - skip "$m missing", 5 unless eval "require $m"; - } - use_ok 'PublicInbox::V2Writable'; - use_ok 'PublicInbox::Inbox'; - my $ibx = PublicInbox::Inbox->new({ - inboxdir => $v2_dir, - name => 'test-v2writable', - version => 2, - -primary_address => 'test@example.com', - indexlevel => 'basic', - }); - PublicInbox::V2Writable->new($ibx, 1)->idx_init; - - ok(-e "$v2_dir/inbox.lock", 'exists'); +if ($v2ibx) { + my $v2_dir = $v2ibx->{inboxdir}; 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... + 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,