Commit | Line | Data |
7200bc44 |
1 | #!./perl |
2 | |
3 | BEGIN { |
4 | chdir '..' if -d '../pod' && -d '../t'; |
5 | @INC = 'lib'; |
6 | } |
7 | |
8 | use strict; |
9 | use warnings; |
cdd2acaa |
10 | use Config; |
11 | use File::Find; |
7200bc44 |
12 | |
cdd2acaa |
13 | my %Core_Modules; |
14 | |
15 | find(sub { |
16 | if ($File::Find::name =~ m!^lib\W+(.+)\.pm$!i) { |
17 | my $module = $1; |
18 | $module =~ s/[^\w-]/::/g; |
19 | $Core_Modules{$module}++; |
20 | } |
21 | }, "lib"); |
22 | |
23 | # Delete stuff that can't be tested here. |
24 | |
25 | sub delete_unless_in_extensions { |
26 | delete $Core_Modules{$_[0]} unless $Config{extensions} =~ /\b$_[0]\b/; |
27 | } |
28 | |
29 | foreach my $known_extension (split(' ', $Config{known_extensions})) { |
30 | delete_unless_in_extensions($known_extension); |
31 | } |
32 | |
33 | sub delete_by_prefix { |
34 | delete @Core_Modules{grep { /^$_[0]/ } keys %Core_Modules}; |
35 | } |
36 | |
37 | delete $Core_Modules{'CGI::Fast'}; # won't load without FCGI |
38 | |
39 | delete $Core_Modules{'Devel::DProf'}; # needs to be run as -d:DProf |
40 | |
41 | delete_by_prefix('ExtUtils::MM_'); # ExtUtils::MakeMaker's domain |
42 | |
43 | delete_by_prefix('File::Spec::'); # File::Spec's domain |
44 | $Core_Modules{'File::Spec::Functions'}++; # put this back |
45 | |
46 | delete_by_prefix('Thread::') unless $Config{extensions} =~ /\bThread\b/; |
47 | |
48 | delete_by_prefix('unicode::'); |
49 | $Core_Modules{'unicode::distinct'}++; # put this back |
50 | |
51 | # Okay, this is the list. |
52 | |
53 | my @Core_Modules = sort keys %Core_Modules; |
7200bc44 |
54 | |
55 | print "1..".@Core_Modules."\n"; |
56 | |
57 | my $test_num = 1; |
cdd2acaa |
58 | |
7200bc44 |
59 | foreach my $module (@Core_Modules) { |
cdd2acaa |
60 | print "# $module compile failed\nnot " unless compile_module($module); |
7200bc44 |
61 | print "ok $test_num\n"; |
62 | $test_num++; |
63 | } |
64 | |
65 | |
cdd2acaa |
66 | # We do this as a separate process else we'll blow the hell out of our |
7200bc44 |
67 | # namespace. |
68 | sub compile_module { |
69 | my($module) = @_; |
70 | |
71 | return scalar `./perl -Ilib t/lib/compmod.pl $module` =~ /^ok/; |
72 | } |