#!perl
BEGIN {
chdir
't'
if
-d
't'
;
@INC
=
'../lib'
;
}
plan
tests
=> 8;
use_ok(
'Pod::Usage'
);
my
$vbl_0
= <<
'EOMSG'
;
Usage:
The SYNOPSIS section is displayed
with
-verbose >= 0.
EOMSG
my
$fake_out
=
tie
*FAKEOUT
,
'CatchOut'
;
pod2usage({
-verbose
=> 0,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
});
is(
$$fake_out
,
$vbl_0
,
'Verbose level 0'
);
my
$msg
=
"Prefix message for pod2usage()"
;
$$fake_out
=
''
;
pod2usage({
-verbose
=> 0,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
,
-message
=>
$msg
});
is(
$$fake_out
,
"$msg\n$vbl_0"
,
'-message parameter'
);
SKIP: {
my
(
$file
,
$path
) = fileparse( $0 );
skip(
'File in current directory'
, 2 )
if
-e
$file
;
$$fake_out
=
''
;
eval
{
pod2usage({
-verbose
=> 0,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
,
-input
=>
$file
});
};
like( $@,
qr/^Can't open $file/
,
'File not found without -pathlist'
);
eval
{
pod2usage({
-verbose
=> 0,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
,
-input
=>
$file
,
-pathlist
=>
$path
});
};
is(
$$fake_out
,
$vbl_0
,
'-pathlist parameter'
);
}
{
my
$exit
= ($^O eq
'VMS'
? 2 : 42);
my
$dev_null
= File::Spec->devnull;
my
$args
=
join
", "
, (
"-verbose => 0"
,
"-exit => $exit"
,
"-output => q{$dev_null}"
,
"-input => q{$0}"
,
);
my
$cq
= (($^O eq
'MSWin32'
|| $^O eq
'NetWare'
|| $^O eq
'VMS'
) ?
'"'
:
""
);
my
@params
= (
"${cq}-I../lib$cq"
,
"${cq}-MPod::Usage$cq"
,
'-e'
);
my
$prg
=
qq[${cq}pod2usage({ $args })$cq]
;
my
@cmd
= ( $^X,
@params
,
$prg
);
print
"# cmd = @cmd\n"
;
is(
system
(
@cmd
) >> 8,
$exit
,
'Exit status of pod2usage()'
);
}
my
$vbl_1
= <<
'EOMSG'
;
Usage:
The SYNOPSIS section is displayed
with
-verbose >= 0.
Options:
The OPTIONS section is displayed
with
-verbose >= 1.
Arguments:
The ARGUMENTS section is displayed
with
-verbose >= 1.
EOMSG
$$fake_out
=
''
;
pod2usage( {
-verbose
=> 1,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
} );
is(
$$fake_out
,
$vbl_1
,
'Verbose level 1'
);
$$fake_out
=
''
;
(
my
$p2tp
= new Pod::Text )->parse_from_file( $0, \
*FAKEOUT
);
my
$pod2text
=
$$fake_out
;
$$fake_out
=
''
;
pod2usage( {
-verbose
=> 2,
-exit
=>
'noexit'
,
-output
=> \
*FAKEOUT
} );
my
$pod2usage
=
$$fake_out
;
is(
$pod2usage
,
$pod2text
,
'Verbose level >= 2 eq pod2text'
);
sub
TIEHANDLE {
bless
\(
my
$self
),
shift
}
sub
PRINT {
my
$self
=
shift
;
$$self
.=
$_
[0] }