xref: /openbsd/gnu/usr.bin/perl/cpan/Pod-Simple/t/reinit.t (revision 8932bfb7)
1BEGIN {
2    chdir 't' if -d 't';
3    if($ENV{PERL_CORE}) {
4        @INC = '../lib';
5    }
6}
7
8use lib '../lib';
9
10use strict;
11use Test;
12BEGIN { plan tests => 5 };
13
14sub source_path {
15    my $file = shift;
16    if ($ENV{PERL_CORE}) {
17        require File::Spec;
18        my $updir = File::Spec->updir;
19        my $dir = File::Spec->catdir ($updir, 'lib', 'Pod', 'Simple', 't');
20        return File::Spec->catfile ($dir, $file);
21    } else {
22        return $file;
23    }
24}
25
26use Pod::Simple::Text;
27$Pod::Simple::Text::FREAKYMODE = 1;
28
29my $parser  = Pod::Simple::Text->new();
30
31foreach my $file (
32  "junk1.pod",
33  "junk2.pod",
34  "perlcyg.pod",
35  "perlfaq.pod",
36  "perlvar.pod",
37) {
38
39  unless(-e source_path($file)) {
40    ok 0;
41    print "# But $file doesn't exist!!\n";
42    next;
43  }
44
45    my $precooked = $file;
46    my $outstring;
47    my $compstring;
48    $precooked =~ s<\.pod><o.txt>s;
49    $parser->reinit;
50    $parser->output_string(\$outstring);
51    $parser->parse_file(source_path($file));
52
53    open(IN, $precooked) or die "Can't read-open $precooked: $!";
54    {
55      local $/;
56      $compstring = <IN>;
57    }
58    close(IN);
59
60    for ($outstring,$compstring) { s/\s+/ /g; s/^\s+//s; s/\s+$//s; }
61
62    if($outstring eq $compstring) {
63      ok 1;
64      next;
65    } elsif( do{
66      for ($outstring, $compstring) { tr/ //d; };
67      $outstring eq $compstring;
68    }){
69      print "# Differ only in whitespace.\n";
70      ok 1;
71      next;
72    } else {
73
74      my $x = $outstring ^ $compstring;
75      $x =~ m/^(\x00*)/s or die;
76      my $at = length($1);
77      print "# Difference at byte $at...\n";
78      if($at > 10) {
79        $at -= 5;
80      }
81      {
82        print "# ", substr($outstring,$at,20), "\n";
83        print "# ", substr($compstring,$at,20), "\n";
84        print "#      ^...";
85      }
86
87      ok 0;
88      printf "# Unequal lengths %s and %s\n", length($outstring), length($compstring);
89      next;
90    }
91  }
92