home *** CD-ROM | disk | FTP | other *** search
- package ModPerl::TestReport;
-
- use strict;
- use warnings FATAL => 'all';
-
- use base qw(Apache::TestReportPerl);
-
- my @interesting_packages = qw(
- CGI
- Apache::Request
- mod_perl
- LWP
- );
-
- # we want to see only already installed packages, so skip over
- # modules that are about to be installed
- my @skip_dirs = qw(
- blib/lib
- blib/lib/Apache2
- blib/arch
- blib/arch/Apache2
- lib
- );
- my $skip_dir_str = join '|', map { s|/|[/\\\\]|g; $_ } @skip_dirs;
- my $skip_dir_pat = qr|[/\\]($skip_dir_str)[/\\]*$|;
-
- sub packages {
-
- # search in Apache2/ subdirs too
- eval { require Apache2 };
- my @inc = grep !/$skip_dir_pat/, @INC;
-
- my %packages = ();
- my $max_len = 0;
- for my $package (sort @interesting_packages ) {
- $max_len = length $package if length $package > $max_len;
- my $filename = package2filename($package);
- my @ver = ();
- for my $dir (@inc) {
- my $path = "$dir/$filename";
- if (-e $path) {
- no warnings 'redefine';
- my $ver = eval { require $path;
- delete $INC{$path};
- $package->VERSION;
- };
- # two versions could be installed (one under Apache2/)
- push @{ $packages{$package} }, $ver if $ver;
- }
- }
- }
-
- my @lines = "*** Packages of interest status:\n";
-
- for my $package (sort @interesting_packages) {
- my $vers = exists $packages{$package}
- ? join ", ", sort @{ $packages{$package} }
- : "-";
- push @lines, sprintf "%-${max_len}s: %s", $package, $vers;
- }
-
- return join "\n", @lines, '';
- }
-
- sub config {
- my $self = shift;
-
- my @report = ();
-
- # core config
- push @report, ModPerl::Config::as_string();
-
- # installed packages
- push @report, $self->packages;
-
- # this report is generated by user/group
-
- return join "\n", @report;
- }
-
- sub package2filename {
- my $package = shift;
- $package =~ s|::|/|g;
- $package .= ".pm";
- return $package;
- }
-
- 1;
-