Сообщение карпа из неправильного места с помощью @CARP_NOT (Moose и Method Modifiers)
Это дополнительный вопрос к предупреждениям:warnif("устарел"…) с карпом?,
вот фрагмент моего кода от Business::CyberSource на Github
примечание: предыдущий ответ (в предыдущем вопросе) и добавление @CARP_NOT
продемонстрировали, что warnings::warnif
использования carp
, Я попытался заменить карпа напрямую, поведение было точно таким же.
our @CARP_NOT = ( __PACKAGE__, qw( Class::MOP::Method::Wrapped ) );
around BUILDARGS => sub {
my $orig = shift;
my $class = shift;
my $args = $class->$orig( @_ );
if ( exists $args->{username} ) {
warnings::warnif('deprecated',
'`username` is deprecated, use `user` instead'
);
Но когда я называю этот код
use strict;
use warnings;
use Test::More;
use Business::CyberSource::Client;
my $class = 'Business::CyberSource::Client';
my $client
= new_ok( $class => [{
username => $ENV{PERL_BUSINESS_CYBERSOURCE_USERNAME} || 'test',
password => $ENV{PERL_BUSINESS_CYBERSOURCE_PASSWORD} || 'test',
production => 0,
}]);
Ошибка все еще сообщается из неправильного места (хотя, по крайней мере, не из Class::MOP::Method::Wrapped
)
t/new-client.t .. `username` is deprecated, use `user` instead at constructor Business::CyberSource::Client::new (defined at /home/xenoterracide/Documents/Business-CyberSource/lib/Business/CyberSource/Client.pm line 314) line 6.
Как я могу сделать этот отчет из правильного номера строки в тестовом файле? (примечание: поведение не изменилось, если бы я позвонил ->new
непосредственно вместо использования new_ok