1N/A#!perl
1N/Ause strict;
1N/ABEGIN {
1N/A chdir 't' if -d 't';
1N/A @INC = '../lib';
1N/A}
1N/A
1N/Ause File::Basename;
1N/Ause File::Spec;
1N/Ause Test::More;
1N/Aplan tests => 8;
1N/A
1N/Ause_ok( 'Pod::Usage' );
1N/A
1N/A# Test verbose level 0
1N/Amy $vbl_0 = << 'EOMSG';
1N/AUsage:
1N/A The SYNOPSIS section is displayed with -verbose >= 0.
1N/A
1N/AEOMSG
1N/Amy $fake_out = tie *FAKEOUT, 'CatchOut';
1N/Apod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT });
1N/Ais( $$fake_out, $vbl_0, 'Verbose level 0' );
1N/A
1N/Amy $msg = "Prefix message for pod2usage()";
1N/A$$fake_out = '';
1N/Apod2usage({ -verbose => 0, -exit => 'noexit', -output => \*FAKEOUT,
1N/A -message => $msg });
1N/Ais( $$fake_out, "$msg\n$vbl_0", '-message parameter' );
1N/A
1N/ASKIP: {
1N/A my( $file, $path ) = fileparse( $0 );
1N/A skip( 'File in current directory', 2 ) if -e $file;
1N/A $$fake_out = '';
1N/A eval {
1N/A pod2usage({ -verbose => 0, -exit => 'noexit',
1N/A -output => \*FAKEOUT, -input => $file });
1N/A };
1N/A like( $@, qr/^Can't open $file for reading:/,
1N/A 'File not found without -pathlist' );
1N/A
1N/A eval {
1N/A pod2usage({ -verbose => 0, -exit => 'noexit',
1N/A -output => \*FAKEOUT, -input => $file,
1N/A -pathlist => $path });
1N/A };
1N/A is( $$fake_out, $vbl_0, '-pathlist parameter' );
1N/A}
1N/A
1N/ASKIP: { # Test exit status from pod2usage()
1N/A skip "Exit status broken on Mac OS", 1 if $^O eq 'MacOS';
1N/A my $exit = ($^O eq 'VMS' ? 2 : 42);
1N/A my $dev_null = File::Spec->devnull;
1N/A my $args = join ", ", (
1N/A "-verbose => 0",
1N/A "-exit => $exit",
1N/A "-output => q{$dev_null}",
1N/A "-input => q{$0}",
1N/A );
1N/A my $cq = (($^O eq 'MSWin32'
1N/A || $^O eq 'NetWare'
1N/A || $^O eq 'VMS') ? '"'
1N/A : "");
1N/A my @params = ( "${cq}-I../lib$cq", "${cq}-MPod::Usage$cq", '-e' );
1N/A my $prg = qq[${cq}pod2usage({ $args })$cq];
1N/A my @cmd = ( $^X, @params, $prg );
1N/A
1N/A print "# cmd = @cmd\n";
1N/A
1N/A is( system( @cmd ) >> 8, $exit, 'Exit status of pod2usage()' );
1N/A}
1N/A
1N/A# Test verbose level 1
1N/Amy $vbl_1 = << 'EOMSG';
1N/AUsage:
1N/A The SYNOPSIS section is displayed with -verbose >= 0.
1N/A
1N/AOptions:
1N/A The OPTIONS section is displayed with -verbose >= 1.
1N/A
1N/AArguments:
1N/A The ARGUMENTS section is displayed with -verbose >= 1.
1N/A
1N/AEOMSG
1N/A$$fake_out = '';
1N/Apod2usage( { -verbose => 1, -exit => 'noexit', -output => \*FAKEOUT } );
1N/Ais( $$fake_out, $vbl_1, 'Verbose level 1' );
1N/A
1N/A# Test verbose level 2
1N/A$$fake_out = '';
1N/Arequire Pod::Text; # Pod::Usage->isa( 'Pod::Text' )
1N/A
1N/A( my $p2tp = new Pod::Text )->parse_from_file( $0, \*FAKEOUT );
1N/Amy $pod2text = $$fake_out;
1N/A
1N/A$$fake_out = '';
1N/Apod2usage( { -verbose => 2, -exit => 'noexit', -output => \*FAKEOUT } );
1N/Amy $pod2usage = $$fake_out;
1N/A
1N/Ais( $pod2usage, $pod2text, 'Verbose level >= 2 eq pod2text' );
1N/A
1N/A
1N/Apackage CatchOut;
1N/Asub TIEHANDLE { bless \( my $self ), shift }
1N/Asub PRINT { my $self = shift; $$self .= $_[0] }
1N/A
1N/A__END__
1N/A
1N/A=head1 NAME
1N/A
1N/AUsage.t - Tests for Pod::Usage
1N/A
1N/A=head1 SYNOPSIS
1N/A
1N/AThe B<SYNOPSIS> section is displayed with -verbose >= 0.
1N/A
1N/A=head1 DESCRIPTION
1N/A
1N/ATesting Pod::Usage. This section is not displayed with -verbose < 2.
1N/A
1N/A=head1 OPTIONS
1N/A
1N/AThe B<OPTIONS> section is displayed with -verbose >= 1.
1N/A
1N/A=head1 ARGUMENTS
1N/A
1N/AThe B<ARGUMENTS> section is displayed with -verbose >= 1.
1N/A
1N/A=head1 AUTHOR
1N/A
1N/A20020105 Abe Timmerman <abe@ztreet.demon.nl>
1N/A
1N/A=cut
1N/A