# -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code are the Bugzilla Tests. # # The Initial Developer of the Original Code is Zach Lipton # Portions created by Zach Lipton are # Copyright (C) 2001 Zach Lipton. All # Rights Reserved. # # Contributor(s): Zach Lipton # Joel Peshkin package Support::Files; use File::Find; # exclude_deps is a hash of arrays listing the files to be excluded # if a module is not available # @additional_files = (); %exclude_deps = ( 'XML::Twig' => ['importxml.pl'], 'Net::LDAP' => ['Bugzilla/Auth/Verify/LDAP.pm'], 'Authen::Radius' => ['Bugzilla/Auth/Verify/RADIUS.pm'], 'Email::Reply' => ['email_in.pl'], 'Email::MIME::Attachment::Stripper' => ['email_in.pl'], 'JSON::RPC' => ['Bugzilla/WebService/Server/JSONRPC.pm'] ); @files = glob('*'); find(sub { push(@files, $File::Find::name) if $_ =~ /\.pm$/;}, 'Bugzilla'); sub have_pkg { my ($pkg) = @_; my ($msg, $vnum, $vstr); no strict 'refs'; eval { my $p; ($p = $pkg . ".pm") =~ s!::!/!g; require $p; }; return !($@); } @exclude_files = (); foreach $dep (keys(%exclude_deps)) { if (!have_pkg($dep)) { push @exclude_files, @{$exclude_deps{$dep}}; } } sub isTestingFile { my ($file) = @_; my $exclude; foreach $exclude (@exclude_files) { if ($file eq $exclude) { return undef; } # get rid of excluded files. } if ($file =~ /\.cgi$|\.pl$|\.pm$/) { return 1; } my $additional; foreach $additional (@additional_files) { if ($file eq $additional) { return 1; } } return undef; } foreach $currentfile (@files) { if (isTestingFile($currentfile)) { push(@testitems,$currentfile); } } 1;