4 chdir '..' if -d '../pod' && -d '../t';
15 unless (open(MANIFEST, "MANIFEST")) {
16 die "$0: failed to open 'MANIFEST': $!\n";
20 $Core_Modules{$_[0]}++;
24 s/_pm\.PL/.pm/; # Don't forget the extracted modules
25 if (m!^(lib)/(\S+?)\.pm\s!) {
26 # Collecting modules names from under ext/ would be
27 # rather painful since the mapping from filenames
28 # to module names is not 100%.
29 my ($dir, $module) = ($1, $2);
32 } elsif (m!^(lib|ext)/(\S+?)(?:\.t|/test.pl)\s!) {
33 my ($dir, $test) = ($1, $2);
34 $test =~ s!(\w+)/\1$!$1! if $dir eq 'ext';
35 $test =~ s!/t/[^/]+$!!;
43 # Delete stuff that can't be tested here.
46 delete $Core_Modules{$_[0]};
50 $Config{extensions} =~ /\b$_[0]\b/i;
53 sub delete_unless_has_extension {
54 delete $Core_Modules{$_[0]} unless has_extension($_[0]);
57 foreach my $known_extension (split(' ', $Config{known_extensions})) {
58 delete_unless_has_extension($known_extension);
61 sub delete_by_prefix {
62 for my $match (grep { /^$_[0]/ } keys %Core_Modules) {
63 delete_by_name($match);
67 delete_by_name('CGI::Fast'); # won't load without FCGI
69 delete_by_prefix('ExtUtils::MM_'); # ExtUtils::MakeMaker's domain
71 delete_by_prefix('File::Spec::'); # File::Spec's domain
72 add_by_name('File::Spec::Functions'); # put this back
74 delete_by_prefix('Attribute::Handlers');# we test this, and we have demos
76 delete_by_prefix('Net::FTP::'); # Net::FTP is tested.
78 # In this case we could rely on the fake Socket layer the libnet tests
79 # use but frankly I think in this case we might as well let it be.
80 delete_by_prefix('Net::') unless has_extension('Socket');
84 exists $Config{$use} &&
85 defined $Config{$use} &&
86 $Config{$use} eq 'define';
89 unless (using_feature('threads') && has_extension('Thread')) {
90 delete_by_name('Thread');
91 delete_by_prefix('Thread::');
94 unless (has_extension('NDBM_File')) {
95 delete_by_name('Memoize::NDBM_File');
98 if (ord('A') == 193) {
99 delete_by_prefix('Net::') unless eval { require Convert::EBCDIC };
102 # Delete all modules which have their own tests.
103 # This makes this test a lot faster.
104 foreach my $mod (sort keys %Test) {
105 delete_by_name($mod);
107 foreach my $mod (<DATA>) {
109 print "### $mod has a test but is in DATA of $0\n" if exists $Test{$mod};
110 delete_by_name($mod);
113 # Okay, this is the list.
115 my @Core_Modules = sort keys %Core_Modules;
117 print "1..".@Core_Modules."\n";
121 foreach my $module (@Core_Modules) {
122 print "$module compile failed\nnot " unless compile_module($module);
123 print "ok $test_num\n";
127 # We do this as a separate process else we'll blow the hell
128 # out of our namespace.
130 my ($module) = $_[0];
132 my $out = scalar `$^X "-Ilib" t/lib/compmod.pl $module`;
134 return $out =~ /^ok/;
137 # Add here modules that have their own test scripts and therefore
138 # need not be test-compiled by 1_compile.t.
197 Pod::Text::Overstrike