blob: 4266804ca993017ea420476e5bef6c7d25aea72a [file] [log] [blame]
#!/usr/bin/perl -w
use strict;
use Test::More 'no_plan';
sub mytest {
return $_[0];
}
is(mytest(q{foo}),q{foo},"Mytest returns input");
my $return = eval { mytest(undef); };
ok(!defined($return), "mytest returns undef without autodie");
is($@,"","Mytest doesn't throw an exception without autodie");
$return = eval {
use autodie qw(mytest);
mytest('foo');
};
is($return,'foo',"Mytest returns input with autodie");
is($@,"","No error should be thrown");
$return = eval {
use autodie qw(mytest);
mytest(undef);
};
isa_ok($@,'autodie::exception',"autodie mytest/undef throws exception");
# We set initial values here because we're expecting $data to be
# changed to undef later on. Having it as undef to begin with means
# we can't see mytest(undef) working correctly.
my ($data, $data2) = (1,1);
eval {
use autodie qw(mytest);
{
no autodie qw(mytest);
$data = mytest(undef);
$data2 = mytest('foo');
}
};
is($@,"","no autodie can counter use autodie for user subs");
ok(!defined($data), "mytest(undef) should return undef");
is($data2, "foo", "mytest(foo) should return foo");
eval {
mytest(undef);
};
is($@,"","No lingering failure effects");
$return = eval {
mytest("bar");
};
is($return,"bar","No lingering return effects");