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";
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    $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
51use Test::More;
52
53eval 'use blib;';
54ok( $@ =~ /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
65is( @INC, 3, '@INC now has 3 elements' );
66is( $INC[2],    '../lib',       'blib added to the front of @INC' );
67
68if ($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}
74else
75{
76    $blib_arch = File::Spec->catdir("blib","arch");
77    $blib_lib  = File::Spec->catdir("blib","lib");
78}
79
80
81ok( grep(m|\Q$blib_lib\E$|, @INC[0,1])  == 1,     "  $blib_lib in \@INC");
82ok( grep(m|\Q$blib_arch\E$|, @INC[0,1]) == 1,     "  $blib_arch in \@INC");
83
84done_testing();
85
86END { _cleanup( @blib_dirs ); }
87