xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/t/harness (revision 0:68f95e015346)
1#!./perl
2
3# We suppose that perl _mostly_ works at this moment, so may use
4# sophisticated testing.
5
6BEGIN {
7    chdir 't' if -d 't';
8    @INC = '../lib';              # pick up only this build's lib
9    $ENV{PERL5LIB} = '../lib';    # so children will see it too
10}
11
12my $torture; # torture testing?
13
14use Test::Harness;
15
16$Test::Harness::switches = "";    # Too much noise otherwise
17$Test::Harness::verbose = shift if @ARGV && $ARGV[0] eq '-v';
18
19if ($ARGV[0] eq '-torture') {
20    shift;
21    $torture = 1;
22}
23
24# Let tests know they're running in the perl core.  Useful for modules
25# which live dual lives on CPAN.
26$ENV{PERL_CORE} = 1;
27
28#fudge DATA for now.
29%datahandle = qw(
30		lib/bigint.t		1
31		lib/bigintpm.t		1
32		lib/bigfloat.t	 	1
33		lib/bigfloatpm.t	1
34		op/gv.t			1
35		lib/complex.t		1
36		lib/ph.t		1
37		lib/soundex.t		1
38		op/misc.t		1
39		op/runlevel.t		1
40		op/tie.t		1
41		op/lex_assign.t		1
42		);
43
44foreach (keys %datahandle) {
45     unlink "$_.t";
46}
47
48my @tests = ();
49
50if (@ARGV) {
51    if ($^O eq 'MSWin32') {
52	@tests = map(glob($_),@ARGV);
53    }
54    else {
55	@tests = @ARGV;
56    }
57} else {
58    unless (@tests) {
59	push @tests, <base/*.t>;
60        push @tests, <comp/*.t>;
61        push @tests, <cmd/*.t>;
62        push @tests, <run/*.t>;
63        push @tests, <io/*.t>;
64        push @tests, <op/*.t>;
65        push @tests, <uni/*.t>;
66        push @tests, <lib/*.t>;
67        push @tests, <japh/*.t> if $torture;
68	push @tests, <win32/*.t> if $^O eq 'MSWin32';
69	use File::Spec;
70	my $updir = File::Spec->updir;
71	my $mani  = File::Spec->catfile(File::Spec->updir, "MANIFEST");
72	if (open(MANI, $mani)) {
73	    while (<MANI>) { # similar code in t/TEST
74	    if (m!^(ext/\S+/?(?:[^/\s]+\.t|test\.pl)|lib/\S+?(?:\.t|test\.pl))\s!) {
75		    push @tests, File::Spec->catfile($updir, $1);
76		}
77	    }
78	    close MANI;
79	} else {
80	    warn "$0: cannot open $mani: $!\n";
81	}
82	push @tests, <pod/*.t>;
83	push @tests, <x2p/*.t>;
84    }
85}
86if ($^O eq 'MSWin32') {
87    s,\\,/,g for @tests;
88}
89Test::Harness::runtests @tests;
90exit(0) unless -e "../testcompile";
91
92# %infinite =  qw (
93#        op/bop.t	1
94#        lib/hostname.t	1
95#	 op/lex_assign.t	1
96#	 lib/ph.t	1
97#        );
98
99my $dhwrapper = <<'EOT';
100open DATA,"<".__FILE__;
101until (($_=<DATA>) =~ /^__END__/) {};
102EOT
103
104@tests = grep (!$infinite{$_}, @tests);
105@tests = map {
106         my $new = $_;
107	 if ($datahandle{$_} && !( -f "$new.t") ) {
108             $new .= '.t';
109             local(*F, *T);
110             open(F,"<$_") or die "Can't open $_: $!";
111             open(T,">$new") or die "Can't open $new: $!";
112             print T $dhwrapper, <F>;
113             close F;
114             close T;
115         }
116         $new;
117         } @tests;
118
119print "The tests ", join(' ', keys(%infinite)),
120    " generate infinite loops! Skipping!\n";
121
122$ENV{'HARNESS_COMPILE_TEST'} = 1;
123$ENV{'PERLCC_TIMEOUT'} = 120 unless $ENV{'PERLCC_TIMEOUT'};
124
125Test::Harness::runtests @tests;
126foreach (keys %datahandle) {
127     unlink "$_.t";
128}
129