lib/PublicInbox/V2Writable.pm | 2 +- t/v2writable.t | 3 +++ diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm index 222df5c2ffa6d0cf3dae884ea734ee9973dc1619..08d18fc099a25f340432f0ad01ce22ad6f40666e 100644 --- a/lib/PublicInbox/V2Writable.pm +++ b/lib/PublicInbox/V2Writable.pm @@ -390,7 +390,7 @@ sub purge { my ($self, $mime) = @_; my $purges = $self->{-inbox}->with_umask(sub { remove_internal($self, $mime, undef, {}); - }); + }) or return; $self->idx_init if @$purges; # ->done is called on purges for my $i (0..$#$purges) { defined(my $cmt = $purges->[$i]) or next; diff --git a/t/v2writable.t b/t/v2writable.t index ec9f56d91657dbc50d5f97d72874075f8f6b4d3f..f171417513440fb578382a1471ba3e13544af26c 100644 --- a/t/v2writable.t +++ b/t/v2writable.t @@ -247,6 +247,9 @@ local $SIG{__WARN__} = sub {}; ok(my $cmts = $im->purge($mime), 'purged message'); like($cmts->[0], qr/\A[a-f0-9]{40}\z/, 'purge returned current commit'); $im->done; + + # again + is($im->purge($mime), undef, 'no-op returns undef'); } {