### parse_module tests ###
-{ my @map = ( # author package version
- $Name => [ $mod->author->cpanid, $mod->package_name, $mod->version ],
- $mod => [ $mod->author->cpanid, $mod->package_name, $mod->version ],
- 'Foo-Bar-EU-NOXS'
- => [ $mod->author->cpanid, $mod->package_name, $mod->version ],
- 'Foo-Bar-EU-NOXS-0.01'
- => [ $mod->author->cpanid, $mod->package_name, '0.01' ],
- 'EUNOXS/Foo-Bar-EU-NOXS'
- => [ 'EUNOXS', $mod->package_name, $mod->version ],
- 'EUNOXS/Foo-Bar-EU-NOXS-0.01'
- => [ 'EUNOXS', $mod->package_name, '0.01' ],
- 'Foo-Bar-EU-NOXS-0.09'
- => [ $mod->author->cpanid, $mod->package_name, '0.09' ],
- 'MBXS/Foo-Bar-EU-NOXS-0.01'
- => [ 'MBXS', $mod->package_name, '0.01' ],
- 'EUNOXS/Foo-Bar-EU-NOXS-0.09'
- => [ 'EUNOXS', $mod->package_name, '0.09' ],
- 'EUNOXS/Foo-Bar-EU-NOXS-0.09.zip'
- => [ 'EUNOXS', $mod->package_name, '0.09' ],
- 'FROO/Flub-Flob-1.1.zip'
- => [ 'FROO', 'Flub-Flob', '1.1' ],
- 'G/GO/GOYALI/SMS_API_3_01.tar.gz'
- => [ 'GOYALI', 'SMS_API', '3_01' ],
- 'E/EY/EYCK/Net/Lite/Net-Lite-FTP-0.091'
- => [ 'EYCK', 'Net-Lite-FTP', '0.091' ],
- 'EYCK/Net/Lite/Net-Lite-FTP-0.091'
- => [ 'EYCK', 'Net-Lite-FTP', '0.091' ],
- 'M/MA/MAXDB/DBD-MaxDB-7.5.00.24a'
- => [ 'MAXDB', 'DBD-MaxDB', '7.5.00.24a' ],
- 'EUNOXS/perl5.005_03.tar.gz'
- => [ 'EUNOXS', 'perl', '5.005_03' ],
- 'FROO/Flub-Flob-v1.1.0.tbz'
- => [ 'FROO', 'Flub-Flob', 'v1.1.0' ],
- 'FROO/Flub-Flob-1.1_2.tbz'
- => [ 'FROO', 'Flub-Flob', '1.1_2' ],
- 'LDS/CGI.pm-3.27.tar.gz'
- => [ 'LDS', 'CGI', '3.27' ],
- 'FROO/Text-Tabs+Wrap-2006.1117.tar.gz'
- => [ 'FROO', 'Text-Tabs+Wrap', '2006.1117' ],
- 'JETTERO/Crypt-PBC-0.7.20.0-0.4.9',
- => [ 'JETTERO', 'Crypt-PBC', '0.7.20.0-0.4.9' ],
-
+{ my @map = (
+ $Name => [
+ $mod->author->cpanid, # author
+ $mod->package_name, # package name
+ $mod->version, # version
+ ],
+ $mod => [
+ $mod->author->cpanid,
+ $mod->package_name,
+ $mod->version,
+ ],
+ 'Foo-Bar-EU-NOXS' => [
+ $mod->author->cpanid,
+ $mod->package_name,
+ $mod->version,
+ ],
+ 'Foo-Bar-EU-NOXS-0.01' => [
+ $mod->author->cpanid,
+ $mod->package_name,
+ '0.01',
+ ],
+ 'EUNOXS/Foo-Bar-EU-NOXS' => [
+ 'EUNOXS',
+ $mod->package_name,
+ $mod->version,
+ ],
+ 'EUNOXS/Foo-Bar-EU-NOXS-0.01' => [
+ 'EUNOXS',
+ $mod->package_name,
+ '0.01',
+ ],
+ ### existing module, no extension given
+ ### this used to create a modobj with no package extension
+ 'EUNOXS/Foo-Bar-0.02' => [
+ 'EUNOXS',
+ 'Foo-Bar',
+ '0.02',
+ ],
+ 'Foo-Bar-EU-NOXS-0.09' => [
+ $mod->author->cpanid,
+ $mod->package_name,
+ '0.09',
+ ],
+ 'MBXS/Foo-Bar-EU-NOXS-0.01' => [
+ 'MBXS',
+ $mod->package_name,
+ '0.01',
+ ],
+ 'EUNOXS/Foo-Bar-EU-NOXS-0.09' => [
+ 'EUNOXS',
+ $mod->package_name,
+ '0.09',
+ ],
+ 'EUNOXS/Foo-Bar-EU-NOXS-0.09.zip' => [
+ 'EUNOXS',
+ $mod->package_name,
+ '0.09',
+ ],
+ 'FROO/Flub-Flob-1.1.zip' => [
+ 'FROO',
+ 'Flub-Flob',
+ '1.1',
+ ],
+ 'G/GO/GOYALI/SMS_API_3_01.tar.gz' => [
+ 'GOYALI',
+ 'SMS_API',
+ '3_01',
+ ],
+ 'E/EY/EYCK/Net/Lite/Net-Lite-FTP-0.091' => [
+ 'EYCK',
+ 'Net-Lite-FTP',
+ '0.091',
+ ],
+ 'EYCK/Net/Lite/Net-Lite-FTP-0.091' => [
+ 'EYCK',
+ 'Net-Lite-FTP',
+ '0.091',
+ ],
+ 'M/MA/MAXDB/DBD-MaxDB-7.5.0.24a' => [
+ 'MAXDB',
+ 'DBD-MaxDB',
+ '7.5.0.24a',
+ ],
+ 'EUNOXS/perl5.005_03.tar.gz' => [
+ 'EUNOXS',
+ 'perl',
+ '5.005_03',
+ ],
+ 'FROO/Flub-Flub-v1.1.0.tbz' => [
+ 'FROO',
+ 'Flub-Flub',
+ 'v1.1.0',
+ ],
+ 'FROO/Flub-Flub-1.1_2.tbz' => [
+ 'FROO',
+ 'Flub-Flub',
+ '1.1_2',
+ ],
+ 'LDS/CGI.pm-3.27.tar.gz' => [
+ 'LDS',
+ 'CGI',
+ '3.27',
+ ],
+ 'FROO/Text-Tabs+Wrap-2006.1117.tar.gz' => [
+ 'FROO',
+ 'Text-Tabs+Wrap',
+ '2006.1117',
+ ],
+ 'JETTERO/Crypt-PBC-0.7.20.0-0.4.9' => [
+ 'JETTERO',
+ 'Crypt-PBC',
+ '0.7.20.0-0.4.9' ,
+ ],
+ 'GRICHTER/HTML-Embperl-1.2.1.tar.gz' => [
+ 'GRICHTER',
+ 'HTML-Embperl',
+ '1.2.1',
+ ],
+ 'KANE/File-Fetch-0.15_03' => [
+ 'KANE',
+ 'File-Fetch',
+ '0.15_03',
+ ],
+ 'AUSCHUTZ/IO-Stty-.02.tar.gz' => [
+ 'AUSCHUTZ',
+ 'IO-Stty',
+ '.02',
+ ],
);
while ( my($guess, $attr) = splice @map, 0, 2 ) {
- my( $author, $pkg, $version ) = @$attr;
+ my( $author, $pkg_name, $version ) = @$attr;
ok( $guess, "Attempting to parse $guess" );
" Proper version found: $version" );
is( $obj->package_version, $version,
" Found in package_version as well" );
- is( $obj->package_name, $pkg,
- " Proper package found: $pkg" );
+ is( $obj->package_name, $pkg_name,
+ " Proper package_name found: $pkg_name" );
unlike( $obj->package_name, qr/\d/,
" No digits in package name" );
+ { my $ext = $obj->package_extension;
+ ok( $ext, " Has extension as well: $ext" );
+ }
+
like( $obj->author->cpanid, "/$author/i",
" Proper author found: $author");
like( $obj->path, "/$author/i",