summaryrefslogtreecommitdiff
path: root/t/add-multiple.t
diff options
context:
space:
mode:
Diffstat (limited to 't/add-multiple.t')
-rw-r--r--t/add-multiple.t72
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 );