X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FUtil.pm;h=04c5ee4060763c8d6fcd56a8358c414f2e443c46;hb=9a8a1b5855775c74adfdc003006f30fd472b9cdd;hp=d30abf3b6ad77a7dfcb6a96ec89def6818a97014;hpb=42d7df00cd4c4b4cd1fe20ffb1a74c7161ba3862;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Util.pm b/lib/Mouse/Util.pm index d30abf3..04c5ee4 100644 --- a/lib/Mouse/Util.pm +++ b/lib/Mouse/Util.pm @@ -3,6 +3,7 @@ package Mouse::Util; use strict; use warnings; use base 'Exporter'; +use Carp; BEGIN { our %dependencies = ( @@ -121,9 +122,9 @@ BEGIN { # ^^^^^ CODE TAKEN FROM MRO::COMPAT ^^^^^ }, # VVVVV CODE TAKEN FROM TEST::EXCEPTION VVVVV - 'Test::Exception' => do { + 'Test::Exception 0.27' => do { - my $Tester = Test::Builder->new; + my $Tester; my $is_exception = sub { my $exception = shift; @@ -154,6 +155,8 @@ BEGIN { unless defined $description; my $exception = $try_as_caller->($coderef); + $Tester ||= Test::Builder->new; + my $regex = $Tester->maybe_regex( $expecting ); my $ok = $regex ? ( $exception =~ m/$regex/ ) @@ -171,6 +174,9 @@ BEGIN { 'lives_ok' => sub (&;$) { my ( $coderef, $description ) = @_; my $exception = $try_as_caller->( $coderef ); + + $Tester ||= Test::Builder->new; + my $ok = $Tester->ok( ! $is_exception->( $exception ), $description ); $Tester->diag( $exception_as_string->( "died:", $exception ) ) unless $ok; $@ = $exception; @@ -188,16 +194,18 @@ BEGIN { test => [qw/throws_ok lives_ok/], ); - for my $module_name (keys %dependencies) { + for my $module (keys %dependencies) { + my ($module_name, $version) = split ' ', $module; + my $loaded = do { local $SIG{__DIE__} = 'DEFAULT'; - eval "require $module_name; 1"; + eval "use $module (); 1"; }; $loaded{$module_name} = $loaded; - for my $method_name (keys %{ $dependencies{ $module_name } }) { - my $producer = $dependencies{$module_name}{$method_name}; + for my $method_name (keys %{ $dependencies{ $module } }) { + my $producer = $dependencies{$module}{$method_name}; my $implementation; if (ref($producer) eq 'HASH') {