Ensure that trigger is always a coderef
Shawn M Moore [Wed, 16 Jul 2008 05:04:45 +0000 (05:04 +0000)]
lib/Mouse/Meta/Attribute.pm
t/016-trigger.t

index df091cc..4237806 100644 (file)
@@ -254,6 +254,10 @@ sub validate_args {
         && $args{isa} ne 'ArrayRef'
         && $args{isa} ne 'HashRef';
 
+    confess "Trigger must be a CODE ref on attribute ($name)"
+        if $args{trigger}
+        && ref($args{trigger}) ne 'CODE';
+
     return 1;
 }
 
index 2925a8e..2a4dc94 100644 (file)
@@ -20,11 +20,18 @@ do {
     );
 
     ::lives_ok {
-        has error => (
+        has not_error => (
             is => 'ro',
             trigger => sub { },
         );
     } "it's no longer an error to have trigger on a readonly attribute";
+
+    ::throws_ok {
+        has error => (
+            is => 'ro',
+            trigger => [],
+        );
+    } qr/Trigger must be a CODE ref on attribute \(error\)/;
 };
 
 can_ok(Class => 'attr');