X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fadmin.t;h=8d09bfc1102c9b907051851319121e91822aa9c7;hb=f1e4e14793d155ea7d6ed7a6858b668e97c7e5d8;hp=af1325775405d32feaf157808625b50b23fc8689;hpb=526f25b2da71377da8e2d8c9a3b717411e58682f;p=public-inbox.git
diff --git a/t/admin.t b/t/admin.t
index af132577..8d09bfc1 100644
--- a/t/admin.t
+++ b/t/admin.t
@@ -1,22 +1,29 @@
-# Copyright (C) 2019-2020 all contributors
+#!perl -w
+# Copyright (C) 2019-2021 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, 1) or skip 5, 'git too old';
+ $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,