CLI-Simple
view release on metacpan or search on metacpan
t/log-level-precedence.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use English qw(-no_match_vars);
use Test::More;
use CLI::Simple;
plan skip_all => 'no Log::Log4perl installed'
if !eval { require Log::Log4perl; };
{
package Local::LogLevelTest;
use parent qw(CLI::Simple);
__PACKAGE__->use_log4perl( level => 'error' );
}
my $commands = {
plain => sub { return 0 },
logged => [ sub { return 0 }, 'debug' ],
};
subtest 'application default' => sub {
local @ARGV = ('plain');
my $cli = Local::LogLevelTest->new(
option_specs => ['log-level=s'],
commands => $commands,
);
is( $cli->get_log_level, 'error', 'application default selected' );
is( $cli->get_logger->level, $Log::Log4perl::ERROR, 'logger uses application default' );
};
subtest 'command-specific level' => sub {
local @ARGV = ('logged');
my $cli = Local::LogLevelTest->new(
option_specs => ['log-level=s'],
commands => $commands,
);
is( $cli->get_log_level, 'debug', 'command level overrides default' );
is( $cli->get_logger->level, $Log::Log4perl::DEBUG, 'logger uses command level' );
};
subtest 'explicit CLI level' => sub {
local @ARGV = ( '--log-level', 'warn', 'logged' );
my $cli = Local::LogLevelTest->new(
option_specs => ['log-level=s'],
commands => $commands,
);
is( $cli->get_log_level, 'warn', 'CLI level overrides command level' );
is( $cli->get_logger->level, $Log::Log4perl::WARN, 'logger uses CLI level' );
};
done_testing;
( run in 1.429 second using v1.01-cache-2.11-cpan-ac8be02dad9 )