This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 9918f0bc5148
[perl5.git] / lib / Pod / t / Usage.t
CommitLineData
d44282b9
AT
1#!perl
2use strict;
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
7
8use File::Basename;
9use File::Spec;
10use Test::More;
11plan tests => 8;
12
13use_ok( 'Pod::Usage' );
14
15# Test verbose level 0
16my $vbl_0 = << 'EOMSG';
17Usage:
18 The SYNOPSIS section is displayed with -verbose >= 0.
19
20EOMSG
21my $fake_out = tie *FAKEOUT, 'CatchOut';
22pod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT });
23is( $$fake_out, $vbl_0, 'Verbose level 0' );
24
25my $msg = "Prefix message for pod2usage()";
26$$fake_out = '';
27pod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT,
28 -message => $msg });
29is( $$fake_out, "$msg\n$vbl_0", '-message parameter' );
30
31SKIP: {
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 };
7eb7d786 39 like( $@, qr/^Can't open $file/,
d44282b9
AT
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
70360898 50{ # Test exit status from pod2usage()
0cb07b6b 51 my $exit = ($^O eq 'VMS' ? 2 : 42);
d44282b9
AT
52 my $dev_null = File::Spec->devnull;
53 my $args = join ", ", (
54 "-verbose => 0",
55 "-exit => $exit",
0cb07b6b
CB
56 "-output => q{$dev_null}",
57 "-input => q{$0}",
d44282b9 58 );
0cb07b6b
CB
59 my $cq = (($^O eq 'MSWin32'
60 || $^O eq 'NetWare'
61 || $^O eq 'VMS') ? '"'
2c05888b 62 : "");
0cb07b6b
CB
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
JH
67 print "# cmd = @cmd\n";
68
d44282b9
AT
69 is( system( @cmd ) >> 8, $exit, 'Exit status of pod2usage()' );
70}
71
72# Test verbose level 1
73my $vbl_1 = << 'EOMSG';
74Usage:
75 The SYNOPSIS section is displayed with -verbose >= 0.
76
77Options:
78 The OPTIONS section is displayed with -verbose >= 1.
79
80Arguments:
81 The ARGUMENTS section is displayed with -verbose >= 1.
82
83EOMSG
84$$fake_out = '';
85pod2usage( { -verbose => 1, -exit => 'noexit', -output => \*FAKEOUT } );
86is( $$fake_out, $vbl_1, 'Verbose level 1' );
87
88# Test verbose level 2
89$$fake_out = '';
90require Pod::Text; # Pod::Usage->isa( 'Pod::Text' )
91
92( my $p2tp = new Pod::Text )->parse_from_file( $0, \*FAKEOUT );
93my $pod2text = $$fake_out;
94
95$$fake_out = '';
96pod2usage( { -verbose => 2, -exit => 'noexit', -output => \*FAKEOUT } );
97my $pod2usage = $$fake_out;
98
99is( $pod2usage, $pod2text, 'Verbose level >= 2 eq pod2text' );
100
101
102package CatchOut;
103sub TIEHANDLE { bless \( my $self ), shift }
104sub PRINT { my $self = shift; $$self .= $_[0] }
105
106__END__
107
108=head1 NAME
109
110Usage.t - Tests for Pod::Usage
111
112=head1 SYNOPSIS
113
114The B<SYNOPSIS> section is displayed with -verbose >= 0.
115
116=head1 DESCRIPTION
117
118Testing Pod::Usage. This section is not displayed with -verbose < 2.
119
120=head1 OPTIONS
121
122The B<OPTIONS> section is displayed with -verbose >= 1.
123
124=head1 ARGUMENTS
125
126The B<ARGUMENTS> section is displayed with -verbose >= 1.
127
128=head1 AUTHOR
129
13020020105 Abe Timmerman <abe@ztreet.demon.nl>
131
132=cut