#!/usr/bin/perl -w
BEGIN {
chdir
't'
if
-d
't'
;
if
(
$ENV
{PERL_CORE}) {
@INC
=
'../lib'
;
}
else
{
unshift
(
@INC
,
'../blib/lib'
);
}
unshift
(
@INC
,
'../blib/lib'
);
$| = 1;
print
"1..7\n"
;
}
END {
print
"not ok 1\n"
unless
$loaded
;
}
sub
stderr_save {
open
(OLDERR,
'>&STDERR'
) or
die
"Can't dup STDERR: $!\n"
;
open
(STDERR,
'> out.err'
) or
die
"Can't redirect STDERR: $!\n"
;
}
sub
stderr_restore {
close
STDERR;
open
(STDERR,
'>&OLDERR'
) or
die
"Can't dup STDERR: $!\n"
;
close
OLDERR;
}
$loaded
= 1;
print
"ok 1\n"
;
my
$n
= 2;
while
(<DATA>) {
my
%options
;
next
until
$_
eq
"###\n"
;
while
(<DATA>) {
last
if
$_
eq
"###\n"
;
my
(
$option
,
$value
) =
split
;
$options
{
$option
} =
$value
;
}
open
(TMP,
'> tmp.pod'
) or
die
"Cannot create tmp.pod: $!\n"
;
while
(<DATA>) {
last
if
$_
eq
"###\n"
;
print
TMP
$_
;
}
close
TMP;
my
$parser
= Pod::Man->new (
%options
) or
die
"Cannot create parser\n"
;
open
(OUT,
'> out.tmp'
) or
die
"Cannot create out.tmp: $!\n"
;
stderr_save;
$parser
->parse_from_file (
'tmp.pod'
, \
*OUT
);
stderr_restore;
close
OUT;
my
$accents
= 0;
open
(TMP,
'out.tmp'
) or
die
"Cannot open out.tmp: $!\n"
;
while
(<TMP>) {
last
if
/^\.nh/;
}
my
$output
;
{
local
$/;
$output
= <TMP>;
}
close
TMP;
unlink
(
'tmp.pod'
,
'out.tmp'
);
my
$expected
=
''
;
while
(<DATA>) {
last
if
$_
eq
"###\n"
;
$expected
.=
$_
;
}
if
(
$output
eq
$expected
) {
print
"ok $n\n"
;
}
else
{
print
"not ok $n\n"
;
print
"Expected\n========\n$expected\nOutput\n======\n$output\n"
;
}
$n
++;
open
(ERR,
'out.err'
) or
die
"Cannot open out.err: $!\n"
;
my
$errors
;
{
local
$/;
$errors
= <ERR>;
}
close
ERR;
unlink
(
'out.err'
);
$expected
=
''
;
while
(<DATA>) {
last
if
$_
eq
"###\n"
;
$expected
.=
$_
;
}
if
(
$errors
eq
$expected
) {
print
"ok $n\n"
;
}
else
{
print
"not ok $n\n"
;
print
"Expected errors:\n ${expected}Errors:\n $errors"
;
}
$n
++;
}