From f9f91368fd716bd684d89013b92b6995f29b24d5 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 8 Jul 2013 17:36:06 -0400 Subject: restore the behavior of suppressing warnings in loaded modules the only thing we care about is getting $VERSION out of the modules, we don't actually want to use them, so the warnings are just noise. --- lib/Dist/CheckConflicts.pm | 5 ++++- t/lib/warn/Foo/Conflicts.pm | 10 ++++++++++ t/lib/warn/Foo/Thing.pm | 9 +++++++++ t/warn.t | 16 ++++++++++++++++ 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 t/lib/warn/Foo/Conflicts.pm create mode 100644 t/lib/warn/Foo/Thing.pm create mode 100644 t/warn.t diff --git a/lib/Dist/CheckConflicts.pm b/lib/Dist/CheckConflicts.pm index b1c78ef..6357b31 100644 --- a/lib/Dist/CheckConflicts.pm +++ b/lib/Dist/CheckConflicts.pm @@ -268,7 +268,10 @@ sub calculate_conflicts { CONFLICT: for my $conflict (keys %conflicts) { - my $success = eval { require_module($conflict) }; + my $success = do { + local $SIG{__WARN__} = sub {}; + eval { require_module($conflict) }; + }; my $error = $@; my $file = module_notional_filename($conflict); next if not $success and $error =~ /Can't locate \Q$file\E in \@INC/; diff --git a/t/lib/warn/Foo/Conflicts.pm b/t/lib/warn/Foo/Conflicts.pm new file mode 100644 index 0000000..e55ead3 --- /dev/null +++ b/t/lib/warn/Foo/Conflicts.pm @@ -0,0 +1,10 @@ +package Foo::Conflicts; +use strict; +use warnings; + +use Dist::CheckConflicts + -conflicts => { + 'Foo::Thing' => 0.01, + }; + +1; diff --git a/t/lib/warn/Foo/Thing.pm b/t/lib/warn/Foo/Thing.pm new file mode 100644 index 0000000..8dfa0b4 --- /dev/null +++ b/t/lib/warn/Foo/Thing.pm @@ -0,0 +1,9 @@ +package Foo::Thing; +use strict; +use warnings; + +our $VERSION = 0.02; + +warn "Loading Foo::Thing"; + +1; diff --git a/t/warn.t b/t/warn.t new file mode 100644 index 0000000..1058eb9 --- /dev/null +++ b/t/warn.t @@ -0,0 +1,16 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use lib 't/lib/warn'; + +{ + use_ok("Foo::Conflicts"); + + my $warning = ''; + local $SIG{__WARN__} = sub { $warning .= $_[0] }; + my $conflicts = Foo::Conflicts->calculate_conflicts; + is($warning, '', "we don't see warnings from loaded modules"); +} + +done_testing; -- cgit v1.2.3