X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F55namespaces_cleaned.t;h=f11fa518d5943264f7cebe95e1f309ed753d5789;hb=88b1530abb561248ce13acd2237cb9241317ecf4;hp=6a3cc025becba74bad11ab7e97cda00ddc95b533;hpb=19938f3bf130db5563f6973a59dc22dd2d47fe70;p=dbsrgits%2FDBIx-Class-Historic.git 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