1 package VPIT::TestHelpers;
7 load_or_skip => \&load_or_skip,
8 skip_all => \&skip_all,
13 while (my ($name, $code) = each %exports) {
15 *{$pkg.'::'.$name} = $code;
22 Test::More::plan(skip_all => $msg);
27 Test::More::diag($_) for @_;
31 my ($pkg, $ver, $imports, $desc) = @_;
32 my $spec = $ver && $ver !~ /^[0._]*$/ ? "$pkg $ver" : $pkg;
34 if (eval "use $spec (); 1") {
35 $ver = do { no strict 'refs'; ${"${pkg}::VERSION"} };
36 $ver = 'undef' unless defined $ver;
38 my @imports = @$imports;
39 my $caller = (caller 0)[0];
41 my $res = eval <<"IMPORTER";
44 BEGIN { \$pkg->import(\@imports) }
47 skip_all "Could not import '@imports' from $pkg $ver: $@" unless $res;
49 diag "Using $pkg $ver";
51 skip_all "$spec $desc";
55 package VPIT::TestHelpers::Guard;
58 my ($class, $code) = @_;
60 bless { code => $code }, $class;
63 sub DESTROY { $_[0]->{code}->() }