{
my
$e
;
{
try
{
has
'+foo'
=> (
is
=>
'ro'
);
}
catch
{
$e
=
$_
;
};
}
ok(
$e
,
q{got an exception from a bad has '+foo' declaration}
);
like(
$e
->as_string,
qr/\QCould not find an attribute by the name of 'foo' to inherit from in Foo/
,
'stringification includes the error message'
);
like(
$e
->as_string,
qr/\s+Moose::has/
,
'stringification includes the call to Moose::has'
);
unlike(
$e
->as_string,
qr/Moose::Meta/
,
'stringification does not include internal calls to Moose meta classes'
);
try
{
Foo->meta->clone_object( [] );
}
catch
{
$e
=
$_
;
};
like(
$e
->as_string,
qr/Class::MOP::Class::clone_object/
,
'exception include first Class::MOP::Class frame'
);
unlike(
$e
->as_string,
qr/Class::MOP::Mixin::_throw_exception/
,
'exception does not include internal calls toClass::MOP::Class meta classes'
);
}
local
$ENV
{MOOSE_FULL_EXCEPTION} = 1;
{
my
$e
;
{
try
{
has
'+foo'
=> (
is
=>
'ro'
);
}
catch
{
$e
=
$_
;
};
}
ok(
$e
,
q{got an exception from a bad has '+foo' declaration}
);
like(
$e
->as_string,
qr/\QCould not find an attribute by the name of 'foo' to inherit from in Bar/
,
'stringification includes the error message'
);
like(
$e
->as_string,
qr/\s+Moose::has/
,
'stringification includes the call to Moose::has'
);
like(
$e
->as_string,
qr/Moose::Meta/
,
'stringification includes internal calls to Moose meta classes when MOOSE_FULL_EXCEPTION env var is true'
);
try
{
Foo->meta->clone_object( [] );
}
catch
{
$e
=
$_
;
};
like(
$e
->as_string,
qr/Class::MOP::Class::clone_object/
,
'exception include first Class::MOP::Class frame'
);
like(
$e
->as_string,
qr/Class::MOP::Mixin::_throw_exception/
,
'exception includes internal calls toClass::MOP::Class meta classes when MOOSE_FULL_EXCEPTION env var is true'
);
}
done_testing;