print() instead of warn() so that stderr doesn't get
[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;
11use File::Find;
7200bc44 12
cdd2acaa 13my %Core_Modules;
14
15find(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
25sub delete_unless_in_extensions {
26 delete $Core_Modules{$_[0]} unless $Config{extensions} =~ /\b$_[0]\b/;
27}
28
29foreach my $known_extension (split(' ', $Config{known_extensions})) {
30 delete_unless_in_extensions($known_extension);
31}
32
33sub delete_by_prefix {
34 delete @Core_Modules{grep { /^$_[0]/ } keys %Core_Modules};
35}
36
37delete $Core_Modules{'CGI::Fast'}; # won't load without FCGI
38
39delete $Core_Modules{'Devel::DProf'}; # needs to be run as -d:DProf
40
41delete_by_prefix('ExtUtils::MM_'); # ExtUtils::MakeMaker's domain
42
43delete_by_prefix('File::Spec::'); # File::Spec's domain
44$Core_Modules{'File::Spec::Functions'}++; # put this back
45
46delete_by_prefix('Thread::') unless $Config{extensions} =~ /\bThread\b/;
47
48delete_by_prefix('unicode::');
49$Core_Modules{'unicode::distinct'}++; # put this back
50
51# Okay, this is the list.
52
53my @Core_Modules = sort keys %Core_Modules;
7200bc44 54
55print "1..".@Core_Modules."\n";
56
57my $test_num = 1;
cdd2acaa 58
7200bc44 59foreach 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.
68sub compile_module {
69 my($module) = @_;
70
71 return scalar `./perl -Ilib t/lib/compmod.pl $module` =~ /^ok/;
72}