Update VPIT::TestHelpers to e8344578
authorVincent Pit <vince@profvince.com>
Wed, 30 Jan 2013 16:23:31 +0000 (14:23 -0200)
committerVincent Pit <vince@profvince.com>
Wed, 30 Jan 2013 16:41:41 +0000 (14:41 -0200)
t/91-pod.t
t/92-pod-coverage.t
t/93-pod-spelling.t
t/95-portability-files.t
t/99-kwalitee.t
t/lib/VPIT/TestHelpers.pm
t/lib/indirect/TestThreads.pm

index c2d16af..3431665 100644 (file)
@@ -8,8 +8,7 @@ use Test::More;
 use lib 't/lib';
 use VPIT::TestHelpers;
 
-load_or_skip('Test::Pod', '1.22', [ ],
-             'required for testing POD syntax');
+load_or_skip_all('Test::Pod', '1.22', [ ]);
 
 eval 'use Test::Pod'; # Make Kwalitee test happy
 
index 6399021..ff5a3d1 100644 (file)
@@ -8,10 +8,8 @@ use Test::More;
 use lib 't/lib';
 use VPIT::TestHelpers;
 
-my $desc = 'required for testing POD coverage';
-
-load_or_skip('Test::Pod::Coverage', '1.08', [ ],   $desc);
-load_or_skip('Pod::Coverage',       '0.18', undef, $desc);
+load_or_skip_all('Test::Pod::Coverage', '1.08', [ ]);
+load_or_skip_all('Pod::Coverage',       '0.18'     );
 
 eval 'use Test::Pod::Coverage'; # Make Kwalitee test happy
 
index 1636764..8173209 100644 (file)
@@ -8,7 +8,6 @@ use Test::More;
 use lib 't/lib';
 use VPIT::TestHelpers;
 
-load_or_skip('Test::Pod::Spelling::CommonMistakes', '1.0', [ ],
-             'required for testing POD spelling');
+load_or_skip_all('Test::Pod::Spelling::CommonMistakes', '1.0', [ ]);
 
 all_pod_files_ok();
index 55a9005..7119271 100644 (file)
@@ -8,7 +8,6 @@ use Test::More;
 use lib 't/lib';
 use VPIT::TestHelpers;
 
-load_or_skip('Test::Portability::Files', undef, [ ],
-             'required for testing filenames portability');
+load_or_skip_all('Test::Portability::Files', undef, [ ]);
 
 run_tests();
index 796fe61..337d917 100644 (file)
@@ -12,11 +12,9 @@ my $guard = VPIT::TestHelpers::Guard->new(
  sub { unlink for glob 'Debian_CPANTS.txt*' }
 );
 
-my $desc = 'required to test kwalitee';
-
-load_or_skip('Parse::RecDescent',  '1.967006', undef, $desc);
-load_or_skip('Module::ExtractUse', '0.24',     undef, $desc);
-load_or_skip('Test::Kwalitee',     '1.01',     undef, $desc);
+load_or_skip_all('Parse::RecDescent',  '1.967006');
+load_or_skip_all('Module::ExtractUse', '0.24'    );
+load_or_skip_all('Test::Kwalitee',     '1.01'    );
 
 SKIP: {
  eval { Test::Kwalitee->import(); };
index 42ff189..3d545e8 100644 (file)
@@ -4,12 +4,14 @@ use strict;
 use warnings;
 
 my %exports = (
- load_or_skip => \&load_or_skip,
- skip_all     => \&skip_all,
+ load_or_skip     => \&load_or_skip,
+ load_or_skip_all => \&load_or_skip_all,
+ skip_all         => \&skip_all,
 );
 
 sub import {
  my $pkg = caller;
+
  while (my ($name, $code) = each %exports) {
   no strict 'refs';
   *{$pkg.'::'.$name} = $code;
@@ -18,6 +20,7 @@ sub import {
 
 my $test_sub = sub {
  my $sub = shift;
+
  my $stash;
  if ($INC{'Test/Leaner.pm'}) {
   $stash = \%Test::Leaner::;
@@ -25,10 +28,13 @@ my $test_sub = sub {
   require Test::More;
   $stash = \%Test::More::;
  }
+
  my $glob = $stash->{$sub};
  return $glob ? *$glob{CODE} : undef;
 };
 
+sub skip { $test_sub->('skip')->(@_) }
+
 sub skip_all { $test_sub->('plan')->(skip_all => $_[0]) }
 
 sub diag {
@@ -39,16 +45,20 @@ sub diag {
 our $TODO;
 local $TODO;
 
-sub load_or_skip {
- my ($pkg, $ver, $imports, $desc) = @_;
+sub load {
+ my ($pkg, $ver, $imports) = @_;
+
  my $spec = $ver && $ver !~ /^[0._]*$/ ? "$pkg $ver" : $pkg;
+ my $err;
+
  local $@;
  if (eval "use $spec (); 1") {
   $ver = do { no strict 'refs'; ${"${pkg}::VERSION"} };
   $ver = 'undef' unless defined $ver;
+
   if ($imports) {
    my @imports = @$imports;
-   my $caller  = (caller 0)[0];
+   my $caller  = (caller 1)[0];
    local $@;
    my $res = eval <<"IMPORTER";
 package
@@ -56,14 +66,40 @@ package
 BEGIN { \$pkg->import(\@imports) }
 1;
 IMPORTER
-   skip_all "Could not import '@imports' from $pkg $ver: $@" unless $res;
+   $err = "Could not import '@imports' from $pkg $ver: $@" unless $res;
   }
-  diag "Using $pkg $ver";
  } else {
   (my $file = "$pkg.pm") =~ s{::}{/}g;
   delete $INC{$file};
-  skip_all "$spec $desc";
+  $err = "Could not load $spec";
  }
+
+ if ($err) {
+  return wantarray ? (0, $err) : 0;
+ } else {
+  diag "Using $pkg $ver";
+  return 1;
+ }
+}
+
+sub load_or_skip {
+ my ($pkg, $ver, $imports, $tests) = @_;
+
+ die 'You must specify how many tests to skip' unless defined $tests;
+
+ my ($loaded, $err) = load($pkg, $ver, $imports);
+ skip $err => $tests unless $loaded;
+
+ return $loaded;
+}
+
+sub load_or_skip_all {
+ my ($pkg, $ver, $imports) = @_;
+
+ my ($loaded, $err) = load($pkg, $ver, $imports);
+ skip_all $err unless $loaded;
+
+ return $loaded;
 }
 
 package VPIT::TestHelpers::Guard;
index 8a93dca..da805c0 100644 (file)
@@ -20,8 +20,7 @@ sub import {
  skip_all 'perl 5.13.4 required to test thread safety'
                                               unless $force or "$]" >= 5.013004;
 
- load_or_skip('threads', $force ? '0' : '1.67', [ ],
-              'required to test thread safety');
+ load_or_skip_all('threads', $force ? '0' : '1.67', [ ]);
 
  my %exports = (
   spawn => \&spawn,