Module-Setup
view release on metacpan or search on metacpan
lib/Module/Setup/Test/Flavor.pm view on Meta::CPAN
package Module::Setup::Test::Flavor;
use Module::Setup::Test::Utils;
use Carp ();
use File::Find::Rule;
use Test::More;
sub import {
my $class = shift;
my $caller = caller;
my %args = @_;
if ($args{for_test}) {
no strict 'refs';
no warnings 'redefine';
*ok = sub ($;$) { 1 };
*like = sub ($$;$) { 1 };
*plan = sub {};
}
for my $func (qw/ run_flavor_test name flavor files file dirs options default_dialog dialog /) {
no strict 'refs';
*{"$caller\::$func"} = \&{ $func };
}
strict->import;
warnings->import;
}
my $tests = {};
sub name ($) {
$tests->{module} = shift;
}
sub flavor ($) {
$tests->{flavor_class} = shift;
}
sub files (@) {
push @{ $tests->{files} }, @_;
}
sub file (@) {
my $file = shift;
push @{ $tests->{files} }, {
file => $file,
likes => [ @_ ],
};
}
sub dirs (@) {
push @{ $tests->{dirs} }, @_;
}
sub options ($) {
$tests->{options} = shift;
}
sub run_flavor_test (&) {
my $code = shift;
$tests = {
module => 'Default',
files => [],
dirs => [],
options => {},
flavor_class => 'Default',
};
$code->();
my $module = delete $tests->{module};
my $options = delete $tests->{options};
$options->{target} = 1;
$options->{flavor_class} = delete $tests->{flavor_class};
# test count
my $count = 2;
$count += scalar(@{ $tests->{dirs} });
for my $test (@{ $tests->{files} }) {
$count++;
if (ref($test) eq 'HASH') {
$count += @{ $test->{likes} };
}
}
plan tests => $count;
module_setup $options, $module;
( run in 1.027 second using v1.01-cache-2.11-cpan-39bf76dae61 )