blib.t revision 1.1.1.2
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