1#!perl 2 3use strict; 4use warnings; 5 6require './test.pl'; 7 8plan('no_plan'); 9 10# Fail for every PERL_ARGS_ASSERT* macro that was declared but not used. 11 12my %declared; 13my %used; 14 15my $prefix = ''; 16 17unless (-d 't' && -f 'MANIFEST') { 18 # we'll assume that we are in t then. 19 # All files are internal to perl, so Unix-style is sufficiently portable. 20 $prefix = '../'; 21} 22 23{ 24 my $proto = $prefix . 'proto.h'; 25 26 open my $fh, '<', $proto or die "Can't open $proto: $!"; 27 28 while (<$fh>) { 29 $declared{$1}++ if /^#define\s+(PERL_ARGS_ASSERT[A-Za-z0-9_]+)\s+/; 30 } 31} 32 33cmp_ok(scalar keys %declared, '>', 0, 'Some macros were declared'); 34 35if (!@ARGV) { 36 my $manifest = $prefix . 'MANIFEST'; 37 open my $fh, '<', $manifest or die "Can't open $manifest: $!"; 38 while (<$fh>) { 39 # *.c or */*.c 40 push @ARGV, $prefix . $1 if m!^((?:[^/]+/)?[^/]+\.c)\t!; 41 } 42 push @ARGV, $prefix . 'inline.h'; # Special case this '.h' which acts like 43 # a '.c' 44} 45 46while (<>) { 47 $used{$1}++ if /^\s+(PERL_ARGS_ASSERT_[A-Za-z0-9_]+);$/; 48} 49 50my %unused; 51 52foreach (keys %declared) { 53 $unused{$_}++ unless $used{$_}; 54} 55 56if (keys %unused) { 57 fail("$_ is declared but not used") foreach sort keys %unused; 58} else { 59 pass('Every PERL_ARGS_ASSERT* macro declared is used'); 60} 61