Commit | Line | Data |
5a2e0210 |
1 | use strict; |
2 | use warnings; |
f0e3c221 |
3 | |
5a2e0210 |
4 | use Test::More; |
67a1cd50 |
5 | use Config::Any; |
f0e3c221 |
6 | use Config::Any::XML; |
7 | |
5a2e0210 |
8 | if ( !Config::Any::XML->is_supported ) { |
9 | plan skip_all => 'XML format not supported'; |
10 | } |
11 | else { |
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 |
22 | SKIP: { |
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 | |