1#!./perl -Tw 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 8use strict; 9use File::Spec; 10my($blib, $blib_arch, $blib_lib, @blib_dirs); 11 12my $Is_VMS = $^O eq 'VMS'; 13my $Is_VMS_mode = 0; 14 15if ($Is_VMS) { 16 require VMS::Filespec if $Is_VMS; 17 my $vms_unix_rpt; 18 19 $Is_VMS_mode = 1; 20 if (eval 'require VMS::Feature') { 21 $vms_unix_rpt = VMS::Feature::current("filename_unix_report"); 22 } else { 23 my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; 24 $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i; 25 } 26 $Is_VMS_mode = 0 if ($vms_unix_rpt); 27} 28 29 30sub _cleanup { 31 rmdir foreach reverse (@_); 32 unlink "stderr" unless $^O eq 'MacOS'; 33} 34 35sub _mkdirs { 36 for my $dir (@_) { 37 next if -d $dir; 38 mkdir $dir or die "Can't mkdir $dir: $!" if ! -d $dir; 39 } 40} 41 42 43BEGIN { 44 if ($^O eq 'MacOS') 45 { 46 $MacPerl::Architecture = $MacPerl::Architecture; # shhhhh 47 $blib = ":blib:"; 48 $blib_lib = ":blib:lib:"; 49 $blib_arch = ":blib:lib:$MacPerl::Architecture:"; 50 @blib_dirs = ($blib, $blib_lib, $blib_arch); # order 51 } 52 else 53 { 54 $blib = "blib"; 55 $blib_arch = "blib/arch"; 56 $blib_lib = "blib/lib"; 57 @blib_dirs = ($blib, $blib_arch, $blib_lib); 58 } 59 _cleanup( @blib_dirs ); 60} 61 62use Test::More tests => 7; 63 64eval 'use blib;'; 65ok( $@ =~ /Cannot find blib/, 'Fails if blib directory not found' ); 66 67_mkdirs( @blib_dirs ); 68 69{ 70 my $warnings = ''; 71 local $SIG{__WARN__} = sub { $warnings = join '', @_ }; 72 use_ok('blib'); 73 is( $warnings, '', 'use blib is nice and quiet' ); 74} 75 76is( @INC, 3, '@INC now has 3 elements' ); 77is( $INC[2], '../lib', 'blib added to the front of @INC' ); 78 79if ($Is_VMS_mode) { 80 # Unix syntax is accepted going in but it's not what comes out 81 # So we don't use catdir above 82 $blib_arch = 'blib.arch]'; 83 $blib_lib = 'blib.lib]'; 84} 85elsif ($^O ne 'MacOS') 86{ 87 $blib_arch = File::Spec->catdir("blib","arch"); 88 $blib_lib = File::Spec->catdir("blib","lib"); 89} 90 91 92ok( grep(m|\Q$blib_lib\E$|, @INC[0,1]) == 1, " $blib_lib in \@INC"); 93ok( grep(m|\Q$blib_arch\E$|, @INC[0,1]) == 1, " $blib_arch in \@INC"); 94 95END { _cleanup( @blib_dirs ); } 96