Re: [PATCH t/lib/1_compile.t] Skipping known tested libraries
[p5sagit/p5-mst-13.2.git] / t / lib / 1_compile.t
CommitLineData
7200bc44 1#!./perl
2
3BEGIN {
4 chdir '..' if -d '../pod' && -d '../t';
5 @INC = 'lib';
6}
7
8use strict;
9use warnings;
cdd2acaa 10use Config;
7200bc44 11
cdd2acaa 12my %Core_Modules;
13
656b9f42 14unless (open(MANIFEST, "MANIFEST")) {
15 die "$0: failed to open 'MANIFEST': $!\n";
16}
17
18sub add_by_name {
19 $Core_Modules{$_[0]}++;
20}
21
22while (<MANIFEST>) {
23 next unless m!^lib/(\S+?)\.pm!;
24 my $module = $1;
25 $module =~ s!/!::!g;
26 add_by_name($module);
27}
28
29close(MANIFEST);
cdd2acaa 30
31# Delete stuff that can't be tested here.
32
656b9f42 33sub delete_by_name {
34 delete $Core_Modules{$_[0]};
35}
36
37sub has_extension {
38 $Config{extensions} =~ /\b$_[0]\b/i;
39}
40
41sub delete_unless_has_extension {
42 delete $Core_Modules{$_[0]} unless has_extension($_[0]);
cdd2acaa 43}
44
45foreach my $known_extension (split(' ', $Config{known_extensions})) {
656b9f42 46 delete_unless_has_extension($known_extension);
cdd2acaa 47}
48
49sub delete_by_prefix {
656b9f42 50 for my $match (grep { /^$_[0]/ } keys %Core_Modules) {
51 delete_by_name($match);
52 }
cdd2acaa 53}
54
656b9f42 55delete_by_name('CGI::Fast'); # won't load without FCGI
cdd2acaa 56
656b9f42 57delete_by_name('Devel::DProf'); # needs to be run as -d:DProf
cdd2acaa 58
59delete_by_prefix('ExtUtils::MM_'); # ExtUtils::MakeMaker's domain
60
61delete_by_prefix('File::Spec::'); # File::Spec's domain
656b9f42 62add_by_name('File::Spec::Functions'); # put this back
cdd2acaa 63
656b9f42 64sub using_feature {
65 my $use = "use$_[0]";
66 exists $Config{$use} &&
67 defined $Config{$use} &&
68 $Config{$use} eq 'define';
69}
70
71unless (using_feature('threads') && has_extension('Thread')) {
72 delete_by_name('Thread');
290a1446 73 delete_by_prefix('Thread::');
eba8ff18 74}
cdd2acaa 75
76delete_by_prefix('unicode::');
656b9f42 77add_by_name('unicode::distinct'); # put this back
cdd2acaa 78
6b40b044 79
80# Delete all modules which have their own tests. This makes
81# this test alot faster.
82foreach my $mod (<DATA>) {
83 chomp $mod;
84 delete_by_name($mod);
85}
86
cdd2acaa 87# Okay, this is the list.
88
89my @Core_Modules = sort keys %Core_Modules;
7200bc44 90
91print "1..".@Core_Modules."\n";
92
93my $test_num = 1;
cdd2acaa 94
7200bc44 95foreach my $module (@Core_Modules) {
cdd2acaa 96 print "# $module compile failed\nnot " unless compile_module($module);
7200bc44 97 print "ok $test_num\n";
98 $test_num++;
99}
100
656b9f42 101# We do this as a separate process else we'll blow the hell
102# out of our namespace.
7200bc44 103sub compile_module {
656b9f42 104 my ($module) = $_[0];
7200bc44 105
bdc55ba4 106 return scalar `$^X "-Ilib" t/lib/compmod.pl $module` =~ /^ok/;
7200bc44 107}
6b40b044 108
109
110__DATA__
111AnyDBM_File
112AutoLoader
113B
114B::Debug
115B::Deparse
116B::ShowLex
117B::Stash
118Benchmark
119CGI
120CGI::Pretty
121CGI::Util
122Carp
123Class::ISA
124Class::Struct
125Cwd
126DB_File
127Data::Dumper
128Devel::DProf
129Devel::Peek
130Digest
131Digest::MD5
132DirHandle
133Dumpvalue
134Encode
135English
136Env
137Errno
138Exporter
139Exporter::Heavy
140Fatal
141Fcntl
142File::Basename
143File::CheckTree
144File::Copy
145File::DosGlob
146File::Find
147File::Glob
148File::Path
149File::Spec
150File::Spec::Functions
151File::Temp
152FileCache
153FileHandle
154Filter::Util::Call
155FindBin
156GDBM_File
157Getopt::Long
158Getopt::Std
159IO::Dir
160IO::File
161IO::Handle
162IO::Pipe
163IO::Poll
164IO::Seekable
165IO::Select
166IO::Socket
167IO::Socket::INET
168IO::Socket::UNIX
169IPC::Open2
170IPC::Open3
171IPC::SysV
172List::Util
173Locale::Constants
174Locale::Country
175Locale::Currency
176Locale::Language
177MIME::Base64
178MIME::QuotedPrint
179Math::BigFloat
180Math::BigInt
181Math::Complex
182Math::Trig
183NDBM_File
184Net::hostent
185ODBM_File
186Opcode
187POSIX
188Pod::Checker
189Pod::Find
190Pod::Text
191Pod::Usage
192SDBM_File
193Safe
194Scalar::Util
195Search::Dict
196SelectSaver
197SelfLoader
198Socket
199Storable
200Switch
201Symbol
202Sys::Hostname
203Sys::Syslog
204Term::ANSIColor
205Test
206Test::Harness
207Test::ParseWords
208Text::Abbrev
209Text::Balanced
210Text::ParseWords
211Text::Soundex
212Text::Tabs
213Text::Wrap
214Thread
215Tie::Array
216Tie::Handle
217Tie::Hash
218Tie::RefHash
219Tie::Scalar
220Tie::SubstrHash
221Time::HiRes
222Time::Local
223Time::Piece
224UNIVERSAL
225XS::Typemap
226attrs
227base
228bytes
229charnames
230constant
231diagnostics
232fields
233integer
234locale
235ops
236overload
237strict
238subs
239utf8
240vars
241warnings
242warnings::register