summaryrefslogtreecommitdiff
path: root/t/0_Config.t
diff options
context:
space:
mode:
Diffstat (limited to 't/0_Config.t')
-rw-r--r--t/0_Config.t62
1 files changed, 62 insertions, 0 deletions
diff --git a/t/0_Config.t b/t/0_Config.t
new file mode 100644
index 0000000..1fcbf54
--- /dev/null
+++ b/t/0_Config.t
@@ -0,0 +1,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");