# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl Pod-DocBook.t'
use strict;
use warnings;
use Test;
BEGIN { plan tests => 18 };
use Pod::DocBook;
ok 1;
#-----------------------------------------------------------------------
# test translation
#-----------------------------------------------------------------------
my @samples = qw(head paragraphs indent lists docbook table formatting_codes
e_command e_nested_fc e_unknown_fc e_empty_l e_escape
e_item e_mismatched_end e_no_end e_colspec);
foreach my $name (@samples) {
my $parser = Pod::DocBook->new (doctype => 'section',
title => "$name.pod",
fix_double_quotes => 1,
header => 1,
spaces => 2);
$parser->parse_from_file ("t/$name.pod", "t/test-$name.out");
ok (check ("t/$name.sgml", "t/test-$name.out"), 1,
"t/test-$name.out differs from t/$name.sgml") &&
unlink "t/test-$name.out";
}
#-----------------------------------------------------------------------
# test header option
#-----------------------------------------------------------------------
Pod::DocBook->new (doctype => 'section',
title => "no_header.pod",
fix_double_quotes => 1,
header => 0,
spaces => 2)
->parse_from_file ("t/no_header.pod", "t/test-no_header.out");
ok (check ("t/no_header.sgml", "t/test-no_header.out"), 1,
"t/test-no_header.out differs from t/no_header.sgml") &&
unlink "t/test-no_header.out";
sub check
{
my ($file1, $file2) = @_;
my (@file1, @file2);
{
open my $fh1, $file1 or die "couldn't open $file1: $!\n";
open my $fh2, $file2 or die "couldn't open $file2: $!\n";
# omit the module comment, because the local system's
# modules may differ from the author's
while (<$fh1>) {
push @file1, $_ unless /^<!--/ .. /^-->/;
}
while (<$fh2>) {
push @file2, $_ unless /^<!--/ .. /^-->/;
}
}
# only files beginning with `e_' should have errors
return 0 if $file2 !~ m!^t/test-e_! && grep /POD ERRORS/, @file2;
# if one of the "good" sample files has an error, it's a problem
# with the module distribution
die "\n*** $file1 is bad in the distro--please contact the author ***\n"
if $file1 !~ m!^t/e_! && grep /POD ERRORS/, @file1;
return 0 if @file1 != @file2;
for (@file1) { return 0 if $_ ne shift @file2 };
return 1;
}