From: Peter Rabbitson Date: Fri, 17 Jun 2011 00:28:22 +0000 (+0200) Subject: Fix t/55namespaces_cleaned (RT#68814) X-Git-Tag: v0.08193~7 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=88b1530abb561248ce13acd2237cb9241317ecf4;p=dbsrgits%2FDBIx-Class.git Fix t/55namespaces_cleaned (RT#68814) --- diff --git a/Changes b/Changes index a513d00..2bf54e5 100644 --- a/Changes +++ b/Changes @@ -26,6 +26,8 @@ Revision history for DBIx::Class during upgrades at the turn of the second - Fix incorrect bind of integers >= 2^^32 (bigint columns) to SQL_INTEGER, resulting in silent conversion to '-1' + - Fix pre 5.10 failures of t/55namespaces_cleaned.t due to buggy + require() (RT#68814) 0.08192 2011-05-10 04:20 (UTC) * Fixes diff --git a/t/55namespaces_cleaned.t b/t/55namespaces_cleaned.t index 6a3cc02..f11fa51 100644 --- a/t/55namespaces_cleaned.t +++ b/t/55namespaces_cleaned.t @@ -1,3 +1,23 @@ +# Pre-5.10 perls pollute %INC on unsuccesfull module +# require, making it appear as if the module is already +# loaded on subsequent require()s +# Can't seem to find the exact RT/perldelta entry +BEGIN { + if ($] < 5.010) { + # shut up spurious warnings without loading warnings.pm + *CORE::GLOBAL::require = sub {}; + + *CORE::GLOBAL::require = sub { + my $res = eval { CORE::require($_[0]) }; + if ($@) { + delete $INC{$_[0]}; + die + } + $res; + } + } +} + use strict; use warnings; @@ -15,16 +35,16 @@ use DBIx::Class::Carp; my @modules = grep { my $mod = $_; - # trap deprecation warnings and whatnot - local $SIG{__WARN__} = sub {}; - # not all modules are loadable at all times - eval "require $mod" ? $mod : do { - SKIP: { skip "Failed require of $mod: $@", 1 }; - (); + do { + # trap deprecation warnings and whatnot + local $SIG{__WARN__} = sub {}; + eval "require $mod"; + } ? $mod : do { + SKIP: { skip "Failed require of $mod: " . ($@ =~ /^(.+?)$/m)[0], 1 }; + (); # empty RV for @modules }; - } find_modules(); # have an exception table for old and/or weird code we are not sure