1 # -*- Mode: perl; indent-tabs-mode: nil -*-
 
   3 # The contents of this file are subject to the Mozilla Public
 
   4 # License Version 1.1 (the "License"); you may not use this file
 
   5 # except in compliance with the License. You may obtain a copy of
 
   6 # the License at http://www.mozilla.org/MPL/
 
   8 # Software distributed under the License is distributed on an "AS
 
   9 # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 
  10 # implied. See the License for the specific language governing
 
  11 # rights and limitations under the License.
 
  13 # The Original Code are the Bugzilla Tests.
 
  15 # The Initial Developer of the Original Code is Zach Lipton
 
  16 # Portions created by Zach Lipton are
 
  17 # Copyright (C) 2001 Zach Lipton.  All
 
  20 # Contributor(s): Zach Lipton <zach@zachlipton.com>
 
  34 use Thread::Pool::Simple;
 
  36 use Test::More tests => scalar(@Support::Files::testitems);
 
  38 # Need this to get the available driver information
 
  40 #my @DBI_drivers = DBI->available_drivers;
 
  42 # Bugzilla requires Perl 5.8.0 now.  Checksetup will tell you this if you run it, but
 
  43 # it tests it in a polite/passive way that won't make it fail at compile time.  We'll
 
  44 # slip in a compile-time failure if it's missing here so a tinderbox on < 5.8 won't
 
  45 # pass and mistakenly let people think Bugzilla works on any perl below 5.8.
 
  48 # Capture the TESTOUT from Test::More or Test::Builder for printing errors.
 
  49 # This will handle verbosity for us automatically.
 
  52     local $^W = 0;  # Don't complain about non-existent filehandles
 
  53     if (-e \*Test::More::TESTOUT) {
 
  54         $fh = \*Test::More::TESTOUT;
 
  55     } elsif (-e \*Test::Builder::TESTOUT) {
 
  56         $fh = \*Test::Builder::TESTOUT;
 
  62 my @testitems = @Support::Files::testitems;
 
  63 my $perlapp = "\"$^X\"";
 
  65 # Test the scripts by compiling them
 
  69 sub test_compile_file {
 
  70   my ($file, $T) = @{ $_[0] };
 
  73   my $command = "$perlapp -w -c$T -Imodules/override -It -MSupport::CanonialGlobals $file 2>&1";
 
  74   my $loginfo=`$command`;
 
  76   if ($loginfo =~ /syntax ok$/im) {
 
  77     if ($loginfo ne "$file syntax OK\n") {
 
  78       ok(0,$file." --WARNING");
 
  84     ok(0,$file." --ERROR");
 
  89 foreach my $file (@testitems) {
 
  90   $file =~ s/\s.*$//;           # nuke everything after the first space (#comment)
 
  91   next if !$file;               # skip null entries
 
  97   $T = "T" if $bang =~ m/#!\S*perl\s+-.*T/;
 
 100     ok(1, "$file is a symlink");
 
 102     push @to_compile, [ $file, $T ];
 
 106 my $pool = Thread::Pool::Simple->new(
 
 108   max    => Sys::CPU::cpu_count() + 1,
 
 109   do     => [ \&test_compile_file ],
 
 113 $pool->add($_) for @to_compile;