diff options
Diffstat (limited to 't/10-errors.t')
-rw-r--r-- | t/10-errors.t | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/t/10-errors.t b/t/10-errors.t new file mode 100644 index 0000000..d8925ee --- /dev/null +++ b/t/10-errors.t @@ -0,0 +1,45 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Exception; + +use Eval::Closure; + +throws_ok { + eval_closure() +} qr/'source'.*required/, "error when source isn't declared"; + +throws_ok { + eval_closure( + source => {}, + ) +} qr/'source'.*string or array/, "error when source isn't string or array"; + +throws_ok { + eval_closure( + source => '1', + ) +} qr/'source'.*return.*sub/, "error when source doesn't return a sub"; + +throws_ok { + eval_closure( + source => 'sub { }', + environment => { 'foo' => \1 }, + ) +} qr/should start with \@, \%, or \$/, "error from malformed env"; + +throws_ok { + eval_closure( + source => 'sub { }', + environment => { '$foo' => 1 }, + ) +} qr/must be.*reference/, "error from non-ref value"; + +throws_ok { + eval_closure( + source => '$1++', + ) +} qr/Modification of a read-only value/, "gives us compile errors properly"; + +done_testing; |