Module-Setup
view release on metacpan or search on metacpan
lib/Module/Setup/Test/Utils.pm view on Meta::CPAN
package Module::Setup::Test::Utils;
use strict;
use warnings;
use File::Temp;
use Module::Setup;
# chdir HOME to avoid "Cannot remove current directory" warning
END{ chdir }
my $stdout = [];
sub stdout { $stdout }
sub import {
my $class = shift;
my $caller = caller;
my %args = @_;
for my $func (qw/ context module_setup stdout dialog default_dialog setup_dir target_dir clear_tempdir flavors_dir template_dir additional_dir additional_config_file plugins_dir config_file /) {
no strict 'refs';
*{"$caller\::$func"} = \&{ $func };
}
strict->import;
warnings->import;
unless ($args{without_stdout}) {
no warnings 'redefine';
*Module::Setup::stdout = sub { push @{ $stdout }, $_[1] };
}
}
sub _path_dir (@) {
Module::Setup::Path::Dir->new(@_);
}
my $setup_dir;
sub setup_dir (@) {
$setup_dir = File::Temp->newdir unless $setup_dir;
_path_dir($setup_dir, @_);
}
sub flavors_dir {
setup_dir('flavors', @_);
}
sub template_dir {
my $flavor = shift;
flavors_dir($flavor, 'template', @_);
}
sub additional_dir {
my $flavor = shift;
flavors_dir($flavor, 'additional', @_);
}
sub additional_config_file {
my $flavor = shift;
additional_dir($flavor)->file('config.yaml');
}
sub plugins_dir {
my $flavor = shift;
flavors_dir($flavor, 'plugins', @_);
}
sub config_file {
my $flavor = shift;
flavors_dir($flavor)->file('config.yaml');
}
my $target_dir;
sub target_dir (@) {
$target_dir = File::Temp->newdir unless $target_dir;
_path_dir($target_dir, @_);
}
sub clear_tempdir {
$setup_dir = undef;
$target_dir = undef;
}
my $context;
sub context { $context }
sub module_setup ($@) {
$stdout = [];
my($options, @argv) = @_;
@argv = @{ $argv[0] } if ref $argv[0] eq 'ARRAY';
$options->{module_setup_dir} = setup_dir unless $options->{module_setup_dir};
if ($options->{target}) {
( run in 0.705 second using v1.01-cache-2.11-cpan-39bf76dae61 )