extra code in pp_concat, Take 2
[p5sagit/p5-mst-13.2.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 sub _cleanup {
13     rmdir foreach reverse (@_);
14     unlink "stderr" unless $^O eq 'MacOS';
15 }
16
17 sub _mkdirs {
18     for my $dir (@_) {
19         next if -d $dir;
20         mkdir $dir or die "Can't mkdir $dir: $!" if ! -d $dir;
21     }
22 }
23     
24
25 BEGIN {
26     if ($^O eq 'MacOS')
27     {
28         $MacPerl::Architecture = $MacPerl::Architecture; # shhhhh
29         $blib = ":blib:";
30         $blib_lib = ":blib:lib:";
31         $blib_arch = ":blib:lib:$MacPerl::Architecture:";
32         @blib_dirs = ($blib, $blib_lib, $blib_arch); # order
33     }
34     else
35     {
36         $blib = "blib";
37         $blib_arch = "blib/arch";
38         $blib_lib = "blib/lib";
39         @blib_dirs = ($blib, $blib_arch, $blib_lib);
40     }
41     _cleanup( @blib_dirs );
42 }
43
44 use Test::More tests => 7;
45
46 eval 'use blib;';
47 ok( $@ =~ /Cannot find blib/, 'Fails if blib directory not found' );
48
49 _mkdirs( @blib_dirs );
50
51 {
52     my $warnings = '';
53     local $SIG{__WARN__} = sub { $warnings = join '', @_ };
54     use_ok('blib');
55     is( $warnings, '',  'use blib is nice and quiet' );
56 }
57
58 is( @INC, 3, '@INC now has 3 elements' );
59 is( $INC[2],    '../lib',       'blib added to the front of @INC' );
60
61 if ($^O eq 'VMS') {
62     # Unix syntax is accepted going in but it's not what comes out
63     # So we don't use catdir above
64     $blib_arch = 'blib.arch]';
65     $blib_lib = 'blib.lib]';
66 }
67 elsif ($^O ne 'MacOS')
68 {
69     $blib_arch = File::Spec->catdir("blib","arch");
70     $blib_lib  = File::Spec->catdir("blib","lib");
71 }
72
73
74 ok( grep(m|\Q$blib_lib\E$|, @INC[0,1])  == 1,     "  $blib_lib in \@INC");
75 ok( grep(m|\Q$blib_arch\E$|, @INC[0,1]) == 1,     "  $blib_arch in \@INC");
76
77 END { _cleanup( @blib_dirs ); }