xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/lib/File/CheckTree.t (revision 0:68f95e015346)
1#!./perl -w
2
3BEGIN {
4    chdir 't' if -d 't';
5    @INC = '../lib';
6}
7
8use Test;
9
10BEGIN { plan tests => 6 }
11
12use strict;
13
14use File::CheckTree;
15use File::Spec;          # used to get absolute paths
16
17# We assume that we start from the perl "t" directory.
18# Will move up one level to make it easier to generate
19# reliable pathnames for testing File::CheckTree
20
21chdir(File::Spec->updir) or die "cannot change to parent of t/ directory: $!";
22
23
24#### TEST 1 -- No warnings ####
25# usings both relative and full paths, indented comments
26
27{
28    my ($num_warnings, $path_to_TEST);
29    $path_to_TEST = File::Spec->rel2abs('t/TEST');
30
31    my @warnings;
32    local $SIG{__WARN__} = sub { push @warnings, "@_" };
33
34    eval {
35        $num_warnings = validate qq{
36            lib  -d
37# comment, followed "blank" line (w/ whitespace):
38
39            # indented comment, followed blank line (w/o whitespace):
40
41            t/TEST -f
42            $path_to_TEST -e || warn
43        };
44    };
45
46    if ( !$@ && !@warnings && defined($num_warnings) && $num_warnings == 0 ) {
47        ok(1);
48    }
49    else {
50        ok(0);
51    }
52}
53
54
55#### TEST 2 -- One warning ####
56
57{
58    my ($num_warnings, @warnings);
59
60    local $SIG{__WARN__} = sub { push @warnings, "@_" };
61
62    eval {
63        $num_warnings = validate qq{
64            lib    -f
65            t/TEST -f
66        };
67    };
68
69    if ( !$@ && @warnings == 1
70             && $warnings[0] =~ /lib is not a plain file/
71             && defined($num_warnings)
72             && $num_warnings == 1 )
73    {
74        ok(1);
75    }
76    else {
77        ok(0);
78    }
79}
80
81
82#### TEST 3 -- Multiple warnings ####
83# including first warning only from a bundle of tests,
84# generic "|| warn", default "|| warn" and "|| warn '...' "
85
86{
87    my ($num_warnings, @warnings);
88
89    local $SIG{__WARN__} = sub { push @warnings, "@_" };
90
91    eval {
92        $num_warnings = validate q{
93            lib     -effd
94            t/TEST -f || die
95            t/TEST -d || warn
96            lib    -f || warn "my warning: $file\n"
97        };
98    };
99
100    if ( !$@ && @warnings == 3
101             && $warnings[0] =~ /lib is not a plain file/
102             && $warnings[1] =~ /t\/TEST is not a directory/
103             && $warnings[2] =~ /my warning: lib/
104             && defined($num_warnings)
105             && $num_warnings == 3 )
106    {
107        ok(1);
108    }
109    else {
110        ok(0);
111    }
112}
113
114
115#### TEST 4 -- cd directive ####
116# cd directive followed by relative paths, followed by full paths
117{
118    my ($num_warnings, @warnings, $path_to_libFile, $path_to_dist);
119    $path_to_libFile = File::Spec->rel2abs(File::Spec->catdir('lib','File'));
120    $path_to_dist    = File::Spec->rel2abs(File::Spec->curdir);
121
122    local $SIG{__WARN__} = sub { push @warnings, "@_" };
123
124    eval {
125        $num_warnings = validate qq{
126            lib                -d || die
127            $path_to_libFile   cd
128            Spec               -e
129            Spec               -f
130            $path_to_dist      cd
131            t/TEST             -ef
132            INSTALL            -d || warn
133            $path_to_libFile   -d || die
134        };
135    };
136
137    if ( !$@ && @warnings == 2
138             && $warnings[0] =~ /Spec is not a plain file/
139             && $warnings[1] =~ /INSTALL is not a directory/
140             && defined($num_warnings)
141             && $num_warnings == 2 )
142    {
143        ok(1);
144    }
145    else {
146        ok(0);
147    }
148}
149
150
151#### TEST 5 -- Exception ####
152# test with generic "|| die"
153{
154    my $num_warnings;
155
156    eval {
157        $num_warnings = validate q{
158            lib       -ef || die
159            t/TEST    -d
160        };
161    };
162
163    if ( $@ && $@ =~ /lib is not a plain file/
164            && not defined $num_warnings )
165    {
166        ok(1);
167    }
168    else {
169        ok(0);
170    }
171}
172
173
174#### TEST 6 -- Exception ####
175# test with "|| die 'my error message'"
176{
177    my $num_warnings;
178
179    eval {
180        $num_warnings = validate q{
181            lib       -ef || die "yadda $file yadda...\n"
182            t/TEST    -d
183        };
184    };
185
186    if ( $@ && $@ =~ /yadda lib yadda/
187            && not defined $num_warnings )
188    {
189        ok(1);
190    }
191    else {
192        ok(0);
193    }
194}
195