This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
devel/regenerate: Add some error checking
authorKarl Williamson <khw@cpan.org>
Thu, 15 Aug 2019 01:35:11 +0000 (19:35 -0600)
committerNicolas R <atoomic@cpan.org>
Fri, 27 Sep 2019 22:51:27 +0000 (16:51 -0600)
Make sure that things we skip testing are on the list of such things,
which has information that we otherwise would glean from testing

(cherry picked from commit 98ff9eaf3c08405d27ba8380835087116e7c98f4)
Signed-off-by: Nicolas R <atoomic@cpan.org>
dist/Devel-PPPort/devel/regenerate

index 1005519..15f516d 100755 (executable)
@@ -21,6 +21,7 @@ use Getopt::Long;
 use Pod::Usage;
 
 require './devel/devtools.pl';
+require './parts/ppptools.pl';
 
 our %opt = (
   check   => 1,
@@ -63,6 +64,35 @@ if (@notwr) {
   }
 }
 
+
+if (-e 'ppport.h') {
+    my $blead = $opt{blead};
+    $blead = get_and_sort_perls(\%opt)->[0]->{path} unless $blead;
+
+    # Get list of things we provide
+    my %provided = map { /^(\w+)/ ? ( $1 => 1 ) : () }
+                                            `$blead ppport.h --list-provided`;
+
+    # Get the list of macros that are hard to test.
+    my @unorthodox = map { exists $_->{flags}{u} ? $_->{name} : () }
+            parse_embed(qw(parts/embed.fnc parts/apidoc.fnc parts/ppport.fnc));
+
+    # Keep on that list only the things we provide
+    @unorthodox = grep { exists $provided{$_} } @unorthodox;
+
+    # And get the list of known hard things.
+    my $hard_ref = &known_but_hard_to_test_for;
+
+    # If we provide something, it better be on the known things list
+    my @bad = grep { ! exists $hard_ref->{$_} } @unorthodox;
+    if (@bad) {
+        print "The following items need to be manually added to the list in",
+            " part/inc/ppptools: known_but_hard_to_test_for(): ",
+            join ", ", @bad, "\n";
+        quit_now();
+    }
+}
+
 for my $dir (qw( base todo )) {
   my $cur = "parts/$dir";
   my $old = "$cur-old";