This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In FindExt.t, move the main loop's comparison logic into a subroutine.
[perl5.git] / t / porting / FindExt.t
1 #!../miniperl -w
2
3 BEGIN {
4     @INC = qw(../win32 ../lib);
5     require './test.pl';
6     skip_all('FindExt not portable')
7         if $^O eq 'VMS';
8 }
9 use strict;
10 use Config;
11
12 # Test that Win32/FindExt.pm is consistent with Configure in determining the
13 # types of extensions.
14
15 if ($^O eq "MSWin32" && !defined $ENV{PERL_STATIC_EXT}) {
16     skip_all "PERL_STATIC_EXT must be set to the list of static extensions";
17 }
18
19 unless (defined $Config{usedl}) {
20     skip_all "FindExt just plain broken for static perl.";
21 }
22
23 plan tests => 12;
24 require FindExt;
25
26 FindExt::apply_config(\%Config);
27 FindExt::scan_ext("../$_")
28     foreach qw(cpan dist ext);
29 FindExt::set_static_extensions(split ' ', $^O eq 'MSWin32'
30                                ? $ENV{PERL_STATIC_EXT} : $Config{static_ext});
31
32 sub compare {
33     my ($desc, $want, @have) = @_;
34     $want = [sort split ' ', $want]
35         unless ref $want eq 'ARRAY';
36     local $::Level = $::Level + 1;
37     is(scalar @have, scalar @$want, "We find the same number of $desc");
38     is("@have", "@$want", "We find the same list of $desc");
39 }
40
41 # Config.pm and FindExt.pm make different choices about what should be built
42 my @config_built;
43 my @found_built;
44 {
45     foreach my $type (qw(static dynamic nonxs)) {
46         push @found_built, eval "FindExt::${type}_ext()";
47         push @config_built, split ' ', $Config{"${type}_ext"};
48     }
49 }
50 @config_built = sort @config_built;
51 @found_built = sort @found_built;
52
53 foreach (['dynamic_ext',
54           [FindExt::dynamic_ext()], $Config{dynamic_ext}],
55          ['static_ext',
56           [FindExt::static_ext()], $Config{static_ext}],
57          ['nonxs_ext',
58           [FindExt::nonxs_ext()], $Config{nonxs_ext}],
59          ['known_extensions',
60           [FindExt::known_extensions()], $Config{known_extensions}],
61          ['"config" dynamic + static + nonxs',
62           \@config_built, $Config{extensions}],
63          ['"found" dynamic + static + nonxs', 
64           \@found_built, [FindExt::extensions()]],
65         ) {
66     my ($type, $found, $config) = @$_;
67     compare($type, $config, @$found);
68 }
69
70 # Local variables:
71 # cperl-indent-level: 4
72 # indent-tabs-mode: nil
73 # End:
74 #
75 # ex: set ts=8 sts=4 sw=4 et: