This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add regen/genpacksizetables.pl to t/porting/regen.t
[perl5.git] / t / porting / regen.t
1 #!./perl -w
2
3 # Verify that all files generated by perl scripts are up to date.
4
5 BEGIN {
6     @INC = '..' if -f '../TestInit.pm';
7 }
8 use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
9 use strict;
10
11 require 'regen/regen_lib.pl';
12 require 't/test.pl';
13 $::NO_ENDING = $::NO_ENDING = 1;
14
15 if ( $^O eq "VMS" ) {
16   skip_all( "- regen.pl needs porting." );
17 }
18
19 my $in_regen_pl = 23; # I can't see a clean way to calculate this automatically.
20 my @files = qw(perly.act perly.h perly.tab keywords.c keywords.h uconfig.h);
21 my @progs = qw(regen/regcharclass.pl regen/mk_PL_charclass.pl
22                regen/unicode_constants.pl regen/genpacksizetables.pl);
23
24 plan (tests => $in_regen_pl + @files + @progs + 2);
25
26 OUTER: foreach my $file (@files) {
27     open my $fh, '<', $file or die "Can't open $file: $!";
28     1 while defined($_ = <$fh>) and !/Generated from:/;
29     if (eof $fh) {
30         fail("Can't find 'Generated from' line in $file");
31         next;
32     }
33     my @bad;
34     while (<$fh>) {
35         last if /ex: set ro:/;
36         unless (/^(?: \* | #)([0-9a-f]+) (\S+)$/) {
37             chomp $_;
38             fail("Bad line in $file: '$_'");
39             next OUTER;
40         }
41         my $digest = digest($2);
42         note("$digest $2");
43         push @bad, $2 unless $digest eq $1;
44     }
45     is("@bad", '', "generated $file is up to date");
46 }
47
48 foreach (@progs, 'regen.pl') {
49   system "$^X $_ --tap";
50 }
51
52 foreach ( '-y', '-j' ) {
53   system "$^X Porting/makemeta --tap $_";
54 }