Login
Email::Address is now just a required dependency. This ensures that everyone gets
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Mon, 22 Mar 2010 01:08:59 +0000 (01:08 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Mon, 22 Mar 2010 01:08:59 +0000 (01:08 +0000)
the optimal behavior from ValuesAndExpressions::RequireInterpoliationOfMetachars.
This also obviates the need for a special test, for when the module is absent.

Also tried to update Changes file with recent bug fixes and enhancements.

Changes
inc/Perl/Critic/BuildUtilities.pm
lib/Perl/Critic/Policy/ValuesAndExpressions/RequireInterpolationOfMetachars.pm
t/20_policy_require_interpolation_of_metachars.t [deleted file]
t/ValuesAndExpressions/RequireInterpolationOfMetachars.run

diff --git a/Changes b/Changes
index bed3bd4..0598673 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,22 @@
+[1.105_03] Released on 2010-03-21
+
+    !! THIS IS A DEVELOPER RELEASE !!
+
+    Bug Fixes:
+    * Fixed regex test that caused test failures on every Perl 5.11
+      (credit Tom Wyant).
+    * RT #54524: False Positive: ValuesAndExpressions::ProhibitMismatchedOperators 
+      with 'foo' x 15 . 'bar'
+    * RT #55604: Variables::ProhibitPunctuationVars gives false-positive 
+      on qr// regexp's ending in '$'
+    * RT #33935 and #49679 were fixed by upgrading to PPI 1.208
+
+    Other Changes:
+    * Email::Address was optional, but is now required.  So everyone
+      gets the optimal behavior from RequireInterpolationOfMetachars.
+    * Some infrastructure has been extracted to the new PPIx-Utilities
+      distro.  It is also a required dependency here.
+
 [1.105_02] Released on 2010-01-23
 
     !! THIS IS A DEVELOPER RELEASE !!
index 9be5177..2f6ad41 100644 (file)
@@ -36,6 +36,7 @@ sub required_module_versions {
         'B::Keywords'                   => 1.05,
         'Carp'                          => 0,
         'Config::Tiny'                  => 2,
+        'Email::Address'                => 1.889,
         'English'                       => 0,
         'Exception::Class'              => 1.23,
         'Exporter'                      => 0,
@@ -88,7 +89,6 @@ sub build_required_module_versions {
 
 sub recommended_module_versions {
     return (
-        'Email::Address'        => '1.889',
         'File::HomeDir'         => 0,
         'Perl::Tidy'            => 0,
         'Readonly::XS'          => 0,
index 30fee14..8c66d27 100644 (file)
@@ -12,6 +12,7 @@ use strict;
 use warnings;
 use Readonly;
 
+use Email::Address;
 use Perl::Critic::Utils qw< :booleans :characters :severities >;
 use base 'Perl::Critic::Policy';
 
@@ -57,11 +58,6 @@ sub initialize_if_enabled {
         $self->{_rcs_regexes} = $rcs_regexes;
     }
 
-    if ( not eval 'use Email::Address 1.889; 1' ) {
-        no warnings 'redefine'; ## no critic (TestingAndDebugging::ProhibitNoWarnings)
-        *_looks_like_email_address = sub {};
-    }
-
     return $TRUE;
 }
 
@@ -190,14 +186,14 @@ indicate that the string should be interpolated.
 
 =item *
 
-C<${}> and C<@{}> in a C<use overload>,
+C<${}> and C<@{}> in a C<use overload>:
 
     use overload '${}' => \&deref,     # ok
                  '@{}' => \&arrayize;  # ok
 
 =item *
 
-Variable names to C<use vars>.
+Variable names to C<use vars>:
 
     use vars '$x';          # ok
     use vars ('$y', '$z');  # ok
@@ -206,8 +202,10 @@ Variable names to C<use vars>.
 
 =item *
 
-Email addresses, if you have L<Email::Address|Email::Address> installed.
+Things that look like e-mail addresses:
 
+    print 'john@foo.com';           # ok
+    $address = 'suzy.bar@baz.net';  # ok
 
 =back
 
@@ -235,11 +233,6 @@ in your F<.perlcriticrc> to provide an exemption.
 Perl's own C<warnings> pragma also warns you about this.
 
 
-=head1 TODO
-
-Handle email addresses.
-
-
 =head1 SEE ALSO
 
 L<Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals|Perl::Critic::Policy::ValuesAndExpressions::ProhibitInterpolationOfLiterals>
diff --git a/t/20_policy_require_interpolation_of_metachars.t b/t/20_policy_require_interpolation_of_metachars.t
deleted file mode 100644 (file)
index 9d43780..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!perl
-
-##############################################################################
-#      $URL$
-#     $Date$
-#   $Author$
-# $Revision$
-##############################################################################
-
-use 5.006001;
-use strict;
-use warnings;
-
-use Perl::Critic::TestUtils qw< pcritique >;
-
-use Test::More;
-
-#-----------------------------------------------------------------------------
-
-our $VERSION = '1.105_02';
-
-#-----------------------------------------------------------------------------
-
-plan tests => 2;
-
-#-----------------------------------------------------------------------------
-
-Perl::Critic::TestUtils::block_perlcriticrc();
-
-#-----------------------------------------------------------------------------
-
-# This is in addition to the regular .run file.
-my $policy = 'ValuesAndExpressions::RequireInterpolationOfMetachars';
-my $has_email_address = eval {require Email::Address};
-
-#-----------------------------------------------------------------------------
-
-my $code = <<'END_PERL';
-
-$simple  = 'me@foo.bar';
-$complex = q{don-quixote@man-from.lamancha.org};
-
-END_PERL
-
-my $result = pcritique($policy, \$code);
-is(
-    $result,
-    $has_email_address ? 0 : 2,
-    "$policy exempts things that look like email addresses if Email::Address is installed.",
-);
-
-
-$code = <<'END_PERL';
-
-$simple  = 'Email: me@foo.bar';
-$complex = q{"don-quixote@man-from.lamancha.org" is my address};
-send_email_to ('foo@bar.com', ...);
-
-END_PERL
-
-$result = pcritique($policy, \$code);
-is(
-    $result,
-    $has_email_address ? 0 : 3,
-    "$policy exempts things email addresses in the middle of larger strings if Email::Address is installed.",
-);
-
-
-#-----------------------------------------------------------------------------
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 78
-#   indent-tabs-mode: nil
-#   c-indentation-style: bsd
-# End:
-# ex: set ts=8 sts=4 sw=4 tw=78 ft=perl expandtab shiftround :
index fdde9c7..3dc1d72 100644 (file)
@@ -165,6 +165,33 @@ use Generic::Module '$FOO';
 
 #-----------------------------------------------------------------------------
 
+## name Things that look like email addresses.
+## failures 0
+## cut
+
+$simple  = 'me@foo.bar';
+$complex = q{don-quixote@man-from.lamancha.org};
+
+#-----------------------------------------------------------------------------
+## name More things that look like email addresses.
+## failures 0
+## cut
+
+$simple  = 'Email: me@foo.bar';
+$complex = q{"don-quixote@man-from.lamancha.org" is my address};
+send_email_to ('foo@bar.com', ...);
+
+#-----------------------------------------------------------------------------
+## name Email addresses with emedded violations.
+## TODO Policy is not smart enough to handle this yet.
+## failures 2
+## cut
+
+$simple  = 'Email: $name@$company.$domain';
+send_email_to('$some_var: foo@bar.com', ...);
+
+
+
 ##############################################################################
 #      $URL$
 #     $Date$