1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
use strict;
use warnings;
use Test::More;
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 $modulelist;
subtest 'make modulelist' => sub {
my $injects_dir = catfile $temp_dir, 'injects';
ok -e $injects_dir, 'injects directory exists';
$modulelist = catfile $injects_dir, 'modulelist';
my $fh;
if( open $fh, '>', catfile $modulelist ) {
print {$fh} <<'HERE';
CPAN::Checksums 1.016 A/AN/ANDK/CPAN-Checksums-1.016.tar.gz
CPAN::Mini 0.18 R/RJ/RJBS/CPAN-Mini-0.18.tar.gz
CPANPLUS 0.0499 A/AU/AUTRIJUS/CPANPLUS-0.0499.tar.gz
HERE
close $fh;
}
else {
fail( "Could not open <$modulelist>: $!" );
}
};
subtest 'add to modulelist' => sub {
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->readlist;
my $module_line = "CPAN::Mini::Inject 0.01 S/SS/SSORICHE/CPAN-Mini-Inject-0.01.tar.gz";
subtest 'modify modulelist' => sub {
ok -e $modulelist, "modulelist file exists";
push( @{ $mcpi->{modulelist} }, $module_line );
is( @{ $mcpi->{modulelist} }, 4, 'Updated memory modulelist' );
ok( $mcpi->writelist, 'Write modulelist' );
};
subtest 'check modulelist' => sub {
my $other_mcpi = $class->new;
isa_ok $other_mcpi, $class;
$mcpi->loadcfg( $tmp_config_file )->parsecfg->readlist;
is( @{ $mcpi->{modulelist} }, 4, 'Updated memory modulelist' );
my $found = grep { $_ eq $module_line } @{ $mcpi->{modulelist} };
ok $found, "target line is in modulelist";
};
};
done_testing();
|