Some new features had tests which failed on new VMs. Eric Wong (3): t/imap_searchqp: fix test dependencies t/init: fix test when ~/.public-inbox/ does not exist emergency: create full path to PI_EMERGENCY lib/PublicInbox/Emergency.pm | 6 ++++-- t/imap_searchqp.t | 3 ++- t/init.t | 4 ++++ 3 files changed, 10 insertions(+), 3 deletions(-)
From: Eric Wong <e@80x24.org> The query parser test pulls in all of the IMAP stuff, so it has the same dependencies. --- t/imap_searchqp.t | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/t/imap_searchqp.t b/t/imap_searchqp.t index d73600b3..d62f314a 100644 --- a/t/imap_searchqp.t +++ b/t/imap_searchqp.t @@ -5,7 +5,8 @@ use strict; use Test::More; use Time::Local qw(timegm); use PublicInbox::TestCommon; -require_mods(qw(Parse::RecDescent)); +require_mods(qw(DBD::SQLite Email::Address::XS||Mail::Address + Parse::RecDescent)); use_ok 'PublicInbox::IMAPsearchqp'; use_ok 'PublicInbox::IMAP';
From: Eric Wong <e@80x24.org> We'll just set the documented PI_EMERGENCY env to a writable location. --- t/init.t | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/t/init.t b/t/init.t index 16581955..6211bb58 100644 --- a/t/init.t +++ b/t/init.t @@ -66,6 +66,7 @@ SKIP: { require_git(2.6, 1) or skip "git 2.6+ required", 2; use_ok 'PublicInbox::Msgmap'; local $ENV{PI_DIR} = "$tmpdir/.public-inbox/"; + local $ENV{PI_EMERGENCY} = "$tmpdir/.public-inbox/emergency"; my $cfgfile = "$ENV{PI_DIR}/config"; my $cmd = [ '-init', '-V2', 'v2list', "$tmpdir/v2list", qw(http://example.com/v2list v2list@example.com) ]; @@ -123,6 +124,7 @@ SKIP: { my $msg = "Message-ID: <$mid>\n\n"; my $rdr = { 0 => \$msg, 2 => \(my $err = '') }; ok(run_script([qw(-mda --no-precheck)], $env, $rdr), 'deliver V1'); + diag "err=$err" if $err; my $mm = PublicInbox::Msgmap->new_file("$tmpdir/skip3/msgmap.sqlite3"); my $n = $mm->num_for($mid); is($n, 13, 'V2 NNTP article numbers skipped via --skip-artnum'); @@ -132,7 +134,9 @@ SKIP: { $cmd = [ qw(-init -V1 -N12 -Lmedium skip4), "$tmpdir/skip4", qw(http://example.com/skip4), $addr ]; ok(run_script($cmd), '--skip-artnum -V1'); + $err = ''; ok(run_script([qw(-mda --no-precheck)], $env, $rdr), 'deliver V1'); + diag "err=$err" if $err; $mm = PublicInbox::Msgmap->new("$tmpdir/skip4"); $n = $mm->num_for($mid); is($n, 13, 'V1 NNTP article numbers skipped via --skip-artnum');
It's possible for ~/.public-inbox/ to not exist if PI_CONFIG points to an alternate location. Only noticed from the previous patch fixing t/init.t behavior. --- lib/PublicInbox/Emergency.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/PublicInbox/Emergency.pm b/lib/PublicInbox/Emergency.pm index 02900bb1..b705e776 100644 --- a/lib/PublicInbox/Emergency.pm +++ b/lib/PublicInbox/Emergency.pm @@ -12,11 +12,13 @@ use IO::Handle; # ->flush, ->autoflush sub new { my ($class, $dir) = @_; - -d $dir or mkdir($dir) or die "failed to mkdir($dir): $!\n"; foreach (qw(new tmp cur)) { my $d = "$dir/$_"; next if -d $d; - -d $d or mkdir($d) or die "failed to mkdir($d): $!\n"; + require File::Path; + if (!File::Path::mkpath($d) && !-d $d) { + die "failed to mkpath($d): $!\n"; + } } bless { dir => $dir, files => {}, t => 0, cnt => 0, pid => $$ }, $class; }