This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add Schwern's 1_compile test. The compile_module script renamed
[perl5.git] / t / lib / 1_compile.t
CommitLineData
7200bc44
JH
1#!./perl
2
3BEGIN {
4 chdir '..' if -d '../pod' && -d '../t';
5 @INC = 'lib';
6}
7
8use strict;
9use warnings;
10
11my @Core_Modules = (
12 'AnyDBM_File',
13 'AutoLoader',
14 'AutoSplit',
15 'B', # Do all these B things compile everywhere?
16 'B::Asmdata',
17 'B::Assembler',
18 'B::Bblock',
19 'B::Bytecode',
20 'B::C',
21 'B::CC',
22 'B::Concise',
23 'B::Debug',
24 'B::Deparse',
25 'B::Disassembler',
26 'B::Lint',
27 'B::Showlex',
28 'B::Stackobj',
29 'B::Stash',
30 'B::Terse',
31 'B::Xref',
32 'Benchmark',
33 'ByteLoader',
34 'CGI',
35 'CGI::Apache',
36 'CGI::Carp',
37 'CGI::Cookie',
38 # 'CGI::Fast', # won't load without FCGI
39 'CGI::Pretty',
40 'CGI::Push',
41 'CGI::Switch',
42 'CGI::Util',
43 'CPAN',
44 'CPAN::FirstTime',
45 'CPAN::Nox',
46 'Carp',
47 'Carp::Heavy',
48 'Class::Struct',
49 'Config',
50 'Cwd',
51 'DB',
52 # DB_File # config specific
53 'Data::Dumper',
54 # 'Devel::DProf', # needs to run as -d:DProf
55 'Devel::Peek',
56 'Devel::SelfStubber',
57 'DirHandle',
58 'Dumpvalue',
59 'DynaLoader', # config specific?
60 'English',
61 'Encode',
62 'Env',
63 'Errno',
64 'Exporter',
65 'Exporter::Heavy',
66 'ExtUtils::Command',
67 'ExtUtils::Embed',
68 'ExtUtils::Install',
69 'ExtUtils::Installed',
70 'ExtUtils::Liblist',
71 # ExtUtils::MM_Cygwin # ExtUtils::MakeMaker takes
72 # ExtUtils::MM_OS2 # care of testing these.
73 # ExtUtils::MM_Unix
74 # ExtUtils::MM_VMS
75 # ExtUtils::MM_Win32
76 'ExtUtils::MakeMaker',
77 'ExtUtils::Manifest',
78 'ExtUtils::Mkbootstrap',
79 'ExtUtils::Mksymlists',
80 'ExtUtils::Packlist',
81 'ExtUtils::testlib',
82 'Fatal',
83 'Fcntl', # config specific?
84 'File::Basename',
85 'File::CheckTree',
86 'File::Compare',
87 'File::Copy',
88 'File::DosGlob',
89 'File::Find',
90 'File::Glob',
91 'File::Path',
92 'File::Spec',
93 'File::Spec::Functions',
94 # File::Spec::EPOC # File::Spec will take care of
95 # File::Spec::Mac # testing these compile.
96 # File::Spec::OS2
97 # File::Spec::Unix
98 # File::Spec::VMS
99 # File::Spec::Win32
100 'File::stat',
101 'FileCache',
102 'FileHandle',
103 'Filter::Simple',
104 'Filter::Util::Call',
105 'FindBin',
106 'Getopt::Long',
107 'Getopt::Std',
108 'I18N::Collate',
109 'IO',
110 'IO::Dir',
111 'IO::File',
112 'IO::Handle',
113 'IO::Pipe',
114 'IO::Poll',
115 'IO::Seekable',
116 'IO::Select',
117 'IO::Socket',
118 'IO::Socket::INET',
119 # IO::Socket::UNIX # config specific
120 'IPC::Msg',
121 'IPC::Open2',
122 'IPC::Open3',
123 'IPC::Semaphore', # config specific?
124 'IPC::SysV', # config specific?
125 'Math::BigFloat',
126 'Math::BigInt',
127 'Math::Complex',
128 'Math::Trig',
129 'Net::Ping',
130 'Net::hostent',
131 'Net::netent',
132 'Net::protoent',
133 'Net::servent',
134 'O',
135 'Opcode',
136 'POSIX', # config specific?
137 'Pod::Checker',
138 'Pod::Find',
139 'Pod::Functions',
140 'Pod::Html',
141 'Pod::InputObjects',
142 'Pod::Man',
143 'Pod::Overstrike',
144 'Pod::ParseUtils',
145 'Pod::Parser',
146 'Pod::Plainer',
147 'Pod::Select',
148 'Pod::Text',
149 'Pod::Text::Color',
150 'Pod::Text::Termcap',
151 'Pod::Usage',
152 'SDBM_File',
153 'Safe',
154 'Search::Dict',
155 'SelectSaver',
156 'SelfLoader',
157 'Shell',
158 'Socket',
159 'Symbol',
160 'Sys::Hostname',
161 'Sys::Syslog',
162 'Term::ANSIColor',
163 'Term::Cap',
164 'Term::Complete',
165 'Term::ReadLine',
166 'Test',
167 'Test::Harness',
168 'Text::Abbrev',
169 'Text::ParseWords',
170 'Text::Soundex',
171 'Text::Tabs',
172 'Text::Wrap',
173 'Tie::Array',
174 'Tie::Hash',
175 'Tie::RefHash',
176 'Tie::Scalar',
177 'Tie::SubstrHash',
178 'Time::Local',
179 'Time::gmtime',
180 'Time::localtime',
181 'Time::tm',
182 'UNIVERSAL',
183 'User::grent',
184 'User::pwent',
185 'XSLoader',
186 'attributes',
187 'attrs',
188 'autouse',
189 'blib',
190 'bytes',
191 'charnames',
192 'constant',
193 'diagnostics',
194 'filetest',
195 'integer',
196 'less',
197 'lib',
198 'locale',
199 'open',
200 'ops',
201 'overload',
202 're',
203 'sigtrap',
204 'strict',
205 'subs',
206 'unicode::distinct',
207 'utf8',
208 'vars',
209 'warnings',
210 'warnings::register',
211 );
212
213print "1..".@Core_Modules."\n";
214
215my $test_num = 1;
216foreach my $module (@Core_Modules) {
217 print "not " unless compile_module($module);
218 print "ok $test_num\n";
219 $test_num++;
220}
221
222
223# We do this as a seperate process else we'll blow the hell out of our
224# namespace.
225sub compile_module {
226 my($module) = @_;
227
228 return scalar `./perl -Ilib t/lib/compmod.pl $module` =~ /^ok/;
229}