|
Packit |
f92f8e |
use strict;
|
|
Packit |
f92f8e |
use warnings;
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
{
|
|
Packit |
f92f8e |
package TEST;
|
|
Packit |
f92f8e |
use parent qw(Locale::Maketext);
|
|
Packit |
f92f8e |
}
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
{
|
|
Packit |
f92f8e |
package TEST::en;
|
|
Packit |
f92f8e |
use parent -norequire, qw(TEST);
|
|
Packit |
f92f8e |
our %Lexicon = (
|
|
Packit |
f92f8e |
_AUTO => 1,
|
|
Packit |
f92f8e |
);
|
|
Packit |
f92f8e |
}
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
package main;
|
|
Packit |
f92f8e |
use strict;
|
|
Packit |
f92f8e |
use warnings;
|
|
Packit |
f92f8e |
use Test::More tests => 12;
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
my $lh = TEST->get_handle('en');
|
|
Packit |
f92f8e |
$@ = "foo";
|
|
Packit |
f92f8e |
is($lh->maketext("This works fine"), "This works fine", "straight forward _AUTO string test");
|
|
Packit |
f92f8e |
is($@, "foo", q{$@ isn't altered during calls to maketext});
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
my $err = eval {
|
|
Packit |
f92f8e |
$lh->maketext('this is ] an error');
|
|
Packit |
f92f8e |
};
|
|
Packit |
f92f8e |
is($err, undef, "no return from eval");
|
|
Packit |
f92f8e |
like("$@", qr/Unbalanced\s'\]',\sin/ms, '$@ shows that ] was unbalanced');
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
# _try_use doesn't pollute $@
|
|
Packit |
f92f8e |
$@ = 'foo2';
|
|
Packit |
f92f8e |
is(Locale::Maketext::_try_use("This::module::does::not::exist"), 0, "0 return if module is missing when _try_use is called");
|
|
Packit |
f92f8e |
is($@, 'foo2', '$@ is unmodified by a failed _try_use');
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
# _try_use doesn't pollute $@ for valid call
|
|
Packit |
f92f8e |
$@ = '';
|
|
Packit |
f92f8e |
is(Locale::Maketext::_try_use("Locale::Maketext::Guts"), 1, "1 return using valid module Locale::Maketext::Guts");
|
|
Packit |
f92f8e |
is($@, '', '$@ is clean after failed _try_use');
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
# failure_handler_auto handles $@ locally.
|
|
Packit |
f92f8e |
{
|
|
Packit |
f92f8e |
$@ = '';
|
|
Packit |
f92f8e |
my $err = '';
|
|
Packit |
f92f8e |
$lh->{failure_lex}->{"foo_fail"} = sub {die("fail message");};
|
|
Packit |
f92f8e |
$err = eval {$lh->failure_handler_auto("foo_fail")};
|
|
Packit |
f92f8e |
is($err, undef, "die event calling failure_handler on bad code");
|
|
Packit |
f92f8e |
like($@, qr/^Error in maketexting "foo_fail":/ms, "\$@ is re-written as expected.");
|
|
Packit |
f92f8e |
}
|
|
Packit |
f92f8e |
|
|
Packit |
f92f8e |
$@ = 'foo';
|
|
Packit |
f92f8e |
is($lh->maketext('Eval error: [_1]', $@), 'Eval error: foo', "Make sure \$@ is localized when passed to maketext");
|
|
Packit |
f92f8e |
is($@, 'foo', "\$@ wasn't modified during call");
|