]> git.vpit.fr Git - perl/modules/Perl-Critic-Policy-Dynamic-NoIndirect.git/commitdiff
Generate reports for blocks and make t/10-basic.t recognize them
authorVincent Pit <vince@profvince.com>
Tue, 14 Jul 2009 18:57:27 +0000 (20:57 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 14 Jul 2009 19:00:03 +0000 (21:00 +0200)
lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm
t/10-basic.t

index 11b9b5c6fe8ba5bc28f08c3a6d51bcd080d5d784..13bd46722b633d90bf9681d35a01ee20e2fabd2a 100644 (file)
@@ -100,8 +100,9 @@ sub violates_dynamic {
 
  return map {
   my ($obj, $meth, $elt) = @$_;
+  $obj = ($obj =~ /^\s*\{/) ? "a block" : "object \"$obj\"";
   $self->violation(
-   "Indirect call of method \"$meth\" on object \"$obj\"",
+   "Indirect call of method \"$meth\" on $obj",
    "You really wanted $obj\->$meth",
    $elt,
   );
index 68715f2d72fa84638ea4ae3386b4cc1d2ed7ecbd..399e5529516439e531964e572df0a08d3dbb7eda 100644 (file)
@@ -3,13 +3,14 @@
 use strict;
 use warnings;
 
-my ($tests, $subtests);
+my ($tests, $reports, $subtests);
 BEGIN {
  $tests    = 15;
+ $reports  = 25;
  $subtests = 3;
 }
 
-use Test::More tests => $tests + $subtests * 25;
+use Test::More tests => $tests + $subtests * $reports;
 
 use Perl::Critic::TestUtils qw/pcritique_with_violations/;
 
@@ -17,6 +18,12 @@ Perl::Critic::TestUtils::block_perlcriticrc();
 
 my $policy = 'Dynamic::NoIndirect';
 
+sub expect {
+ my ($meth, $obj) = @_;
+ $obj = ($obj =~ /^\s*\{/) ? "a block" : "object \"\Q$obj\E\"";
+ qr/^Indirect call of method \"\Q$meth\E\" on $obj/,
+}
+
 {
  local $/ = "####";
 
@@ -25,7 +32,7 @@ my $policy = 'Dynamic::NoIndirect';
  while (<DATA>) {
   s/^\s+//s;
 
-  my ($code, $expected) = split /^-+$/m, $_, 2;
+  my ($code, $expected) = split /^-{4,}$/m, $_, 2;
   my @expected = eval $expected;
 
   my @violations = eval { pcritique_with_violations($policy, \$code) };
@@ -48,9 +55,7 @@ my $policy = 'Dynamic::NoIndirect';
    my $pos = $v->location;
    my ($meth, $obj, $line, $col) = @$exp;
 
-   like $v->description,
-        qr/^Indirect call of method \"\Q$meth\E\" on object \"\Q$obj\E\"/,
-        "description $id";
+   like $v->description, expect($meth, $obj), "description $id";
    is   $pos->[0], $line, "line $id";
    is   $pos->[1], $col,  "column $id";
   }