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