Config-General-Hierarchical
view release on metacpan or search on metacpan
t/99_dump.t view on Meta::CPAN
# testscript for Config::General::Hierarchical::Dump module
#
# needs to be invoked using the command "make test" from
# the Config::General::Hierarchical source directory.
#
# under normal circumstances every test should succeed.
my $tests;
my $skip;
BEGIN {
$tests = 59;
}
use Test::More tests => $tests;
use Test::Differences;
require_ok Config::General::Hierarchical::Dump;
require_ok Config::General::Hierarchical::DumpTest;
`echo "#!$^X -MConfig::General::Hierarchical::Dump\nvariable value\n<node>\n key value\n keys\n</node>\ndefined" > t/dump.conf`;
`chmod 755 t/dump.conf`;
is( `t/dump.conf`, <<EOF, 'self execution' );
defined = '';
node->key = 'value';
node->keys = '';
variable = 'value';
EOF
my $cfg = Config::General::Hierarchical->new( file => 't/dump.conf' );
my $res = '';
eval { $res = $cfg->_defined; };
is( $@, '', 'compatibility 1' );
is( $res, '', 'compatibility 2' );
like(
Config::General::Hierarchical::Dump->do_all( 't/dump_error.conf', [] ),
qr{Parsing error: Config::General::Hierarchical: Config::General: Block "<node>" has no EndBlock statement \(level: 2, chunk 1\)\!\nin file: .+/t/dump_error.conf\n at .+/Hierarchical/Dump.pm line \d+\n$},
'parse error'
);
is(
join(
'', Config::General::Hierarchical::Dump->do_all( 't/dump.conf', [] )
),
<<EOF, 'execution' );
defined = '';
node->key = 'value';
node->keys = '';
variable = 'value';
EOF
my $path = ".+/t/";
my @out = Config::General::Hierarchical::Dump->do_all( 't/dump.conf', ['-f'] );
like( $out[0], qr{Configuration files base dir: $path}, '-f 1' );
like( $out[1], qr{defined = ''; dump.conf}, '-f 2' );
like( $out[2], qr{node->key = 'value'; dump.conf}, '-f 3' );
like( $out[3], qr{node->keys = ''; dump.conf}, '-f 4' );
like( $out[4], qr{variable = 'value'; dump.conf}, '-f 5' );
@out = Config::General::Hierarchical::Dump->do_all( 't/dump.conf', ['--file'] );
like( $out[0], qr{Configuration files base dir: $path}, '--file 1' );
like( $out[1], qr{defined = ''; dump.conf}, '--file 2' );
like( $out[2], qr{node->key = 'value'; dump.conf}, '--file 3' );
like( $out[3], qr{node->keys = ''; dump.conf}, '--file 4' );
like( $out[4], qr{variable = 'value'; dump.conf}, '--file 5' );
@out = Config::General::Hierarchical::Dump->do_all( 't/dump.conf', ['-fl'] );
like( $out[0], qr{Configuration files base dir: $path}, '-fl 1 1' );
like( $out[1], qr{defined = ''; dump.conf}, '-fl 1 2' );
like( $out[2], qr{node->key = 'value'; dump.conf}, '-fl 1 3' );
like( $out[3], qr{node->keys = ''; dump.conf}, '-fl 1 4' );
like( $out[4], qr{variable = 'value'; dump.conf}, '-fl 1 5' );
@out =
Config::General::Hierarchical::Dump->do_all( 't/dump.conf',
[ '--file', '--fixed-length' ] );
like( $out[0], qr{Configuration files base dir: $path}, '-fl 2 1' );
like( $out[1], qr{defined = ''; dump.conf}, '-fl 2 2' );
like( $out[2], qr{node->key = 'value'; dump.conf}, '-fl 2 3' );
like( $out[3], qr{node->keys = ''; dump.conf}, '-fl 2 4' );
like( $out[4], qr{variable = 'value'; dump.conf}, '-fl 2 5' );
@out = Config::General::Hierarchical::Dump->do_all( 't/dump.conf', ['-l'] );
like( $out[0], qr{defined = '';}, '-l 1' );
like( $out[1], qr{node->key = 'value';}, '-l 2' );
like( $out[2], qr{node->keys = '';}, '-l 3' );
like( $out[3], qr{variable = 'value';}, '-l 4' );
is(
join( '',
Config::General::Hierarchical::Dump->do_all( 't/dump.conf', ['-h'] ) ),
<<EOF, '-h' );
Usage: t/99_dump.t
Dumps the Config::General::Hierarchical configuration file itself
-c, --check if present, prints only the variables that do
not respect syntax constraint
-f, --file shows in which file variables are defined
-l, --fixed-length formats output as fixed length fields
-h, --help prints this help and exits
-j, --json prints output as json
EOF
is(
join(
'',
Config::General::Hierarchical::Dump->do_all(
't/dump.conf', ['--help']
)
),
<<EOF, '--help' );
Usage: t/99_dump.t
Dumps the Config::General::Hierarchical configuration file itself
-c, --check if present, prints only the variables that do
not respect syntax constraint
-f, --file shows in which file variables are defined
-l, --fixed-length formats output as fixed length fields
-h, --help prints this help and exits
-j, --json prints output as json
EOF
`mkdir -p t/dir`;
`echo "#!$^X -MConfig::General::Hierarchical::DumpTest\ninherits ../dump_inherited.conf\nvalue value\n<node>\n undefined key\n undefined value\n</node>\narray 1\narray 2" > t/dir/dump_inherits.conf`;
`chmod 755 t/dir/dump_inherits.conf`;
is( `t/dir/dump_inherits.conf`, <<EOF, 'inherited self execution' );
array = ( '1', '2' );
defined = 'really defined';
node->array = ( 's1', 's2' );
node->key = undef;
node->value = error;
value = error;
EOF
is(
join(
'',
Config::General::Hierarchical::DumpTest->do_all(
't/dir/dump_inherits.conf', ['-l']
)
),
<<EOF, 'execution 2' );
array = ( '1', '2' );
defined = 'really defined';
node->array = ( 's1', 's2' );
node->key = undef;
node->value = error;
value = error;
EOF
@out =
Config::General::Hierarchical::DumpTest->do_all( 't/dir/dump_inherits.conf',
['-fl'] );
like( $out[0], qr{Configuration files base dir: $path}, '-fl 2 1' );
like( $out[1], qr{Files inheritance structure:}, '-fl 2 2' );
like( $out[2], qr{dir/dump_inherits.conf}, '-fl 2 3' );
like( $out[3], qr{ dump_inherited.conf}, '-fl 2 4' );
like( $out[4], qr{array = \( '1', '2' \); dir/dump_inherits.conf},
'-fl 2 5' );
like( $out[5], qr{defined = 'really defined'; dump_inherited.conf},
'-fl 2 6' );
like( $out[6], qr{node->array = \( 's1', 's2' \); dump_inherited.conf},
'-fl 2 7' );
like( $out[7], qr{node->key = undef; dir/dump_inherits.conf},
'-fl 2 8' );
like( $out[8], qr{node->value = error; dir/dump_inherits.conf},
'-fl 2 9' );
like( $out[9], qr{value = error; dir/dump_inherits.conf},
'-fl 2 10' );
is( scalar @out, 10, '-fl 2 11' );
is(
Config::General::Hierarchical::DumpTest->do_all(
't/dir/dump_inherits.conf', ['-j']
),
'{"array":["1","2"],"defined":"really defined","node":{"array":["s1","s2"],"key":null,"value":"error"},"value":"error"}',
'-j'
);
is(
Config::General::Hierarchical::DumpTest->do_all(
't/dir/dump_inherits.conf', ['--json']
),
'{"array":["1","2"],"defined":"really defined","node":{"array":["s1","s2"],"key":null,"value":"error"},"value":"error"}',
t/99_dump.t view on Meta::CPAN
is(
join(
'',
Config::General::Hierarchical::DumpTest->do_all(
't/dir/dump_inherits.conf', ['-c']
)
),
"node->value = error;\nvalue = error;\n",
'-c'
);
is(
join(
'',
Config::General::Hierarchical::DumpTest->do_all(
't/dir/dump_inherits.conf', ['--check']
)
),
"node->value = error;\nvalue = error;\n",
'--check'
);
is(
join(
'',
Config::General::Hierarchical::Dump->do_all(
't/dump_eof.conf', ['-l']
)
),
"var1 = <<EOF;\na\nb\nc//--new line added\nEOF\nvar2 = <<EOF;\na\nb\nEOF\n",
'eof'
);
eq_or_diff(
[
unpack 'C*',
join(
'',
Config::General::Hierarchical::Dump->do_all(
't/dump_substitutions.conf', []
)
)
],
[ 118, 32, 61, 32, 39, 36, 92, 7, 8, 12, 13, 9, 11, 92, 100, 39, 59, 10 ],
'subs'
);
is(
join(
'',
Config::General::Hierarchical::DumpTest->do_all(
't/dump_substitutions2.conf', ['-l']
)
),
"node->array = *;\n* = ( 'a\nb', 'a\nb\n' );\nnode->key = 'ab';\n",
'subs 2'
);
`echo "#!$^X -MConfig::General::Hierarchical::Dump=Config::General::Hierarchical::Test\nvariable value\n<node>\n key value\n keys\n</node>\ndefined\nvalue a" > t/import.conf`;
`chmod 755 t/import.conf`;
is( `t/import.conf`, <<EOF, 'import param 1' );
defined = '';
node->key = 'value';
node->keys = '';
value = error;
variable = 'value';
EOF
is(
join(
'',
Config::General::Hierarchical::Dump->do_all(
't/import.conf', [], 'Config::General::Hierarchical::Test'
)
),
<<EOF, 'import param 2' );
defined = '';
node->key = 'value';
node->keys = '';
value = error;
variable = 'value';
EOF
like(
join( '',
Config::General::Hierarchical::Dump->do_all( 't.conf', ['help'] ) ),
qr{Unknown options 'help'},
'unknown option'
);
like(
join(
'', Config::General::Hierarchical::Dump->do_all( 't.conf', ['-cz'] )
),
qr{Unknown options '-z'},
'unknown short option'
);
like(
join( '',
Config::General::Hierarchical::Dump->do_all( 't.conf', ['--cz'] ) ),
qr{Unknown options '--cz'},
'unknown long option'
);
package other;
use Test::More;
use_ok Config::General::Hierarchical::Dump;
package main;
$0 = '';
use_ok Config::General::Hierarchical::Dump;
ok( 0, 'not execute' );
( run in 1.733 second using v1.01-cache-2.11-cpan-5837b0d9d2c )