summaryrefslogtreecommitdiff
path: root/t/0_Config.t
blob: 1fcbf541c00ec732cbc605bb4b7866e65af2a346 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

use strict;
use Test::More tests => 1;


# Build up a list of installed modules

my @mod_list = qw(XML::Simple Storable XML::Parser XML::SAX);


# If XML::SAX is installed, add a list of installed SAX parsers

eval " use XML::SAX; ";
my $default_parser = '';
unless($@) {
  push @mod_list, 'XML::NamespaceSupport';
  push @mod_list, map { $_->{Name} } @{XML::SAX->parsers()};
  $default_parser = ref(XML::SAX::ParserFactory->parser());
}


# Extract the version number from each module

my(%version);
foreach my $module (@mod_list) {
  eval " require $module; ";
  unless($@) {
    no strict 'refs';
    $version{$module} = ${$module . '::VERSION'} || "Unknown";
  }
}

$default_parser = 'XML::Parser' if(!$default_parser && $version{'XML::Parser'});


# Add version number of the Perl binary

eval ' use Config; $version{perl} = $Config{version} ';  # Should never fail
if($@) {
  $version{perl} = $];
}
unshift @mod_list, 'perl';


# Check for preferred parser via environment setting

my $preferred_parser = $ENV{XML_SIMPLE_PREFERRED_PARSER} || ' ';


# Print details of installed modules on STDERR

diag(sprintf("\r# %-30s %s\n", 'Package', 'Version'));
foreach my $module (@mod_list) {
  $version{$module} = 'Not Installed' unless(defined($version{$module}));
  $version{$module} .= " (default parser)" if($module eq $default_parser);
  $version{$module} .= " (preferred parser)" if($module eq $preferred_parser);
  diag(sprintf(" %-30s %s\n", $module, $version{$module}));
}

# Housekeeping

ok(1, "Dumped config");