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