X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FTestCommon.pm;h=c3820d3a57463e44f19843541ec4003082a0874b;hb=ded9dad254c15aded6f8a1cf6b11e51e325b872d;hp=57f1db952e49f7000cc509809d46ef89e14b3ee5;hpb=226dc151ff50f50082baeae97b7ef600357c135f;p=public-inbox.git diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 57f1db95..c3820d3a 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -429,7 +429,8 @@ sub tail_f (@) { require PublicInbox::Spawn; my $pid = PublicInbox::Spawn::spawn($cmd, undef, { 1 => 2 }); wait_for_tail($pid, scalar @_); - PublicInboxTestProcess->new($pid, \&wait_for_tail); + require PublicInbox::AutoReap; + PublicInbox::AutoReap->new($pid, \&wait_for_tail); } sub start_script { @@ -492,7 +493,8 @@ sub start_script { die "FAIL: ",join(' ', $key, @argv), ": $!\n"; } } - my $td = PublicInboxTestProcess->new($pid); + require PublicInbox::AutoReap; + my $td = PublicInbox::AutoReap->new($pid); $td->{-extra} = $tail; $td; } @@ -672,8 +674,10 @@ sub create_inbox ($$;@) { my %opt = @_; require PublicInbox::Lock; require PublicInbox::InboxWritable; + require PublicInbox::Import; my ($base) = ($0 =~ m!\b([^/]+)\.[^\.]+\z!); - my $dir = "t/data-gen/$base.$ident"; + my ($db) = (PublicInbox::Import::default_branch() =~ m!([^/]+)\z!); + my $dir = "t/data-gen/$base.$ident-$db"; my $new = !-d $dir; if ($new) { mkdir $dir; # may race @@ -742,37 +746,6 @@ sub test_httpd ($$;$) { }; -package PublicInboxTestProcess; -use strict; - -# prevent new threads from inheriting these objects -sub CLONE_SKIP { 1 } - -sub new { - my ($cls, $pid, $cb) = @_; - bless { pid => $pid, cb => $cb, owner => $$ }, $cls; -} - -sub kill { - my ($self, $sig) = @_; - CORE::kill($sig // 'TERM', $self->{pid}); -} - -sub join { - my ($self, $sig) = @_; - my $pid = delete $self->{pid} or return; - $self->{cb}->() if defined $self->{cb}; - CORE::kill($sig, $pid) if defined $sig; - my $ret = waitpid($pid, 0) // die "waitpid($pid): $!"; - $ret == $pid or die "waitpid($pid) != $ret"; -} - -sub DESTROY { - my ($self) = @_; - return if $self->{owner} != $$; - $self->join('TERM'); -} - package PublicInbox::TestCommon::InboxWakeup; use strict; sub on_inbox_unlock { ${$_[0]}->($_[1]) }