App-Easer
view release on metacpan or search on metacpan
t/V2/24.hash-sources.t view on Meta::CPAN
{
fcmd1 => 'FOOBAR',
fcmd2 => 'BAR',
fcmd3 => 'this!',
fenv => 'AHOY',
ffile => 'this!',
fdefault => 'this!',
}
);
test_run($app,
[ qw< --fcmd1 FOO foo --fcmd2 BAR bar --fcmd1 FOOBAR --fcmd3 BAZ > ],
{ qw< FENV AHOY > }, 'bar')
->no_exceptions('second-level subcommand, one arg up, overriddine, one sub, one subsub env set')
->name_is('bar')
->conf_is(
{
fcmd1 => 'FOOBAR',
fcmd2 => 'BAR',
fcmd3 => 'BAZ',
fenv => 'AHOY',
ffile => 'this!',
fdefault => 'this!',
}
);
test_run($app,
[ qw< --fcmd1 FOO foo --fcmd2 BAR --config >, "$file_prefix.1.json", qw< bar --fcmd1 FOOBAR --fcmd3 BAZ > ],
{ qw< FENV AHOY > }, 'bar')
->no_exceptions('second-level subcommand, one arg up, overridden, one sub plus config, one subsub env set, one from config file')
->name_is('bar')
->conf_is(
{
fcmd1 => 'FOOBAR',
fcmd2 => 'BAR',
fcmd3 => 'BAZ',
fenv => 'AHOY',
ffile => 'from_general_configuration_file',
fdefault => 'this!',
config => "$file_prefix.1.json",
}
);
done_testing();
sub logger ($phase) {
state $enc = JSON::PP->new->ascii->canonical->pretty;
return sub ($self) {
my $name = $self->name;
LocalTester::command_execute($self) if $phase eq 'execute';
my @stack;
my $instance = $self;
while (defined($instance)) {
my @args = $instance->residual_args;
my $ch = $instance->config_hash;
my $fch = $instance->_rwn('config') // {};
unshift @stack,
{ args => \@args, config => $ch, full_config => $fch };
$instance = $instance->parent;
}
say {*STDERR} "$phase $name " . $enc->encode(\@stack);
};
}
( run in 1.675 second using v1.01-cache-2.11-cpan-b16cb0d3907 )