CPAN-Mini-Inject
view release on metacpan or search on metacpan
t/add-multiple.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use CPAN::Mini::Inject;
use File::Basename qw(basename);
use File::Copy qw(copy);
use File::Path qw(make_path);
use File::Spec::Functions qw(catfile);
use File::Temp ();
use lib qw(t/lib);
use Local::utils;
my $class = 'CPAN::Mini::Inject';
$SIG{'INT'} = sub { print "\nCleaning up before exiting\n"; exit 1 };
my $temp_dir = File::Temp::tempdir(CLEANUP=>1);
subtest 'sanity' => sub {
use_ok $class or BAIL_OUT( "Could not load $class: $@" );
isa_ok $class->new, $class;
};
subtest 'setup directories in temp dir' => sub {
my @dirs = (
[ qw(modules) ],
[ qw(authors) ],
[ qw(injects) ],
);
foreach my $dir ( @dirs ) {
my $path = catfile $temp_dir, @$dir;
make_path( $path );
ok -d $path, "Path for <@$dir> exists";
}
};
my $t_local = catfile qw(t local);
subtest 'check local dir' => sub {
ok -d $t_local, 'local directory exists';
};
subtest 'copy initial files' => sub {
my $modules_base = catfile $temp_dir, 'modules';
ok -d $modules_base, 'modules dir exists';
my $authors_base = catfile $temp_dir, 'authors';
ok -d $authors_base, 'authors dir exists';
subtest 'packages' => sub {
my $file = '02packages.details.txt.gz';
my $destination = catfile $modules_base, $file;
my $rc = copy(
catfile( $t_local, 'CPAN', 'modules', "$file.original" ),
$destination
);
ok $rc, 'File::Copy worked';
ok -e $destination, 'Copied packages file to temp_dir';
ok chmod(0666, $destination), 'chmod packages to 0666';
};
subtest 'mailrc' => sub {
my $file = '01mailrc.txt.gz';
my $destination = catfile $authors_base, $file;
my $rc = copy(
catfile( $t_local, "$file.original" ),
$destination
);
ok $rc, 'File::Copy worked';
ok -e $destination, 'Copied mailrc file to temp_dir';
ok chmod(0666, $destination), 'chmod mailrc to 0666';
};
};
sub get_module_details {
my( $dist_sources ) = @_;
my @modules = (
{
module => 'CPAN::Mini::Inject',
authorid => 'SSORICHE',
version => '0.01',
file => catfile( $dist_sources, 'CPAN-Mini-Inject-0.01.tar.gz' ),
},
{
authorid => 'RWSTAUNER',
file => catfile( $dist_sources, 'Dist-Metadata-Test-MetaFile-2.2.tar.gz' ),
},
{
module => 'Dist::Metadata::Test::MetaFile',
authorid => 'RWSTAUNER',
version => '2.3', # package versions do not match this
file => 't/local/mymodules/Dist-Metadata-Test-MetaFile-2.2.tar.gz'
},
{
authorid => 'RWSTAUNER',
file => 't/local/mymodules/Dist-Metadata-Test-MetaFile-Only.tar.gz'
},
{
authorid => 'BRIANDFOY',
file => 't/local/mymodules/App-runscript-v1.0.0_02.tgz',
},
);
}
subtest 'add modules' => sub {
my $dist_sources = catfile $t_local, 'mymodules';
ok -d $dist_sources, 'Dist sources directory exists';
my @modules = get_module_details( $dist_sources );
subtest 'check module sources are there' => sub {
foreach my $module ( @modules ) {
ok -e $module->{file}, "$module->{file} exists";
}
};
my $tmp_config_file;
subtest 'make config' => sub {
$tmp_config_file = write_config(
local => $temp_dir,
repository => catfile( $temp_dir, 'injects' ),
);
ok -e $tmp_config_file, 'configuration file exists';
};
my $mcpi = $class->new;
isa_ok $mcpi, $class;
$mcpi->loadcfg( $tmp_config_file )->parsecfg;
foreach my $module ( @modules ) {
my $basename = basename($module->{file});
( run in 1.027 second using v1.01-cache-2.11-cpan-39bf76dae61 )