summaryrefslogtreecommitdiff
path: root/t/inject.t
diff options
context:
space:
mode:
Diffstat (limited to 't/inject.t')
-rwxr-xr-x[-rw-r--r--]t/inject.t77
1 files changed, 43 insertions, 34 deletions
diff --git a/t/inject.t b/t/inject.t
index 1e022ed..e8fb5ec 100644..100755
--- a/t/inject.t
+++ b/t/inject.t
@@ -1,26 +1,33 @@
-use Test::More tests => 11;
+use Test::More tests => 12;
+use Test::InDistDir;
use CPAN::Mini::Inject;
use File::Path;
use File::Copy;
use File::Basename;
use Compress::Zlib;
-rmtree( ['t/local/MYCPAN/modulelist'], 0, 1 );
+my $root = "t/local";
+my $modules = "$root/CPAN/modules";
+my $authors = "$root/CPAN/authors";
+my $mycpan = "$root/MYCPAN";
+my $mymodules = "$root/mymodules";
+
+rmtree( ["$mycpan/modulelist"], 0, 1 );
copy(
- 't/local/CPAN/modules/02packages.details.txt.gz.original',
- 't/local/CPAN/modules/02packages.details.txt.gz'
+ "$modules/02packages.details.txt.gz.original",
+ "$modules/02packages.details.txt.gz"
);
-chmod oct(666), 't/local/CPAN/modules/02packages.details.txt.gz';
-chmod oct(666), "t/local/CPAN/authors/01mailrc.txt.gz" if -f "t/local/CPAN/authors/01mailrc.txt.gz";
-rmtree( ['t/local/CPAN/authors'], 0, 1 );
-mkdir( 't/local/CPAN/authors' );
+chmod oct(666), "$modules/02packages.details.txt.gz";
+chmod oct(666), "$authors/01mailrc.txt.gz" if -f "$authors/01mailrc.txt.gz";
+rmtree( [$authors], 0, 1 );
+mkdir( $authors );
copy(
- 't/local/01mailrc.txt.gz.original',
- 't/local/CPAN/authors/01mailrc.txt.gz'
+ "$root/01mailrc.txt.gz.original",
+ "$authors/01mailrc.txt.gz"
);
-chmod oct(666), 't/local/CPAN/authors/01mailrc.txt.gz';
-mkdir( 't/local/MYCPAN' );
+chmod oct(666), "$authors/01mailrc.txt.gz";
+mkdir( $mycpan );
my $mcpi;
my $module = "S/SS/SSORICHE/CPAN-Mini-Inject-0.01.tar.gz";
@@ -33,44 +40,46 @@ $mcpi->loadcfg( 't/.mcpani/config' )->parsecfg->readlist->add(
module => 'CPAN::Mini::Inject',
authorid => 'SSORICHE',
version => '0.01',
- file => 't/local/mymodules/CPAN-Mini-Inject-0.01.tar.gz'
+ file => "$mymodules/CPAN-Mini-Inject-0.01.tar.gz"
)->add(
module => 'CPAN::Mini::Inject',
authorid => 'SSORICHE',
version => '0.02',
- file => 't/local/mymodules/CPAN-Mini-Inject-0.01.tar.gz'
+ file => "$mymodules/CPAN-Mini-Inject-0.01.tar.gz"
)->add(
module => 'CPAN::Mini',
authorid => 'RJBS',
version => '0.17',
- file => 't/local/mymodules/CPAN-Mini-0.17.tar.gz',
+ file => "$mymodules/CPAN-Mini-0.17.tar.gz",
)->writelist;
ok( $mcpi->inject, 'Copy modules' );
-ok( -e "t/local/CPAN/authors/id/$module", 'Module file exists' );
-ok( -e 't/local/CPAN/authors/id/S/SS/SSORICHE/CHECKSUMS',
- 'Checksum created' );
+ok( -e "$authors/id/$module", 'Module file exists' );
+my $checksum_file = "$authors/id/S/SS/SSORICHE/CHECKSUMS";
+ok( -e "$checksum_file", 'Checksum created' );
+
+open my $chk, '<', $checksum_file;
+my $checksum_text = join "", <$chk>;
+close $chk;
+unlike $checksum_text, qr{$authors/id}, "root path isn't leaked to checksums";
SKIP: {
- skip "Not a UNIX system", 3 if ( $^O =~ /^MSWin/ );
- is( ( stat( "t/local/CPAN/authors/id/$module" ) )[2] & 07777,
+ skip "Not a UNIX system", 3 if ( $^O =~ /^MSWin|^cygwin/ );
+ is( ( stat( "$authors/id/$module" ) )[2] & 07777,
0664, 'Module file mode set' );
is(
- ( stat( dirname( "t/local/CPAN/authors/id/$module" ) ) )[2] & 07777,
- 0775,
- 'Author directory mode set'
+ ( stat( dirname( "$authors/id/$module" ) ) )[2] & 07777,
+ 0775, 'Author directory mode set'
);
is(
- ( stat( 't/local/CPAN/authors/id/S/SS/SSORICHE/CHECKSUMS' ) )[2]
- & 07777,
- 0664,
- 'Checksum file mode set'
+ ( stat( "$checksum_file" ) )[2] & 07777,
+ 0664, 'Checksum file mode set'
);
}
my @goodfile = <DATA>;
ok( my $gzread
- = gzopen( 't/local/CPAN/modules/02packages.details.txt.gz', 'rb' ) );
+ = gzopen( "$modules/02packages.details.txt.gz", 'rb' ) );
my @packages;
my $package;
@@ -90,7 +99,7 @@ $gzread->gzclose;
is_deeply( \@goodfile, \@packages );
ok( my $gzauthread
- = gzopen( 't/local/CPAN/authors/01mailrc.txt.gz', 'rb' ) );
+ = gzopen( "$authors/01mailrc.txt.gz", 'rb' ) );
my $author;
my $author_was_injected = 0;
@@ -103,12 +112,12 @@ $gzauthread->gzclose;
ok( $author_was_injected, 'author injected into 01mailrc.txt.gz' );
ok( $author_was_injected == 1, 'author injected exactly 1 time' );
-unlink( 't/local/CPAN/authors/id/S/SS/SSORICHE/CHECKSUMS' );
-unlink( "t/local/CPAN/authors/id/$module" );
-unlink( 't/local/MYCPAN/modulelist' );
-unlink( 't/local/CPAN/modules/02packages.details.txt.gz' );
+unlink( "$checksum_file" );
+unlink( "$authors/id/$module" );
+unlink( "$mycpan/modulelist" );
+unlink( "$modules/02packages.details.txt.gz" );
-rmtree( [ 't/local/CPAN/authors', 't/local/MYCPAN' ], 0, 1 );
+rmtree( [ $authors, $mycpan ], 0, 1 );
__DATA__
File: 02packages.details.txt