File: reinit.t

package info (click to toggle)
perl 5.42.0-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 128,392 kB
  • sloc: perl: 534,963; ansic: 240,563; sh: 72,042; pascal: 6,934; xml: 2,428; yacc: 1,360; makefile: 1,197; cpp: 208; lisp: 1
file content (75 lines) | stat: -rw-r--r-- 1,657 bytes parent folder | download | duplicates (3)
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
use strict;
use warnings;
use Test::More tests => 5;

use File::Spec;
use Cwd ();
use File::Basename ();

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",
) {
    my $full_file = File::Spec->catfile(File::Basename::dirname(Cwd::abs_path(__FILE__)), $file);

    unless(-e $full_file) {
        ok 0;
        print "# But $full_file doesn't exist!!\n";
        next;
    }

    my $precooked = $full_file;
    my $outstring;
    my $compstring;
    $precooked =~ s<\.pod><o.txt>s;
    $parser->reinit;
    $parser->output_string(\$outstring);
    $parser->parse_file($full_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;
    }
  }