X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=t%2F51-ini.t;h=6848004d51bca8f03aa0b8a3c93d907b85c9b4d1;hp=c7d6036b8b9233abe3db5aa82e9b8687968a5ec0;hb=aa7bd7c30e544ebbb418c2a0508523800e790836;hpb=92a04e78451078b33f75e7c44d247b024c27b4f7 diff --git a/t/51-ini.t b/t/51-ini.t index c7d6036..6848004 100644 --- a/t/51-ini.t +++ b/t/51-ini.t @@ -1,30 +1,57 @@ -use Test::More tests => 9; +use strict; +use warnings; +use Test::More; use Config::Any::INI; -my $config = eval { Config::Any::INI->load( 't/conf/conf.ini' ) }; -my $simpleconfig = eval { Config::Any::INI->load( 't/conf/conf2.ini' ) }; +if ( !Config::Any::INI->is_supported ) { + plan skip_all => 'INI format not supported'; +} +else { + plan tests => 13; +} -SKIP: { - skip "Couldn't Load INI plugin", 6 if $@; - ok( $config, "loaded INI config #1" ); +{ + my $config = Config::Any::INI->load( 't/conf/conf.ini' ); + ok( $config, 'config loaded' ); is( $config->{ name }, 'TestApp', "toplevel key lookup succeeded" ); - is( $config->{ Component }->{ Controller::Foo }->{ foo }, + is( $config->{ Component }->{ 'Controller::Foo' }->{ foo }, 'bar', "nested hashref hack lookup succeeded" ); +} - ok( $simpleconfig, "loaded INI config #1" ); - is( $simpleconfig->{ name }, 'TestApp', "toplevel key lookup succeeded" ); - is( $simpleconfig->{ Controller::Foo }->{ foo }, +{ + my $config = Config::Any::INI->load( 't/conf/conf2.ini' ); + ok( $config, 'config loaded' ); + is( $config->{ name }, 'TestApp', "toplevel key lookup succeeded" ); + is( $config->{ 'Controller::Foo' }->{ foo }, 'bar', "nested hashref hack lookup succeeded" ); } -$Config::Any::INI::MAP_SECTION_SPACE_TO_NESTED_KEY = 0; -my $unspaced_config = eval { Config::Any::INI->load( 't/conf/conf.ini' ); }; -SKIP: { - skip "Couldn't load INI plugin", 3 if $@; - ok( $unspaced_config, "loaded INI config #1 in no-map-space mode" ); - is( $unspaced_config->{ name }, - 'TestApp', "toplevel key lookup succeeded" ); - is( $unspaced_config->{ 'Component Controller::Foo' }->{ foo }, +{ + local $Config::Any::INI::MAP_SECTION_SPACE_TO_NESTED_KEY = 0; + my $config = Config::Any::INI->load( 't/conf/conf.ini' ); + ok( $config, 'config loaded (no-map-space mode)' ); + is( $config->{ name }, 'TestApp', "toplevel key lookup succeeded" ); + is( $config->{ 'Component Controller::Foo' }->{ foo }, 'bar', "unnested key lookup succeeded" ); } + +{ + my $config = Config::Any::INI->load( 't/conf/subsections.ini' ); + + my %expected + = ( section1 => + { a => 1, subsection1 => { b => 2 }, subsection2 => { c => 3 } } + ); + ok( $config, 'config loaded' ); + is_deeply( $config, \%expected, 'subsections parsed properly' ); +} + +# test invalid config +{ + my $file = 't/invalid/conf.ini'; + my $config = eval { Config::Any::INI->load( $file ) }; + + ok( !$config, 'config load failed' ); + ok( $@, "error thrown ($@)" ); +}