changelog
[p5sagit/Config-Any.git] / t / 54-xml.t
CommitLineData
5a2e0210 1use strict;
2use warnings;
f0e3c221 3
5a2e0210 4use Test::More;
67a1cd50 5use Config::Any;
f0e3c221 6use Config::Any::XML;
7
5a2e0210 8if ( !Config::Any::XML->is_supported ) {
9 plan skip_all => 'XML format not supported';
10}
11else {
67a1cd50 12 plan tests => 8;
5a2e0210 13}
f0e3c221 14
5a2e0210 15{
16 my $config = Config::Any::XML->load( 't/conf/conf.xml' );
f0e3c221 17 ok( $config );
18 is( $config->{ name }, 'TestApp' );
19}
5770ffc0 20
21# test invalid config
9d569cf0 22SKIP: {
dcfb1d1d 23 my $broken_libxml
24 = eval { require XML::LibXML; XML::LibXML->VERSION lt '1.59'; };
9d569cf0 25 skip 'XML::LibXML < 1.58 has issues', 2 if $broken_libxml;
26
dcfb1d1d 27 local $SIG{ __WARN__ } = sub { }; # squash warnings from XML::Simple
77f14cda 28 my $file = 't/invalid/conf.xml';
5770ffc0 29 my $config = eval { Config::Any::XML->load( $file ) };
30
31 ok( !$config, 'config load failed' );
dcfb1d1d 32 ok( $@, "error thrown ($@)" );
5770ffc0 33}
bb941906 34
35# test conf file with array ref
36{
37 my $file = 't/conf/conf_arrayref.xml';
38 my $config = eval { Config::Any::XML->load( $file ) };
39
40 ok( $config, 'config loaded' );
41 ok( !$@, 'no error thrown' );
42}
67a1cd50 43
44# parse error generated on invalid config
45{
46 my $file = 't/invalid/conf.xml';
47 my $config = eval { Config::Any->load_files( { files => [$file], use_ext => 1} ) };
48
49 ok( !$config, 'config load failed' );
50 ok( $@, "error thrown ($@)" );
51}
52