remove useless shebangs in tests
[gitmo/MooseX-Getopt.git] / t / 008_configfromfile.t
index 292e6f5..bcb0322 100644 (file)
@@ -1,20 +1,13 @@
-#!/usr/bin/env perl
-
 use strict;
 use warnings;
 
-use Test::Exception;
-use Test::More;
+use Test::More tests => 37;
+use Test::Fatal;
 use File::Spec;
 
-if ( !eval { require MooseX::ConfigFromFile } )
-{
-    plan skip_all => 'Test requires MooseX::ConfigFromFile';
-}
-else
-{
-    plan tests => 25;
-}
+use Test::Requires {
+    'MooseX::ConfigFromFile' => 0.01, # skip all if not installed
+};
 
 {
     package App;
@@ -76,11 +69,27 @@ else
     );
 }
 
+{
+    package App::DefaultConfigFileCodeRef;
+
+    use Moose;
+    extends 'App';
+
+    has '+configfile' => (
+        default => sub { return File::Spec->canonpath('/notused/default') },
+    );
+}
+
 # No config specified
 {
     local @ARGV = qw( --required_from_argv 1 );
 
-    throws_ok { App->new_with_options } qr/Required option missing: required_from_config/;
+    if ($Getopt::Long::Descriptive::VERSION >= 0.091) {
+        like exception { App->new_with_options }, qr/Mandatory parameter 'required_from_config' missing/;
+    }
+    else {
+        like exception { App->new_with_options }, qr/Required option missing: required_from_config/;
+    }
 
     {
         my $app = App::DefaultConfigFile->new_with_options;
@@ -95,6 +104,23 @@ else
     }
 }
 
+# No config specified
+{
+    local @ARGV = qw( --required_from_argv 1 );
+
+    {
+        my $app = App::DefaultConfigFileCodeRef->new_with_options;
+        isa_ok( $app, 'App::DefaultConfigFileCodeRef' );
+        app_ok( $app );
+
+        ok(  !$app->config_from_override,
+            '... config_from_override false as expected' );
+
+        is( $app->configfile, File::Spec->canonpath('/notused/default'),
+            '... configfile is /notused/default as expected' );
+    }
+}
+
 # Config specified
 {
     local @ARGV = qw( --configfile /notused --required_from_argv 1 );
@@ -116,12 +142,28 @@ else
         is( $app->configfile, File::Spec->canonpath('/notused'),
             '... configfile is /notused as expected' );
     }
+    {
+        my $app = App::DefaultConfigFileCodeRef->new_with_options;
+        isa_ok( $app, 'App::DefaultConfigFileCodeRef' );
+        app_ok( $app );
+
+        ok( $app->config_from_override,
+             '... config_from_override true as expected' );
+
+        is( $app->configfile, File::Spec->canonpath('/notused'),
+            '... configfile is /notused as expected' );
+    }
 }
 
 # Required arg not supplied from cmdline
 {
     local @ARGV = qw( --configfile /notused );
-    throws_ok { App->new_with_options } qr/Required option missing: required_from_argv/;
+    if ($Getopt::Long::Descriptive::VERSION >= 0.091) {
+        like exception { App->new_with_options }, qr/Mandatory parameter 'required_from_argv' missing/;
+    }
+    else {
+        like exception { App->new_with_options }, qr/Required option missing: required_from_argv/;
+    }
 }
 
 # Config file value overriden from cmdline
@@ -170,7 +212,7 @@ else
 # With DerivedApp, the Getopt role was applied at a different level
 # than the ConfigFromFile role
 {
-    lives_ok { DerivedApp::Getopt->new_with_options } 'Can create DerivedApp';
+    ok ! exception { DerivedApp::Getopt->new_with_options }, 'Can create DerivedApp';
 }
 
 sub app_ok {