X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FTestCommon.pm;h=9680b94c2821ea8c5aee8902610d175b2f51eda2;hb=a09f678d8254064af7ca6dcfb3c3f84b5ae37b51;hp=372cafa60d3e38b6eedc22325b2b64423185f007;hpb=f1259e56d75b8f06a40fb466bee51a399cc317c5;p=public-inbox.git diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 372cafa6..9680b94c 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -8,7 +8,7 @@ use parent qw(Exporter); use Fcntl qw(FD_CLOEXEC F_SETFD F_GETFD :seek); use POSIX qw(dup2); use IO::Socket::INET; -our @EXPORT = qw(tmpdir tcp_server tcp_connect require_git +our @EXPORT = qw(tmpdir tcp_server tcp_connect require_git require_mods run_script start_script key2sub); sub tmpdir (;$) { @@ -59,6 +59,20 @@ sub require_git ($;$) { 1; } +sub require_mods { + my @mods = @_; + my $maybe = pop @mods if $mods[-1] =~ /\A[0-9]+\z/; + my @need; + for my $mod (@mods) { + eval "require $mod"; + push @need, $mod if $@; + } + return unless @need; + my $m = join(', ', @need)." missing for $0"; + Test::More::skip($m, $maybe) if $maybe; + Test::More::plan(skip_all => $m) +} + sub key2script ($) { my ($key) = @_; return $key if (index($key, '/') >= 0);