throw error for missing perl files
Graham Knop [Mon, 27 Feb 2017 10:10:52 +0000 (11:10 +0100)]
lib/Config/Any/Perl.pm
t/53-perl.t

index ff27b12..3e27a17 100644 (file)
@@ -55,7 +55,8 @@ sub load {
         # tainted.  untaint for backwards compatibility.
         my ($cwd) = Cwd::cwd() =~ /\A(.*)\z/s;
         $content = do File::Spec->rel2abs($file, $cwd);
-        $exception = $@;
+        $exception = $@ || $!
+            if !defined $content;
     }
     die $exception if $exception;
 
index cd61a1f..1c26ff4 100644 (file)
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9;
+use Test::More tests => 12;
 use Config::Any;
 use Config::Any::Perl;
 
@@ -44,3 +44,17 @@ use Config::Any::Perl;
     ok( !$config, 'config load failed' );
     ok( $@,       "error thrown ($@)" );
 }
+
+# test missing config
+{
+    my $file = 't/invalid/missing.pl';
+    my $config;
+    my $loaded = eval {
+        $config = Config::Any::Perl->load( $file );
+        1;
+    };
+
+    ok( !$loaded, 'config load failed' );
+    ok( !$config, 'config load failed' );
+    ok( $@,       "error thrown ($@)" );
+}