Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Test::Requires;
- use strict;
- use warnings;
- use base 'Test::Builder::Module';
- sub import {
- if (@_ == 1 && ref $_[0] && ref $_[0] eq 'HASH') {
- my %a = %{$_[0]};
- while (my ($mod, $ver) = %a) {
- test_requires($mod, $ver);
- }
- } else {
- while (my ($mod, $ver) = %a) {
- test_requires($mod, $ver);
- }
- }
- my $caller = caller(0);
- *{"$caller\::test_requires"} = \&test_requires;
- }
- sub test_requires() {
- my ( $mod, $ver ) = @_;
- if ($ver) {
- eval qq{use $mod $ver};
- }
- else {
- eval qq{use $mod};
- }
- my $builder = __PACKAGE__->builder;
- if ($@) {
- if ( $@ =~ /^Can't locate/ ) {
- $builder->plan(skip_all => "Test requires module '$mod' but it's not found");
- }
- else {
- $builder->plan(skip_all => "$@");
- }
- }
- }
- 1;
- __END__
- =head1 SYNOPSIS
- use Test::Requires 'HTTP::MobileAttribute';
- use Test::Requires qw/
- Mouse
- Any::Moose
- /;
- use Test::Requires;
- test_requires 'HTTP::MobileAttribute' => 0.52;
Add Comment
Please, Sign In to add comment