This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #61520] Segfault in debugger with tr// and UTF8
[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" unless $^O eq 'MacOS';
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     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
62 use Test::More tests => 7;
63
64 eval 'use blib;';
65 ok( $@ =~ /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
76 is( @INC, 3, '@INC now has 3 elements' );
77 is( $INC[2],    '../lib',       'blib added to the front of @INC' );
78
79 if ($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 }
85 elsif ($^O ne 'MacOS')
86 {
87     $blib_arch = File::Spec->catdir("blib","arch");
88     $blib_lib  = File::Spec->catdir("blib","lib");
89 }
90
91
92 ok( grep(m|\Q$blib_lib\E$|, @INC[0,1])  == 1,     "  $blib_lib in \@INC");
93 ok( grep(m|\Q$blib_arch\E$|, @INC[0,1]) == 1,     "  $blib_arch in \@INC");
94
95 END { _cleanup( @blib_dirs ); }