[SCM] libmessage-passing-perl Debian packaging branch, master, updated. debian/0.111-3-14-g44f6e88

Tomas Doran bobtfish at bobtfish.net
Mon May 6 11:57:07 UTC 2013


The following commit has been merged in the master branch:
commit 8fde902cdb423c94390d1f515c7cebb72d4fb547
Author: Tomas Doran <bobtfish at bobtfish.net>
Date:   Tue Jun 5 20:48:26 2012 +0100

    Fix up the type constraints to be nucer

diff --git a/Makefile.PL b/Makefile.PL
index 6d1ba8e..dec6eb3 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -16,6 +16,7 @@ resources(
 requires 'Moose';
 requires 'namespace::autoclean';
 requires 'AnyEvent';
+requires 'MooseX::Types';
 requires 'MooseX::Types::Common';
 requires 'MooseX::Types::LoadableClass';
 requires 'String::RewritePrefix';
diff --git a/lib/Message/Passing/Role/CLIComponent.pm b/lib/Message/Passing/Role/CLIComponent.pm
index 1335f90..c78bb51 100644
--- a/lib/Message/Passing/Role/CLIComponent.pm
+++ b/lib/Message/Passing/Role/CLIComponent.pm
@@ -1,7 +1,9 @@
 package Message::Passing::Role::CLIComponent;
 use MooseX::Role::Parameterized;
 use Moose::Util::TypeConstraints;
-use Message::Passing::Types;
+use Message::Passing::Types qw/
+    Hash_from_JSON
+/;
 use namespace::autoclean;
 
 parameter name => (
@@ -29,7 +31,7 @@ role {
     );
 
     has "${name}_options" => (
-        isa => "Message::Passing::Types::FromJSON",
+        isa => Hash_from_JSON,
         traits    => ['Hash'],
         default => sub { {} },
         handles => {
diff --git a/lib/Message/Passing/Role/HasAConnection.pm b/lib/Message/Passing/Role/HasAConnection.pm
index fe64418..6b4111b 100644
--- a/lib/Message/Passing/Role/HasAConnection.pm
+++ b/lib/Message/Passing/Role/HasAConnection.pm
@@ -1,5 +1,6 @@
 package Message::Passing::Role::HasAConnection;
 use Moose::Role;
+use Moose::Util::TypeConstraints;
 use namespace::autoclean;
 
 requires '_build_connection_manager', 'connected';
@@ -7,7 +8,7 @@ requires '_build_connection_manager', 'connected';
 has connection_manager => (
     is => 'ro',
     lazy => 1,
-    #isa => ->can('subscribe_to_connect')
+    isa => duck_type([qw/subscribe_to_connect/]),
     builder => '_build_connection_manager',
 );
 
diff --git a/lib/Message/Passing/Role/Input.pm b/lib/Message/Passing/Role/Input.pm
index 0179ceb..191d4bf 100644
--- a/lib/Message/Passing/Role/Input.pm
+++ b/lib/Message/Passing/Role/Input.pm
@@ -1,13 +1,15 @@
 package Message::Passing::Role::Input;
 use Moose::Role;
 use JSON qw/ from_json /;
-use Message::Passing::Types;
+use Message::Passing::Types qw/
+    Output_Type
+/;
 use namespace::autoclean;
 
 sub decode { from_json( $_[1], { utf8  => 1 } ) }
 
 has output_to => (
-    isa => 'Message::Passing::Types::Output',
+    isa => Output_Type,
     is => 'ro',
     required => 1,
     coerce => 1,
diff --git a/lib/Message/Passing/Types.pm b/lib/Message/Passing/Types.pm
index 03f105c..dea5ff5 100644
--- a/lib/Message/Passing/Types.pm
+++ b/lib/Message/Passing/Types.pm
@@ -2,17 +2,27 @@ package Message::Passing::Types;
 use MooseX::Types ();
 use Moose::Util::TypeConstraints;
 use JSON ();
+use MooseX::Types::Moose qw/ Str HashRef /;
 use MooseX::Types::Common::String qw/ NonEmptySimpleStr /;
 use MooseX::Getopt;
 use Try::Tiny;
 use namespace::autoclean;
 
-role_type 'Message::Passing::Types::Input', { role => 'Message::Passing::Role::Input' };
-role_type 'Message::Passing::Types::Output', { role => 'Message::Passing::Role::Output' };
-role_type 'Message::Passing::Types::Filter', { role => 'Message::Passing::Role::Filter' };
+use MooseX::Types -declare => [qw{
+    Output_Type
+    Input_Type
+    Filter_Type
+    Codec_Type
+    Hash_from_JSON
+    JSON_from_Hash
+}];
 
-coerce 'Message::Passing::Types::Output',
-    from 'HashRef',
+role_type Input_Type, { role => 'Message::Passing::Role::Input' };
+role_type Output_Type, { role => 'Message::Passing::Role::Output' };
+role_type Filter_Type, { role => 'Message::Passing::Role::Filter' };
+
+coerce Output_Type,
+    from HashRef,
     via {
         my %stuff = %$_;
         my $class = delete($stuff{class});
@@ -20,15 +30,15 @@ coerce 'Message::Passing::Types::Output',
         $class->new(%stuff);
     };
 
-subtype 'Message::Passing::Types::FromJSON',
-    as "HashRef";
+subtype Hash_from_JSON,
+    as HashRef;
 
-coerce 'Message::Passing::Types::FromJSON',
+coerce Hash_from_JSON,
   from NonEmptySimpleStr,
   via { try { JSON->new->relaxed->decode($_) } };
 
 MooseX::Getopt::OptionTypeMap->add_option_type_to_map(
-    'Message::Passing::Types::FromJSON' => '=s'
+    Hash_from_JSON, '=s'
 );
 
 1;
diff --git a/t/00_compile.t b/t/00_compile.t
index 10de0ce..a4cf1ce 100644
--- a/t/00_compile.t
+++ b/t/00_compile.t
@@ -3,6 +3,7 @@ use warnings;
 
 use Test::More;
 
+use_ok("Message::Passing::Types") or BAIL_OUT("Types used everywhere!");
 use_ok('Message::Passing::Role::HasAConnection');
 use_ok('Message::Passing::Role::ConnectionManager');
 use_ok('Message::Passing');
diff --git a/t/role_connectionmanager.t b/t/role_connectionmanager.t
index 80acd46..73cd9d9 100644
--- a/t/role_connectionmanager.t
+++ b/t/role_connectionmanager.t
@@ -80,20 +80,24 @@ ok !$sub;
 # Test connectiomn timeout
 $i = My::Connection::Wrapper->new;
 my $cv = AnyEvent->condvar;
-my $t; $t = AnyEvent->timer(
-    after => 0.11,
-    cb => sub { $cv->send },
-);
+{
+    my $t; $t = AnyEvent->timer(
+        after => 0.11,
+        cb => sub { undef $t; $cv->send },
+    );
+}
 ok $i->{connection};
 $cv->recv;
 ok !$i->{connection};
 
 # Test reconnect
 $cv = AnyEvent->condvar;
-$t; $t = AnyEvent->timer(
-    after => 0.11,
-    cb => sub { $cv->send },
-);
+{
+    my $t; $t = AnyEvent->timer(
+        after => 0.11,
+        cb => sub { undef $t; $cv->send },
+    );
+}
 $cv->recv;
 $i->_set_connected(1);
 ok $i->{connection};
@@ -101,10 +105,12 @@ my ($c, $d) = (0,0);
 My::Connection::Wrapper->meta->add_before_method_modifier('_build_timeout_timer', sub { $c++ });
 My::Connection::Wrapper->meta->add_before_method_modifier('_build_reconnect_timer', sub { $d++ });
 $cv = AnyEvent->condvar;
-my $t; $t = AnyEvent->timer(
-    after => 0.5,
-    cb => sub { $cv->send },
-);
+{
+    my $t; $t = AnyEvent->timer(
+        after => 0.5,
+        cb => sub { undef $t; $cv->send },
+    );
+}
 $cv->recv;
 is $c, 0;
 is $d, 0;

-- 
libmessage-passing-perl Debian packaging



More information about the Pkg-perl-cvs-commits mailing list