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