This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't use grep in scalar context
[perl5.git] / lib / autouse.t
index 0a2d680..d4ca15a 100644 (file)
@@ -3,10 +3,15 @@
 BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
+    require Config;
+    if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){
+       print "1..0 # Skip -- Perl configured without List::Util module\n";
+       exit 0;
+    }
 }
 
 use Test;
-BEGIN { plan tests => 10; }
+BEGIN { plan tests => 12; }
 
 BEGIN {
     require autouse;
@@ -39,19 +44,28 @@ use autouse 'Carp' => qw(carp croak);
     local $SIG{__WARN__} = sub { push @warning, @_ };
     carp "this carp was predeclared and autoused\n";
     ok( scalar @warning, 1 );
-    ok( $warning[0], "this carp was predeclared and autoused\n" );
+    ok( $warning[0], qr/^this carp was predeclared and autoused\n/ );
 
     eval { croak "It is but a scratch!" };
     ok( $@, qr/^It is but a scratch!/);
 }
 
 
-# Test that autouse's lazy module loading works.  We assume that nothing
-# involved in this test uses Text::Soundex, which is pretty safe.
-use autouse 'Text::Soundex' => qw(soundex);
+# Test that autouse's lazy module loading works.
+use autouse 'Errno' => qw(EPERM);
 
-my $mod_file = 'Text/Soundex.pm'; # just fine and portable for %INC
+my $mod_file = 'Errno.pm';   # just fine and portable for %INC
 ok( !exists $INC{$mod_file} );
-ok( soundex('Basset'), 'B230' );
+ok( EPERM ); # test if non-zero
 ok( exists $INC{$mod_file} );
 
+use autouse Env => "something";
+eval { something() };
+ok( $@, qr/^\Qautoused module Env has unique import() method/ );
+
+# Check that UNIVERSAL.pm doesn't interfere with modules that don't use
+# Exporter and have no import() of their own.
+require UNIVERSAL;
+autouse->import("Class::ISA" => 'self_and_super_versions');
+my %versions = self_and_super_versions("Class::ISA");
+ok( $versions{"Class::ISA"}, $Class::ISA::VERSION );