Initial patch.
[vuplus_webkit] / Websites / bugs.webkit.org / t / Support / Files.pm
diff --git a/Websites/bugs.webkit.org/t/Support/Files.pm b/Websites/bugs.webkit.org/t/Support/Files.pm
new file mode 100644 (file)
index 0000000..dc60687
--- /dev/null
@@ -0,0 +1,83 @@
+# -*- 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 <zach@zachlipton.com>
+#                 Joel Peshkin <bugreport@peshkin.net>
+
+
+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']
+);
+
+
+@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;