Files
snmp-info/xt/21_run.t
2018-12-29 20:41:10 +00:00

60 lines
1.4 KiB
Perl

#!/usr/bin/env perl
use strict;
use warnings;
use lib 'xt/lib';
use Module::Find;
my @BAD_MODULES = qw(
Test::SNMP::Info::MAU
Test::SNMP::Info::Layer3::C4000
);
my @found = findallmod 'Test::SNMP::Info';
unshift @found, 'Test::SNMP::Info';
# pass a specific module to test,
# using e.g. "prove xt/21_run.t :: Test::SNMP::Info::MAU"
if (scalar @ARGV) { @found = @ARGV }
# cannot do this inline with findallmod
@found = sort { (scalar split m/::/, $a) <=> (scalar split m/::/, $b)
or
$a cmp $b } @found;
my $total = scalar @found - scalar @BAD_MODULES;
my $count = 0;
# fake test plan
print "1..$total\n";
foreach my $module (@found) {
if (grep m/^${module}$/, @BAD_MODULES) {
# printf STDERR "!!> skipping: %s\n", $module;
next;
}
my $preamble = <<'END_CODE_PREAMBLE';
# this is to avoid annoying plan warnings with the way subtests are done
{
use Hook::LexWrap;
use Test::Builder;
no warnings 'redefine';
wrap *Test::Builder::diag, pre => sub {
$_[-1] = 1
if $_[1] and $_[1] =~ m/Tests were run but no plan was declared/;
};
}
END_CODE_PREAMBLE
my $code = <<"END_CODE";
$module->builder->current_test($count);
Test::More::subtest '$module' => sub { $module->runtests() };
END_CODE
# printf STDERR "--> %d: %s\n", ($count + 1), $module;
system (qw{perl -Ilib -Ixt/lib}, "-M$module", '-e', $preamble . $code);
++$count;
}