diff options
author | Jesse Luehrs <doy@tozt.net> | 2013-07-08 17:36:06 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2013-07-08 17:36:27 -0400 |
commit | f9f91368fd716bd684d89013b92b6995f29b24d5 (patch) | |
tree | e625e5451c889526f9b2570976fe67c607ad82dc | |
parent | 04a6fd13f7ea3a45881d6e75ea1dffba38a999fd (diff) | |
download | dist-checkconflicts-f9f91368fd716bd684d89013b92b6995f29b24d5.tar.gz dist-checkconflicts-f9f91368fd716bd684d89013b92b6995f29b24d5.zip |
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.
-rw-r--r-- | lib/Dist/CheckConflicts.pm | 5 | ||||
-rw-r--r-- | t/lib/warn/Foo/Conflicts.pm | 10 | ||||
-rw-r--r-- | t/lib/warn/Foo/Thing.pm | 9 | ||||
-rw-r--r-- | t/warn.t | 16 |
4 files changed, 39 insertions, 1 deletions
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; |