summaryrefslogtreecommitdiff
path: root/lib/ExtUtils/t/Manifest.t
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ExtUtils/t/Manifest.t')
-rw-r--r--lib/ExtUtils/t/Manifest.t90
1 files changed, 55 insertions, 35 deletions
diff --git a/lib/ExtUtils/t/Manifest.t b/lib/ExtUtils/t/Manifest.t
index a0e84e0fc4..4929c43e0e 100644
--- a/lib/ExtUtils/t/Manifest.t
+++ b/lib/ExtUtils/t/Manifest.t
@@ -1,15 +1,20 @@
-#!/usr/bin/perl
+#!/usr/bin/perl -w
BEGIN {
if( $ENV{PERL_CORE} ) {
chdir 't' if -d 't';
unshift @INC, '../lib';
}
+ else {
+ unshift @INC, 't/lib';
+ }
}
chdir 't';
+use strict;
+
# these files help the test run
-use Test::More tests => 31;
+use Test::More tests => 32;
use Cwd;
# these files are needed for the module itself
@@ -18,13 +23,14 @@ use File::Path;
use Carp::Heavy;
# keep track of everything added so it can all be deleted
-my @files;
+my %files;
sub add_file {
my ($file, $data) = @_;
$data ||= 'foo';
+ unlink $file; # or else we'll get multiple versions on VMS
open( my $T, '>', $file) or return;
print $T $data;
- push @files, $file;
+ ++$files{$file};
}
sub read_manifest {
@@ -44,8 +50,11 @@ sub remove_dir {
}
# use module, import functions
-BEGIN { use_ok( 'ExtUtils::Manifest',
- qw( mkmanifest manicheck filecheck fullcheck maniread manicopy) ); }
+BEGIN {
+ use_ok( 'ExtUtils::Manifest',
+ qw( mkmanifest manicheck filecheck fullcheck
+ maniread manicopy skipcheck ) );
+}
my $cwd = Cwd::getcwd();
@@ -59,9 +68,10 @@ ok( add_file('foo'), 'add a temporary file' );
# there shouldn't be a MANIFEST there
my ($res, $warn) = catch_warning( \&mkmanifest );
# Canonize the order.
-$warn = join("", map { "$_|" } sort { lc $a cmp lc $b } split /\r?\n/, $warn);
+$warn = join("", map { "$_|" }
+ sort { lc($a) cmp lc($b) } split /\r?\n/, $warn);
is( $warn, "Added to MANIFEST: foo|Added to MANIFEST: MANIFEST|",
- "mkmanifest() displayed it's additions" );
+ "mkmanifest() displayed its additions" );
# and now you see it
ok( -e 'MANIFEST', 'create MANIFEST file' );
@@ -81,45 +91,49 @@ like( $warn, qr/^Not in MANIFEST: bar/, 'warning that bar has been added' );
is( $res, 'bar', 'bar reported as new' );
# now quiet the warning that bar was added and test again
-{ package ExtUtils::Manifest; use vars qw($Quiet); $Quiet = 1; }
-($res, $warn) = catch_warning( \&ExtUtils::Manifest::skipcheck );
-cmp_ok( $warn, ,'eq', '', 'disabled warnings' );
+($res, $warn) = do { local $ExtUtils::Manifest::Quiet = 1;
+ catch_warning( \&skipcheck )
+ };
+cmp_ok( $warn, 'eq', '', 'disabled warnings' );
-# add a skip file with a rule to skip itself
+# add a skip file with a rule to skip itself (and the nonexistent glob '*baz*')
add_file( 'MANIFEST.SKIP', "baz\n.SKIP" );
# this'll skip the new file
-($res, $warn) = catch_warning( \&ExtUtils::Manifest::skipcheck );
-like( $warn, qr/^Skipping MANIFEST\.SKIP/, 'got skipping warning' );
+($res, $warn) = catch_warning( \&skipcheck );
+like( $warn, qr/^Skipping MANIFEST\.SKIP/i, 'got skipping warning' );
# I'm not sure why this should be... shouldn't $missing be the only one?
my ($found, $missing );
catch_warning( sub {
- ( $found, $missing ) = ExtUtils::Manifest::skipcheck()
+ ( $found, $missing ) = skipcheck()
});
# nothing new should be found, bar should be skipped
is( @$found, 0, 'no output here' );
is( join( ' ', @$missing ), 'bar', 'listed skipped files' );
-is( join(' ', filecheck() ), 'bar', 'listing skipped with filecheck()' );
+{
+ local $ExtUtils::Manifest::Quiet = 1;
+ is( join(' ', filecheck() ), 'bar', 'listing skipped with filecheck()' );
+}
# add a subdirectory and a file there that should be found
ok( mkdir( 'moretest', 0777 ), 'created moretest directory' );
-my $quux = File::Spec->catfile( 'moretest', 'quux' );
-$quux =~ s#\\#/#g;
-$quux = VMS::Filespec::unixify($quux) if $^O eq 'VMS';
-add_file( $quux, 'quux' );
-ok( exists( ExtUtils::Manifest::manifind()->{$quux} ), "manifind found $quux" );
+add_file( File::Spec->catfile('moretest', 'quux'), 'quux' );
+ok( exists( ExtUtils::Manifest::manifind()->{'moretest/quux'} ),
+ "manifind found moretest/quux" );
# only MANIFEST and foo are in the manifest
my $files = maniread();
is( keys %$files, 2, 'two files found' );
-is( join(' ', sort { lc($a) cmp lc($b) } keys %$files), 'foo MANIFEST', 'both files found' );
+is( join(' ', sort { lc($a) cmp lc($b) } keys %$files), 'foo MANIFEST',
+ 'both files found' );
# poison the manifest, and add a comment that should be reported
add_file( 'MANIFEST', 'none #none' );
-is( ExtUtils::Manifest::maniread()->{none}, '#none', 'maniread found comment' );
+is( ExtUtils::Manifest::maniread()->{none}, '#none',
+ 'maniread found comment' );
ok( mkdir( 'copy', 0777 ), 'made copy directory' );
@@ -127,30 +141,36 @@ $files = maniread();
eval { (undef, $warn) = catch_warning( sub {
manicopy( $files, 'copy', 'cp' ) })
};
+like( $@, qr/^Can't read none: /, 'carped about none' );
# a newline comes through, so get rid of it
chomp($warn);
# the copy should have given one warning and one error
-is($warn, 'Skipping MANIFEST.SKIP', 'warned about MANIFEST.SKIP' );
-like( $@, qr/^Can't read none: /,
- 'carped about none' );
+like($warn, qr/^Skipping MANIFEST.SKIP/i, 'warned about MANIFEST.SKIP' );
# tell ExtUtils::Manifest to use a different file
-{ package ExtUtils::Manifest;
- use vars qw($MANIFEST);
- $MANIFEST = 'albatross';
+{
+ local $ExtUtils::Manifest::MANIFEST = 'albatross';
+ ($res, $warn) = catch_warning( \&mkmanifest );
+ like( $warn, qr/Added to albatross: /, 'using a new manifest file' );
+
+ # add the new file to the list of files to be deleted
+ $files{'albatross'}++;
}
-($res, $warn) = catch_warning( \&mkmanifest );
-like( $warn, qr/Added to albatross: /, 'using a new manifest file' );
-# add the new file to the list of files to be deleted
-push @files, 'albatross';
+# Make sure MANIFEST.SKIP is using complete relative paths
+add_file( 'MANIFEST.SKIP' => "^moretest/q\n" );
+
+# This'll skip moretest/quux
+($res, $warn) = catch_warning( \&skipcheck );
+like( $warn, qr{^Skipping moretest/quux}i, 'got skipping warning again' );
+
END {
- # the arrays are evaluated in scalar context
- is( unlink( @files ), @files, 'remove all added files' );
+ # the args are evaluated in scalar context
+ is( unlink( keys %files ), keys %files, 'remove all added files' );
remove_dir( 'moretest', 'copy' );
# now get rid of the parent directory