X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fmbox_lock.t;h=c2fee0d4eb88d056f006480841c497c1ab3e5576;hb=4eee5af6011cc8cdefb66c9729952c7eff5c0b0b;hp=3dc3b449cd2338209ff3a59894cfbe5fde8878df;hpb=3104d7492aa4aee07455dcad7449f786188afdf5;p=public-inbox.git diff --git a/t/mbox_lock.t b/t/mbox_lock.t index 3dc3b449..c2fee0d4 100644 --- a/t/mbox_lock.t +++ b/t/mbox_lock.t @@ -5,6 +5,7 @@ use strict; use v5.10.1; use PublicInbox::TestCommon; use POSIX qw(_exit); use PublicInbox::DS qw(now); use Errno qw(EAGAIN); +use PublicInbox::OnDestroy; use_ok 'PublicInbox::MboxLock'; my ($tmpdir, $for_destroy) = tmpdir(); my $f = "$tmpdir/f"; @@ -15,6 +16,17 @@ ok(!-f "$f.lock", 'dotlock gone'); $mbl = PublicInbox::MboxLock->acq($f, 1, ['none']); ok(!-f "$f.lock", 'no dotlock with none'); undef $mbl; +{ + opendir my $cur, '.' or BAIL_OUT $!; + my $od = PublicInbox::OnDestroy->new(sub { chdir $cur }); + chdir $tmpdir or BAIL_OUT; + my $abs = "$tmpdir/rel.lock"; + my $rel = PublicInbox::MboxLock->acq('rel', 1, ['dotlock']); + chdir '/' or BAIL_OUT; + ok(-f $abs, 'lock with abs path created'); + undef $rel; + ok(!-f $abs, 'lock gone despite being in the wrong dir'); +} eval { PublicInbox::MboxLock->acq($f, 1, ['bogus']);