Commit | Line | Data |
d44282b9 |
1 | #!perl |
2 | use strict; |
3 | BEGIN { |
4 | chdir 't' if -d 't'; |
5 | @INC = '../lib'; |
6 | } |
7 | |
8 | use File::Basename; |
9 | use File::Spec; |
10 | use Test::More; |
11 | plan tests => 8; |
12 | |
13 | use_ok( 'Pod::Usage' ); |
14 | |
15 | # Test verbose level 0 |
16 | my $vbl_0 = << 'EOMSG'; |
17 | Usage: |
18 | The SYNOPSIS section is displayed with -verbose >= 0. |
19 | |
20 | EOMSG |
21 | my $fake_out = tie *FAKEOUT, 'CatchOut'; |
22 | pod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT }); |
23 | is( $$fake_out, $vbl_0, 'Verbose level 0' ); |
24 | |
25 | my $msg = "Prefix message for pod2usage()"; |
26 | $$fake_out = ''; |
27 | pod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT, |
28 | -message => $msg }); |
29 | is( $$fake_out, "$msg\n$vbl_0", '-message parameter' ); |
30 | |
31 | SKIP: { |
32 | my( $file, $path ) = fileparse( $0 ); |
33 | skip( 'File in current directory', 2 ) if -e $file; |
34 | $$fake_out = ''; |
35 | eval { |
36 | pod2usage({ -verbose => 0, -exit => 'noexit', |
37 | -output => \*FAKEOUT, -input => $file }); |
38 | }; |
39 | like( $@, qr/^Can't open $file for reading:/, |
40 | 'File not found without -pathlist' ); |
41 | |
42 | eval { |
43 | pod2usage({ -verbose => 0, -exit => 'noexit', |
44 | -output => \*FAKEOUT, -input => $file, |
45 | -pathlist => $path }); |
46 | }; |
47 | is( $$fake_out, $vbl_0, '-pathlist parameter' ); |
48 | } |
49 | |
50 | { # Test exit status from pod2usage() |
0cb07b6b |
51 | my $exit = ($^O eq 'VMS' ? 2 : 42); |
d44282b9 |
52 | my $dev_null = File::Spec->devnull; |
53 | my $args = join ", ", ( |
54 | "-verbose => 0", |
55 | "-exit => $exit", |
0cb07b6b |
56 | "-output => q{$dev_null}", |
57 | "-input => q{$0}", |
d44282b9 |
58 | ); |
0cb07b6b |
59 | my $cq = (($^O eq 'MSWin32' |
60 | || $^O eq 'NetWare' |
61 | || $^O eq 'VMS') ? '"' |
2c05888b |
62 | : ""); |
0cb07b6b |
63 | my @params = ( "${cq}-I../lib$cq", "${cq}-MPod::Usage$cq", '-e' ); |
64 | my $prg = qq[${cq}pod2usage({ $args })$cq]; |
65 | my @cmd = ( $^X, @params, $prg ); |
d44282b9 |
66 | |
2c05888b |
67 | print "# cmd = @cmd\n"; |
68 | |
d44282b9 |
69 | is( system( @cmd ) >> 8, $exit, 'Exit status of pod2usage()' ); |
70 | } |
71 | |
72 | # Test verbose level 1 |
73 | my $vbl_1 = << 'EOMSG'; |
74 | Usage: |
75 | The SYNOPSIS section is displayed with -verbose >= 0. |
76 | |
77 | Options: |
78 | The OPTIONS section is displayed with -verbose >= 1. |
79 | |
80 | Arguments: |
81 | The ARGUMENTS section is displayed with -verbose >= 1. |
82 | |
83 | EOMSG |
84 | $$fake_out = ''; |
85 | pod2usage( { -verbose => 1, -exit => 'noexit', -output => \*FAKEOUT } ); |
86 | is( $$fake_out, $vbl_1, 'Verbose level 1' ); |
87 | |
88 | # Test verbose level 2 |
89 | $$fake_out = ''; |
90 | require Pod::Text; # Pod::Usage->isa( 'Pod::Text' ) |
91 | |
92 | ( my $p2tp = new Pod::Text )->parse_from_file( $0, \*FAKEOUT ); |
93 | my $pod2text = $$fake_out; |
94 | |
95 | $$fake_out = ''; |
96 | pod2usage( { -verbose => 2, -exit => 'noexit', -output => \*FAKEOUT } ); |
97 | my $pod2usage = $$fake_out; |
98 | |
99 | is( $pod2usage, $pod2text, 'Verbose level >= 2 eq pod2text' ); |
100 | |
101 | |
102 | package CatchOut; |
103 | sub TIEHANDLE { bless \( my $self ), shift } |
104 | sub PRINT { my $self = shift; $$self .= $_[0] } |
105 | |
106 | __END__ |
107 | |
108 | =head1 NAME |
109 | |
110 | Usage.t - Tests for Pod::Usage |
111 | |
112 | =head1 SYNOPSIS |
113 | |
114 | The B<SYNOPSIS> section is displayed with -verbose >= 0. |
115 | |
116 | =head1 DESCRIPTION |
117 | |
118 | Testing Pod::Usage. This section is not displayed with -verbose < 2. |
119 | |
120 | =head1 OPTIONS |
121 | |
122 | The B<OPTIONS> section is displayed with -verbose >= 1. |
123 | |
124 | =head1 ARGUMENTS |
125 | |
126 | The B<ARGUMENTS> section is displayed with -verbose >= 1. |
127 | |
128 | =head1 AUTHOR |
129 | |
130 | 20020105 Abe Timmerman <abe@ztreet.demon.nl> |
131 | |
132 | =cut |