diff options
Diffstat (limited to 't/init.t')
-rw-r--r-- | t/init.t | 29 |
1 files changed, 21 insertions, 8 deletions
@@ -1,11 +1,12 @@ -# Copyright (C) 2014-2021 all contributors <meta@public-inbox.org> +#!perl -w +# Copyright (C) all contributors <meta@public-inbox.org> # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> use strict; -use warnings; -use Test::More; +use v5.10.1; use PublicInbox::Config; use PublicInbox::TestCommon; use PublicInbox::Admin; +use PublicInbox::InboxWritable; my ($tmpdir, $for_destroy) = tmpdir(); sub quiet_fail { my ($cmd, $msg) = @_; @@ -18,7 +19,11 @@ sub quiet_fail { my $cfgfile = "$ENV{PI_DIR}/config"; my $cmd = [ '-init', 'blist', "$tmpdir/blist", qw(http://example.com/blist blist@example.com) ]; + my $umask = umask(070) // xbail "umask: $!"; ok(run_script($cmd), 'public-inbox-init OK'); + umask($umask) // xbail "umask: $!"; + my $mode = (stat($cfgfile))[2]; + is(sprintf('0%03o', $mode & 0777), '0604', 'config respects umask'); is(read_indexlevel('blist'), '', 'indexlevel unset by default'); @@ -102,7 +107,7 @@ sub quiet_fail { umask($umask) // xbail "umask: $!"; ok(-d "$tmpdir/a/b/c/d", 'directory created'); my $desc = "$tmpdir/a/b/c/d/description"; - is(PublicInbox::Inbox::try_cat($desc), + is(PublicInbox::IO::try_cat($desc), "public inbox for abcd\@example.com\n", 'description set'); my $mode = (stat($desc))[2]; is(sprintf('0%03o', $mode & 0777), '0644', @@ -116,8 +121,8 @@ sub quiet_fail { } SKIP: { - require_mods(qw(DBD::SQLite Search::Xapian), 2); - require_git(2.6, 1) or skip "git 2.6+ required", 2; + require_mods(qw(DBD::SQLite Xapian), 2); + require_git(2.6, 2); use_ok 'PublicInbox::Msgmap'; local $ENV{PI_DIR} = "$tmpdir/.public-inbox/"; local $ENV{PI_EMERGENCY} = "$tmpdir/.public-inbox/emergency"; @@ -147,7 +152,7 @@ SKIP: { ok(run_script($cmd), "-init -L $lvl"); is(read_indexlevel("v2$lvl"), $lvl, "indexlevel set to '$lvl'"); my $ibx = PublicInbox::Inbox->new({ inboxdir => $dir }); - is(PublicInbox::Admin::detect_indexlevel($ibx), $lvl, + is(PublicInbox::InboxWritable::detect_indexlevel($ibx), $lvl, 'detected expected level w/o config'); ok(!$ibx->{-skip_docdata}, 'docdata written by default'); } @@ -159,7 +164,7 @@ SKIP: { "$name\@example.com" ]; ok(run_script($cmd), "-init -V$v --skip-docdata"); my $ibx = PublicInbox::Inbox->new({ inboxdir => $dir }); - is(PublicInbox::Admin::detect_indexlevel($ibx), 'full', + is(PublicInbox::InboxWritable::detect_indexlevel($ibx), 'full', "detected default indexlevel -V$v"); ok($ibx->{-skip_docdata}, "docdata skip set -V$v"); ok($ibx->search->has_threadid, 'has_threadid flag set on new inbox'); @@ -211,6 +216,14 @@ SKIP: { is($n, 13, 'V1 NNTP article numbers skipped via --skip-artnum'); } +{ + local $ENV{PI_DIR} = "$tmpdir/.public-inbox/"; + my $cmd = [ qw(-init -C), "$tmpdir", qw(chdirlist chdirlist), + qw(http://example.com/chdirlist chdirlist@example.com)]; + ok(run_script($cmd), '-init with -C (chdir)'); + ok(-d "$tmpdir/chdirlist", '-C processed correctly'); +} + done_testing(); sub read_indexlevel { |