X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FConfig-Any.git;a=blobdiff_plain;f=t%2F61-features.t;h=62bd59e1d792ca1793d92858fd3823d60ee8f71d;hp=c1d983d643565330e0f99a186886fdb955105d53;hb=aa7bd7c30e544ebbb418c2a0508523800e790836;hpb=92a04e78451078b33f75e7c44d247b024c27b4f7 diff --git a/t/61-features.t b/t/61-features.t index c1d983d..62bd59e 100644 --- a/t/61-features.t +++ b/t/61-features.t @@ -4,7 +4,7 @@ use warnings; $|++; -use Test::More tests => 10; +use Test::More tests => 14; use Scalar::Util qw(blessed reftype); use Config::Any; @@ -13,42 +13,71 @@ use Config::Any::INI; our $cfg_file = 't/conf/conf.foo'; eval { Config::Any::INI->load( $cfg_file ); }; + SKIP: { - skip "File loading backend for INI not found", 10 if $@; + skip "File loading backend for INI not found", 14 if $@; + + my $struct; # used to make sure parsing works for arrays and hashes - ok( my $c_arr = Config::Any->load_files( + # force_plugins + { + my $result = Config::Any->load_files( { files => [ $cfg_file ], force_plugins => [ qw(Config::Any::INI) ] } - ), - "load file with parser forced" - ); + ); - ok( my $c = $c_arr->[ 0 ], "load_files returns an arrayref" ); + ok( $result, 'load file with parser forced' ); - ok( ref $c, "load_files arrayref contains a ref" ); - my $ref = blessed $c ? reftype $c : ref $c; - is( substr( $ref, 0, 4 ), "HASH", "hashref" ); + ok( my $first = $result->[ 0 ], 'load_files returns an arrayref' ); + ok( ref $first, 'load_files arrayref contains a ref' ); - my ( $name, $cfg ) = each %$c; - is( $name, $cfg_file, "filename matches" ); + my $ref = blessed $first ? reftype $first : ref $first; + is( substr( $ref, 0, 4 ), 'HASH', 'hashref' ); - my $cfgref = blessed $cfg ? reftype $cfg : ref $cfg; - is( substr( $cfgref, 0, 4 ), "HASH", "hashref cfg" ); + $struct = $first; - is( $cfg->{ name }, 'TestApp', "appname parses" ); - is( $cfg->{ Component }{ "Controller::Foo" }->{ foo }, - 'bar', "component->cntrlr->foo = bar" ); - is( $cfg->{ Model }{ "Model::Baz" }->{ qux }, - 'xyzzy', "model->model::baz->qux = xyzzy" ); + my ( $name, $cfg ) = %$first; + is( $name, $cfg_file, 'filenames match' ); - ok( my $c_arr_2 = Config::Any->load_files( - { files => [ $cfg_file ], - force_plugins => [ qw(Config::Any::INI) ], - use_ext => 1 + my $cfgref = blessed $cfg ? reftype $cfg : ref $cfg; + is( substr( $cfgref, 0, 4 ), 'HASH', 'hashref cfg' ); + + is( $cfg->{ name }, 'TestApp', 'appname parses' ); + is( $cfg->{ Component }{ "Controller::Foo" }->{ foo }, + 'bar', 'component->cntrlr->foo = bar' ); + is( $cfg->{ Model }{ "Model::Baz" }->{ qux }, + 'xyzzy', 'model->model::baz->qux = xyzzy' ); + } + + # flatten_to_hash + { + my $result = Config::Any->load_files( + { files => [ $cfg_file ], + force_plugins => [ qw(Config::Any::INI) ], + flatten_to_hash => 1 } - ), - "load file with parser forced" - ); + ); + + ok( $result, 'load file with parser forced, flatten to hash' ); + ok( ref $result, 'load_files hashref contains a ref' ); + + my $ref = blessed $result ? reftype $result : ref $result; + is( substr( $ref, 0, 4 ), 'HASH', 'hashref' ); + + is_deeply( $result, $struct, 'load_files return an hashref (flatten_to_hash)' ); + } + + # use_ext + { + ok( my $result = Config::Any->load_files( + { files => [ $cfg_file ], + force_plugins => [ qw(Config::Any::INI) ], + use_ext => 1 + } + ), + "load file with parser forced" + ); + } }