summaryrefslogtreecommitdiff
path: root/ext/podlators/t/basic.t
diff options
context:
space:
mode:
Diffstat (limited to 'ext/podlators/t/basic.t')
-rw-r--r--ext/podlators/t/basic.t127
1 files changed, 127 insertions, 0 deletions
diff --git a/ext/podlators/t/basic.t b/ext/podlators/t/basic.t
new file mode 100644
index 0000000000..603d108574
--- /dev/null
+++ b/ext/podlators/t/basic.t
@@ -0,0 +1,127 @@
+#!/usr/bin/perl -w
+#
+# basic.t -- Basic tests for podlators.
+#
+# Copyright 2001, 2002, 2004, 2006 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.
+
+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 Pod::Man;
+use Pod::Text;
+use Pod::Text::Overstrike;
+use 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.
+sub source_path {
+ my $file = shift;
+ if ($ENV{PERL_CORE}) {
+ require File::Spec;
+ my $updir = File::Spec->updir;
+ my $dir = File::Spec->catdir ($updir, 'lib', 'Pod', 't');
+ return File::Spec->catfile ($dir, $file);
+ } else {
+ return $file;
+ }
+}
+
+$loaded = 1;
+print "ok 1\n";
+
+# Hard-code a few values to try to get reproducible results.
+$ENV{COLUMNS} = 80;
+$ENV{TERM} = 'xterm';
+$ENV{TERMCAP} = 'xterm:co=80:do=^J:md=\E[1m:us=\E[4m:me=\E[m';
+
+# Map of translators to file extensions to find the formatted output to
+# compare against.
+my %translators = ('Pod::Man' => 'man',
+ 'Pod::Text' => 'txt',
+ 'Pod::Text::Color' => 'clr',
+ 'Pod::Text::Overstrike' => 'ovr',
+ 'Pod::Text::Termcap' => 'cap');
+
+# Set default options to match those of pod2man and pod2text.
+%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;
+ }
+ require Pod::Text::Color;
+ }
+ my $parser = $_->new (%options);
+ print (($parser && ref ($parser) eq $_) ? "ok $n\n" : "not ok $n\n");
+ $n++;
+
+ # 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;
+
+ # 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') {
+ $output =~ tr/\033/\047/;
+ }
+
+ if ($master eq $output) {
+ print "ok $n\n";
+ unlink "out.$translators{$_}";
+ } else {
+ print "not ok $n\n";
+ print "# Non-matching output left in out.$translators{$_}\n";
+ }
+ }
+ $n++;
+}