diff options
Diffstat (limited to 't/add-multiple.t')
-rw-r--r-- | t/add-multiple.t | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/t/add-multiple.t b/t/add-multiple.t new file mode 100644 index 0000000..8aad410 --- /dev/null +++ b/t/add-multiple.t @@ -0,0 +1,72 @@ +use Test::More tests => 13; + +use CPAN::Mini::Inject; +use File::Path; + +mkdir( 't/local/MYCPAN' ); + +my $mcpi; +$mcpi = CPAN::Mini::Inject->new; +$mcpi->loadcfg( 't/.mcpani/config' )->parsecfg; + +$mcpi->add( + module => 'CPAN::Mini::Inject', + authorid => 'SSORICHE', + version => '0.01', + file => 't/local/mymodules/CPAN-Mini-Inject-0.01.tar.gz' + )->add( + #module => 'Dist::Metadata::Test::MetaFile', + authorid => 'RWSTAUNER', + #version => '2.1', + file => 't/local/mymodules/Dist-Metadata-Test-MetaFile-2.2.tar.gz' + )->add( + 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' + )->add( + authorid => 'RWSTAUNER', + file => 't/local/mymodules/Dist-Metadata-Test-MetaFile-Only.tar.gz' + ); + +my $auth_path = File::Spec->catfile( 'R', 'RW', 'RWSTAUNER' ); +is( $mcpi->{authdir}, $auth_path, 'author directory' ); + +foreach $dist ( qw( + t/local/MYCPAN/authors/id/S/SS/SSORICHE/CPAN-Mini-Inject-0.01.tar.gz + t/local/MYCPAN/authors/id/R/RW/RWSTAUNER/Dist-Metadata-Test-MetaFile-2.2.tar.gz + t/local/MYCPAN/authors/id/R/RW/RWSTAUNER/Dist-Metadata-Test-MetaFile-Only.tar.gz +) ) { + ok( -r $dist, "Added module '$dist' is readable" ); +} + +foreach $line ( + 'CPAN::Mini::Inject 0.01 S/SS/SSORICHE/CPAN-Mini-Inject-0.01.tar.gz', + 'Dist::Metadata::Test::MetaFile::PM 2.0 R/RW/RWSTAUNER/Dist-Metadata-Test-MetaFile-2.2.tar.gz', + 'Dist::Metadata::Test::MetaFile 2.1 R/RW/RWSTAUNER/Dist-Metadata-Test-MetaFile-2.2.tar.gz', + 'Dist::Metadata::Test::MetaFile::DiffName 0.02 R/RW/RWSTAUNER/Dist-Metadata-Test-MetaFile-Only.tar.gz', +) { + ok( grep( /$line/, @{ $mcpi->{modulelist} } ), 'Module added to list' ) + or diag explain [$line, $mcpi->{modulelist}]; + + my $pack = ($line =~ /^(\S+)/)[0]; + is( grep( /^$pack\s+/, @{ $mcpi->{modulelist} } ), + 1, 'Module added to list just once' ); +} + +is_deeply( + [$mcpi->added_modules], + [ + { file => 'CPAN-Mini-Inject-0.01.tar.gz', authorid => 'SSORICHE', modules => {'CPAN::Mini::Inject' => '0.01'} }, + { file => 'Dist-Metadata-Test-MetaFile-2.2.tar.gz', authorid => 'RWSTAUNER', + modules => { 'Dist::Metadata::Test::MetaFile::PM' => '2.0', 'Dist::Metadata::Test::MetaFile' => '2.1' } }, + # added twice (bug in usage not in reporting) + { file => 'Dist-Metadata-Test-MetaFile-2.2.tar.gz', authorid => 'RWSTAUNER', + modules => { 'Dist::Metadata::Test::MetaFile::PM' => '2.0', 'Dist::Metadata::Test::MetaFile' => '2.1' } }, + { file => 'Dist-Metadata-Test-MetaFile-Only.tar.gz', authorid => 'RWSTAUNER', + modules => {'Dist::Metadata::Test::MetaFile::DiffName' => '0.02'} }, + ], + 'info for added modules' +); + +rmtree( 't/local/MYCPAN', 0, 1 ); |