1 package VPIT::TestHelpers;
7 load_or_skip => \&load_or_skip,
8 skip_all => \&skip_all,
14 while (my ($name, $code) = each %exports) {
16 *{$pkg.'::'.$name} = $code;
24 if ($INC{'Test/Leaner.pm'}) {
25 $stash = \%Test::Leaner::;
28 $stash = \%Test::More::;
31 my $glob = $stash->{$sub};
32 return $glob ? *$glob{CODE} : undef;
35 sub skip_all { $test_sub->('plan')->(skip_all => $_[0]) }
38 my $diag = $test_sub->('diag');
46 my ($pkg, $ver, $imports, $desc) = @_;
47 my $spec = $ver && $ver !~ /^[0._]*$/ ? "$pkg $ver" : $pkg;
49 if (eval "use $spec (); 1") {
50 $ver = do { no strict 'refs'; ${"${pkg}::VERSION"} };
51 $ver = 'undef' unless defined $ver;
54 my @imports = @$imports;
55 my $caller = (caller 0)[0];
57 my $res = eval <<"IMPORTER";
60 BEGIN { \$pkg->import(\@imports) }
63 skip_all "Could not import '@imports' from $pkg $ver: $@" unless $res;
65 diag "Using $pkg $ver";
67 (my $file = "$pkg.pm") =~ s{::}{/}g;
69 skip_all "$spec $desc";
73 package VPIT::TestHelpers::Guard;
76 my ($class, $code) = @_;
78 bless { code => $code }, $class;
81 sub DESTROY { $_[0]->{code}->() }