This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Convert to use of Test::More. Boost test coverage.
[perl5.git] / lib / blib.t
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 ); }