diff options
Diffstat (limited to 'cpan/podlators/t/basic.t')
-rw-r--r-- | cpan/podlators/t/basic.t | 125 |
1 files changed, 57 insertions, 68 deletions
diff --git a/cpan/podlators/t/basic.t b/cpan/podlators/t/basic.t index 603d108574..eb94ef22a3 100644 --- a/cpan/podlators/t/basic.t +++ b/cpan/podlators/t/basic.t @@ -2,7 +2,7 @@ # # basic.t -- Basic tests for podlators. # -# Copyright 2001, 2002, 2004, 2006 by Russ Allbery <rra@stanford.edu> +# Copyright 2001, 2002, 2004, 2006, 2009 by Russ Allbery <rra@stanford.edu> # # This program is free software; you may redistribute it and/or modify it # under the same terms as Perl itself. @@ -11,22 +11,21 @@ BEGIN { chdir 't' if -d 't'; if ($ENV{PERL_CORE}) { @INC = '../lib'; - } else { - unshift (@INC, '../blib/lib'); } unshift (@INC, '../blib/lib'); $| = 1; - print "1..11\n"; } -END { - print "not ok 1\n" unless $loaded; -} +use strict; -use Pod::Man; -use Pod::Text; -use Pod::Text::Overstrike; -use Pod::Text::Termcap; +use Test::More tests => 15; + +BEGIN { + use_ok ('Pod::Man'); + use_ok ('Pod::Text'); + use_ok ('Pod::Text::Overstrike'); + use_ok ('Pod::Text::Termcap'); +} # Find the path to the test source files. This requires some fiddling when # these tests are run as part of Perl core. @@ -42,9 +41,6 @@ sub source_path { } } -$loaded = 1; -print "ok 1\n"; - # Hard-code a few values to try to get reproducible results. $ENV{COLUMNS} = 80; $ENV{TERM} = 'xterm'; @@ -59,69 +55,62 @@ my %translators = ('Pod::Man' => 'man', 'Pod::Text::Termcap' => 'cap'); # Set default options to match those of pod2man and pod2text. -%options = (sentence => 0); +our %options = (sentence => 0); -my $n = 2; -for (sort keys %translators) { - if ($_ eq 'Pod::Text::Color') { - eval { require Term::ANSIColor }; - if ($@) { - print "ok $n # skip\n"; - $n++; - print "ok $n # skip\n"; - $n++; - next; +for my $module (sort keys %translators) { + SKIP: { + if ($module eq 'Pod::Text::Color') { + eval { require Term::ANSIColor }; + skip 'Term::ANSIColor not found', 3 if $@; + require_ok ('Pod::Text::Color'); } - require Pod::Text::Color; - } - my $parser = $_->new (%options); - print (($parser && ref ($parser) eq $_) ? "ok $n\n" : "not ok $n\n"); - $n++; + my $parser = $module->new (%options); + isa_ok ($parser, $module, 'Parser object'); - # For Pod::Man, strip out the autogenerated header up to the .TH title - # line. That means that we don't check those things; oh well. The header - # changes with each version change or touch of the input file. - open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n"; - $parser->parse_from_file (source_path ('basic.pod'), \*OUT); - close OUT; - if ($_ eq 'Pod::Man') { - open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n"; - open (OUTPUT, "> out.$translators{$_}") - or die "Cannot create out.$translators{$_}: $!\n"; - local $_; - while (<TMP>) { last if /^\.nh/ } - print OUTPUT while <TMP>; - close OUTPUT; - close TMP; - unlink 'out.tmp'; - } else { - rename ('out.tmp', "out.$translators{$_}") - or die "Cannot rename out.tmp: $!\n"; - } - { - local $/; - open (MASTER, source_path ("basic.$translators{$_}")) - or die "Cannot open basic.$translators{$_}: $!\n"; - open (OUTPUT, "out.$translators{$_}") - or die "Cannot open out.$translators{$_}: $!\n"; - my $master = <MASTER>; - my $output = <OUTPUT>; - close MASTER; - close OUTPUT; + # For Pod::Man, strip out the autogenerated header up to the .TH title + # line. That means that we don't check those things; oh well. The + # header changes with each version change or touch of the input file. + open (OUT, '> out.tmp') or die "Cannot create out.tmp: $!\n"; + $parser->parse_from_file (source_path ('basic.pod'), \*OUT); + close OUT; + if ($module eq 'Pod::Man') { + open (TMP, 'out.tmp') or die "Cannot open out.tmp: $!\n"; + open (OUTPUT, "> out.$translators{$module}") + or die "Cannot create out.$translators{$module}: $!\n"; + local $_; + while (<TMP>) { last if /^\.nh/ } + print OUTPUT while <TMP>; + close OUTPUT; + close TMP; + 1 while unlink 'out.tmp'; + } else { + rename ('out.tmp', "out.$translators{$module}") + or die "Cannot rename out.tmp: $!\n"; + } + + # Slurp the output and expected output and compare them. + my ($master, $output); + { + local $/; + open (MASTER, source_path ("basic.$translators{$module}")) + or die "Cannot open basic.$translators{$module}: $!\n"; + open (OUTPUT, "out.$translators{$module}") + or die "Cannot open out.$translators{$module}: $!\n"; + $master = <MASTER>; + $output = <OUTPUT>; + close MASTER; + close OUTPUT; + } # OS/390 is EBCDIC, which uses a different character for ESC # apparently. Try to convert so that the test still works. - if ($^O eq 'os390' && $_ eq 'Pod::Text::Termcap') { + if ($^O eq 'os390' and $module eq 'Pod::Text::Termcap') { $output =~ tr/\033/\047/; } - - if ($master eq $output) { - print "ok $n\n"; - unlink "out.$translators{$_}"; + if (ok ($master eq $output, "$module output is correct")) { + 1 while unlink "out.$translators{$module}"; } else { - print "not ok $n\n"; - print "# Non-matching output left in out.$translators{$_}\n"; + diag ("Non-matching output left in out.$translators{$module}\n"); } } - $n++; } |