| 1 | #!./perl -Tw |
| 2 | |
| 3 | BEGIN { |
| 4 | chdir 't' if -d 't'; |
| 5 | @INC = '../lib'; |
| 6 | } |
| 7 | |
| 8 | use strict; |
| 9 | use File::Spec; |
| 10 | my($blib, $blib_arch, $blib_lib, @blib_dirs); |
| 11 | |
| 12 | my $Is_VMS = $^O eq 'VMS'; |
| 13 | my $Is_VMS_mode = 0; |
| 14 | |
| 15 | if ($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 | |
| 30 | sub _cleanup { |
| 31 | rmdir foreach reverse (@_); |
| 32 | unlink "stderr"; |
| 33 | } |
| 34 | |
| 35 | sub _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 | |
| 43 | BEGIN { |
| 44 | $blib = "blib"; |
| 45 | $blib_arch = "blib/arch"; |
| 46 | $blib_lib = "blib/lib"; |
| 47 | @blib_dirs = ($blib, $blib_arch, $blib_lib); |
| 48 | _cleanup( @blib_dirs ); |
| 49 | } |
| 50 | |
| 51 | use Test::More tests => 7; |
| 52 | |
| 53 | eval 'use blib;'; |
| 54 | ok( $@ =~ /Cannot find blib/, 'Fails if blib directory not found' ); |
| 55 | |
| 56 | _mkdirs( @blib_dirs ); |
| 57 | |
| 58 | { |
| 59 | my $warnings = ''; |
| 60 | local $SIG{__WARN__} = sub { $warnings = join '', @_ }; |
| 61 | use_ok('blib'); |
| 62 | is( $warnings, '', 'use blib is nice and quiet' ); |
| 63 | } |
| 64 | |
| 65 | is( @INC, 3, '@INC now has 3 elements' ); |
| 66 | is( $INC[2], '../lib', 'blib added to the front of @INC' ); |
| 67 | |
| 68 | if ($Is_VMS_mode) { |
| 69 | # Unix syntax is accepted going in but it's not what comes out |
| 70 | # So we don't use catdir above |
| 71 | $blib_arch = 'blib.arch]'; |
| 72 | $blib_lib = 'blib.lib]'; |
| 73 | } |
| 74 | else |
| 75 | { |
| 76 | $blib_arch = File::Spec->catdir("blib","arch"); |
| 77 | $blib_lib = File::Spec->catdir("blib","lib"); |
| 78 | } |
| 79 | |
| 80 | |
| 81 | ok( grep(m|\Q$blib_lib\E$|, @INC[0,1]) == 1, " $blib_lib in \@INC"); |
| 82 | ok( grep(m|\Q$blib_arch\E$|, @INC[0,1]) == 1, " $blib_arch in \@INC"); |
| 83 | |
| 84 | END { _cleanup( @blib_dirs ); } |