added test on reporting of failure to load extra deps
Christian Walde [Mon, 12 Nov 2012 13:13:25 +0000 (14:13 +0100)]
lib/strictures.pm
t/dep_constellations/broken/bareword/filehandles.pm [new file with mode: 0644]
t/dep_constellations/broken/indirect.pm [new file with mode: 0644]
t/dep_constellations/broken/multidimensional.pm [new file with mode: 0644]
t/strictures.t

index 1170a25..fb019d4 100644 (file)
@@ -21,7 +21,7 @@ sub VERSION {
   shift->SUPER::VERSION(@_);
 }
 
-my $extra_load_states;
+our $extra_load_states;
 
 our $Smells_Like_VCS = (-e '.git' || -e '.svn'
   || (-e '../../dist.ini' && (-e '../../.git' || -e '../../.svn')));
diff --git a/t/dep_constellations/broken/bareword/filehandles.pm b/t/dep_constellations/broken/bareword/filehandles.pm
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/t/dep_constellations/broken/indirect.pm b/t/dep_constellations/broken/indirect.pm
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/t/dep_constellations/broken/multidimensional.pm b/t/dep_constellations/broken/multidimensional.pm
new file mode 100644 (file)
index 0000000..e69de29
index 98919ee..4f6b020 100644 (file)
@@ -52,6 +52,36 @@ SKIP: {
     like($@, qr{Indirect call of method}, "Failed due to indirect.pm, ok");
   }
   ok(eval { require "other/one.pl"; 1 }, "Loaded other/one.pl ok");
+  chdir("../..");
 }
 
 ok(!eval q{use strictures 2; 1; }, "Can't use strictures 2 (this is version 1)");
+
+{
+  skip 'Extra tests disabled on perls <= 5.008003', 1
+    if $] < 5.008004;
+  local $ENV{PERL_STRICTURES_EXTRA} = 1;
+  local $strictures::extra_load_states = undef;
+  local @INC = ("t/dep_constellations/broken", @INC);
+  local %INC = %INC;
+  delete $INC{$_}
+    for qw( indirect.pm multidimensional.pm bareword/filehandles.pm );
+
+  {
+    open my $fh, '>', \my $str;
+    local *STDERR = $fh;
+    strictures->import;
+    like(
+      $str,
+      qr/Missing were:\n\n  indirect multidimensional bareword::filehandles/,
+      "failure to load all three extra deps is reported"
+    );
+  }
+
+  {
+    open my $fh, '>', \my $str;
+    local *STDERR = $fh;
+    strictures->import;
+    ok( !$str, "extra dep load failure is not reported a second time" );
+  }
+}