1#!/perl -w 2use 5.010; 3use strict; 4 5# This tests properties of dual-life modules: 6# 7# * Are all dual-life programs being generated in utils/? 8# ... or in the module-specific locations where they are built. 9 10chdir 't'; 11require './test.pl'; 12 13use Config; 14if ( $Config{usecrosscompile} ) { 15 skip_all( "Not all files are available during cross-compilation" ); 16} 17 18plan('no_plan'); 19 20use File::Basename; 21use File::Find; 22use File::Spec::Functions; 23 24# Exceptions that are found in dual-life bin dirs but aren't 25# installed by default; some occur only during testing: 26my $not_installed = qr{^(?: 27 \.\./cpan/Archive-Tar/bin/ptar.* 28 | 29 \.\./cpan/JSON-PP/bin/json_pp 30 | 31 \.\./cpan/IO-Compress/bin/zipdetails 32 | 33 \.\./cpan/Encode/bin/u(?:cm(?:2table|lint|sort)|nidump) 34 | 35 \.\./cpan/Module-(?:Metadata|Build) 36 /MB-[\w\d]+/Simple/(?:test_install/)?bin/.* 37)\z}ix; 38 39my %dist_dir_exe; 40 41$dist_dir_exe{lc "podselect.PL"} = "../cpan/Pod-Parser/podselect"; 42$dist_dir_exe{lc "podchecker.PL"} = "../cpan/Pod-Checker/podchecker"; 43$dist_dir_exe{lc "pod2usage.PL"} = "../cpan/Pod-Usage/pod2usage"; 44 45foreach (qw (pod2man pod2text)) { 46 $dist_dir_exe{lc "$_.PL"} = "../cpan/podlators/scripts/$_"; 47 # redundant but necessary given use of scripts/ for both 48 # built version and .PL. 49 $dist_dir_exe{lc $_} = "../cpan/podlators/scripts/$_"; 50}; 51$dist_dir_exe{'pod2html.pl'} = '../ext/Pod-Html'; 52 53my @programs; 54 55my $ext = $^O eq 'VMS' ? '.com' : ''; 56 57find( 58 { no_chdir => 1, wanted => sub { 59 my $name = $File::Find::name; 60 return if $name =~ /blib/; 61 return unless $name =~ m{/(?:bin|scripts?)/\S+\z} && $name !~ m{/t/}; 62 $name =~ s/${ext}\z//; 63 64 push @programs, $name; 65 }}, 66 qw( ../cpan ../dist ../ext ), 67); 68 69 70for my $f ( sort @programs ) { 71 $f =~ s/\.\z// if $^O eq 'VMS'; 72 next if $f =~ $not_installed; 73 my $bn = basename($f); 74 if(grep { /\A(?i:$bn)\z/ } keys %dist_dir_exe) { 75 my $exe_file = "$dist_dir_exe{lc $bn}$ext"; 76 ok( -f $exe_file, "Verify -f '$exe_file'"); 77 } else { 78 my $utils_file = catfile('..', 'utils', "$bn$ext"); 79 ok( -f $utils_file, "Verify -f '$utils_file'" ); 80 } 81} 82 83