Guest User

Untitled

a guest
Jun 22nd, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. package Test::Requires;
  2. use strict;
  3. use warnings;
  4. use base 'Test::Builder::Module';
  5.  
  6. sub import {
  7. if (@_ == 1 && ref $_[0] && ref $_[0] eq 'HASH') {
  8. my %a = %{$_[0]};
  9. while (my ($mod, $ver) = %a) {
  10. test_requires($mod, $ver);
  11. }
  12. } else {
  13. while (my ($mod, $ver) = %a) {
  14. test_requires($mod, $ver);
  15. }
  16. }
  17.  
  18. my $caller = caller(0);
  19. *{"$caller\::test_requires"} = \&test_requires;
  20. }
  21.  
  22. sub test_requires() {
  23. my ( $mod, $ver ) = @_;
  24.  
  25. if ($ver) {
  26. eval qq{use $mod $ver};
  27. }
  28. else {
  29. eval qq{use $mod};
  30. }
  31.  
  32. my $builder = __PACKAGE__->builder;
  33. if ($@) {
  34. if ( $@ =~ /^Can't locate/ ) {
  35. $builder->plan(skip_all => "Test requires module '$mod' but it's not found");
  36. }
  37. else {
  38. $builder->plan(skip_all => "$@");
  39. }
  40. }
  41. }
  42.  
  43. 1;
  44. __END__
  45.  
  46. =head1 SYNOPSIS
  47.  
  48. use Test::Requires 'HTTP::MobileAttribute';
  49. use Test::Requires qw/
  50. Mouse
  51. Any::Moose
  52. /;
  53. use Test::Requires;
  54. test_requires 'HTTP::MobileAttribute' => 0.52;
Add Comment
Please, Sign In to add comment