1use strict; 2use warnings; 3 4sub run_it 5{ 6 my ($code) = @_; 7 my $pkg = caller(1); 8 eval "package $pkg;$code"; 9 my $ok = $@ ? 0 : 1; 10 11 return ($ok, $@); 12} 13 14sub runs_ok 15{ 16 local($Test::Builder::Level) = $Test::Builder::Level + 1; 17 my ($code, $name) = @_; 18 my ($ok, $err) = run_it($code); 19 20 ok($ok, $name) || diag("eval died with $err"); 21 22 return $ok; 23} 24 25sub dies_ok 26{ 27 local($Test::Builder::Level) = $Test::Builder::Level + 1; 28 my ($code, $name) = @_; 29 my ($ok, $err) = run_it($code); 30 31 ok(!$ok, $name) || diag("$code executed successfully"); 32 33 return !$ok; 34} 35 361; 37