1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
use Config::Std;
use Test::More 'no_plan';
my $input_file = 'test.cfg';
my %data = (
# Default section...
'' => {
'def1' => 'def val 1',
'def 2' => 'def val 2',
'def 3 ml' => "def val 3\nacross several\n lines",
'def 3' => 'def val 3',
'def 4' => 'def val 4',
},
# Named section...
'Named' => {
'hi there' => q{What's your name???},
'list' => [qw(a list of values), 'all different'],
},
# Complex named section...
'Complex named!!!' => {
123456789 => 'zero',
'%^$%$#%' => 'curses',
},
);
my %config;
ok eval{ read_config $input_file => %config } => 'Read succeeded';
diag( $@ ) if $@;
is_deeply \%data, \%config => 'Data correct';
$config{Extra}{'key 1'} = 'extra key 1';
push @{$config{Named}{list}}, 'an extra line';
ok eval{ write_config %config } => 'Write succeeded';
ok open(my $fh, '<', $input_file) => 'File opened';
ok my @config = <$fh> => 'File read';
ok my @extra = <DATA> => 'DATA loaded';
is_deeply [@extra[-4..-1]], [@config[-4..-1]] => 'Extra content correct';
__DATA__
[Extra]
key 1: extra key 1
|