AppConfig
view release on metacpan or search on metacpan
'cruft' => {
ARGCOUNT => ARGCOUNT_NONE,
DEFAULT => 1,
},
'debug' => {
ARGCOUNT => ARGCOUNT_NONE,
DEFAULT => 1,
},
'chance' => {
ARGCOUNT => ARGCOUNT_NONE,
DEFAULT => 1,
},
'hope' => {
ARGCOUNT => ARGCOUNT_NONE,
DEFAULT => 1,
},
'drink' => {
ARGCOUNT => ARGCOUNT_LIST,
},
'name' => {
ARGCOUNT => ARGCOUNT_HASH,
},
'here_empty' => {
ARGCOUNT => ARGCOUNT_NONE,
},
'here_hash' => {
ARGCOUNT => ARGCOUNT_HASH,
},
);
# turn debugging on to trigger debugging in $cfgfile
# $state->_debug(1);
my $cfgfile = AppConfig::File->new($state);
# AppConfig::State can be turned off, AppConfig::File debugging remains on.
# $state->_debug(0);
ok( defined $state, 'state defined' );
ok( defined $cfgfile, 'cfgfile defined' );
ok( $cfgfile->parse(\*DATA), 'parsed' );
#------------------------------------------------------------------------
# test variable values got set with correct expansion
#------------------------------------------------------------------------
# html has no embedded variables
ok( $state->html() eq 'public_html' );
# cash should *not* be expanded (EXPAND_NONE) to protect '$'
ok( $state->cash() eq 'I won $200!' );
SKIP: {
skip("User does not have a home directory", 2) unless defined $ENV{HOME};
# hdir expands variables ($html) but not uids (~)
ok( $state->hdir() eq '~/public_html' );
# see if "[~/$html]" matches "[${HOME}/$html]". It may fail if your
# platform doesn't provide getpwuid(). See AppConfig::Sys for details.
my ($one, $two) =
$state->same() =~ / \[ ( [^\]]+ ) \] \s+=>\s+ \[ ( [^\]]+ ) \]/gx;
is( $one, $two, 'one is two' );
}
# test that "split" came out the same as "same"
is( $state->same(), $state->split(), 'same split' );
# test that "verbose" got set to 1 when no parameter was provided
is( $state->verbose(), 1, 'verbose' );
# test that debug got turned off by explicit (debug = 0)
ok( ! $state->debug(), 'not debuggin' );
# test that cruft got turned off by "nocruft"
ok( ! $state->cruft(), 'not crufty' );
ok( $state->nocruft(), 'nocruft' );
# test that chance got turned on by "nochance = 0"
ok( $state->chance(), 'there is a chance' );
ok( ! $state->nochance(), 'there is not no chance' );
# test that hope got turned on by "nohope = off"
ok( $state->hope(), 'there is hope' );
ok( ! $state->nohope(), 'there is not no hope' );
# check auto-creation of variables and variable expansion of
# [block] variable
is( $state->define_user(), 'abw', 'user is abw');
is( $state->define_home(), '/home/abw', 'home is /home/abw' );
is( $state->define_chez(), '/chez/abw', 'chez is /chez/abw' );
is( $state->define_choz(), 'foo#bar', 'choz is set' );
is( $state->define_chuz(), '^#', 'chuz is set' );
#21 - #22: test $state->varlist() without strip option
my (%set, $expect, $got);
%set = $state->varlist('^define_');
$expect = 'define_chaz=/$chez/#chaz, define_chez=/chez/abw, define_choz=foo#bar, define_chuz=^#, define_home=/home/abw, define_user=abw';
$got = join(', ', map { "$_=$set{$_}" } sort keys %set);
is( scalar keys %set, 6, 'five keys' );
is( $expect, $got, 'varlist' );
#23 - #24: test $state->varlist() with strip option
%set = $state->varlist('^define_', 1);
$expect = 'chaz=/$chez/#chaz, chez=/chez/abw, choz=foo#bar, chuz=^#, home=/home/abw, user=abw';
$got = join(', ', map { "$_=$set{$_}" } sort keys %set);
is( scalar keys %set, 6, 'five stripped keys');
is( $expect, $got, 'stripped varlist' );
#25 - #27: test ARGCOUNT_LIST
my $drink = $state->drink();
is( $drink->[0], 'coffee', 'coffee');
is( $drink->[1], 'beer', 'beer');
is( $drink->[2], 'water', 'water');
#28 - #31: test ARGCOUNT_HASH
my $name = $state->name();
my $crew = join(", ", sort keys %$name);
( run in 0.476 second using v1.01-cache-2.11-cpan-39bf76dae61 )