This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
069121531c7b7644a81b6da39c2722fd1c4a93f1
[perl5.git] / t / lib / 1_compile.t
1 #!./perl
2
3 # Modules should have their own tests.  For historical reasons, some
4 # do not.  This does basic compile tests on modules that have no tests
5 # of their own.
6
7 BEGIN {
8     chdir 't';
9     @INC = '../lib';
10 }
11
12 use strict;
13 use warnings;
14 use File::Spec::Functions;
15
16 # Okay, this is the list.
17
18 my @Core_Modules = grep /\S/, <DATA>;
19 chomp @Core_Modules;
20
21 if (eval { require Socket }) {
22   push @Core_Modules, qw(Net::Domain);
23   # Two Net:: modules need the Convert::EBCDIC if in EBDCIC.
24   if (ord("A") != 193 || eval { require Convert::EBCDIC }) {
25       push @Core_Modules, qw(Net::Cmd Net::POP3);
26   }
27 }
28
29 @Core_Modules = sort @Core_Modules;
30
31 print "1..".(1+@Core_Modules)."\n";
32
33 my $message
34   = "ok 1 - All modules should have tests # TODO Make Schwern Poorer\n";
35 if (@Core_Modules) {
36   print "not $message";
37 } else {
38   print $message;
39 }
40
41 my $test_num = 2;
42
43 foreach my $module (@Core_Modules) {
44     my $todo = '';
45     $todo = "# TODO $module needs porting on $^O" if $module eq 'ByteLoader' && $^O eq 'VMS';
46     print "# $module compile failed\nnot " unless compile_module($module);
47     print "ok $test_num $todo\n";
48     $test_num++;
49 }
50
51 # We do this as a separate process else we'll blow the hell
52 # out of our namespace.
53 sub compile_module {
54     my ($module) = $_[0];
55
56     my $compmod = catfile(curdir(), 'lib', 'compmod.pl');
57     my $lib     = '-I' . catdir(updir(), 'lib');
58
59     my $out = scalar `$^X $lib $compmod $module`;
60     print "# $out";
61     return $out =~ /^ok/;
62 }
63
64 # These modules have no tests of their own.
65 # Keep up to date with
66 # http://www.pobox.com/~schwern/cgi-bin/perl-qa-wiki.cgi?UntestedModules
67 # and vice-versa.  The list should only shrink.
68 __DATA__
69 B::C
70 B::CC
71 B::Stackobj
72 ByteLoader
73 CPAN
74 CPAN::FirstTime
75 DynaLoader
76 ExtUtils::MM_NW5
77 ExtUtils::Install
78 ExtUtils::Liblist
79 ExtUtils::Mksymlists
80 O
81 Pod::Plainer
82 Test::Harness::Iterator