diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-12 04:54:59 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2015-05-12 04:54:59 +0000 |
commit | cf3c05406f7cde406764915682e4bf5db73b1bdd (patch) | |
tree | 5050bd2311e38dc2b691a80ef187d2759a47e37b /t/errors.t | |
download | Eval-Closure-tarball-master.tar.gz |
Eval-Closure-0.13HEADEval-Closure-0.13master
Diffstat (limited to 't/errors.t')
-rw-r--r-- | t/errors.t | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/t/errors.t b/t/errors.t new file mode 100644 index 0000000..3f0cde2 --- /dev/null +++ b/t/errors.t @@ -0,0 +1,67 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Fatal; + +use Eval::Closure; + +like( + exception { eval_closure() }, + qr/'source'.*required/, + "error when source isn't declared" +); + +like( + exception { eval_closure(source => {}) }, + qr/'source'.*string or array/, + "error when source isn't string or array" +); + +like( + exception { eval_closure(source => 1) }, + qr/'source'.*return.*sub/, + "error when source doesn't return a sub" +); + +like( + exception { + eval_closure( + source => 'sub { }', + environment => { 'foo' => \1 }, + ) + }, + qr/should start with \@, \%,/, + "error from malformed env" +); + +like( + exception { + eval_closure( + source => 'sub { }', + environment => { '$foo' => 1 }, + ) + }, + qr/must be.*reference/, + "error from non-ref value" +); + +like( + exception { eval_closure(source => '$1++') }, + qr/Modification of a read-only value/, + "gives us compile errors properly" +); + +like( + exception { eval_closure(source => 'sub { $x }') }, + qr/sub \s* { \s* \$x \s* }/x, + "without terse_error, includes the source code" +); + +unlike( + exception { eval_closure(source => 'sub { $x }', terse_error => 1) }, + qr/sub \s* { \s* \$x \s* }/x, + "with terse_error, does not include the source code" +); + +done_testing; |