X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F008_configfromfile.t;h=bcb0322eabb283152ff9068c11f47d0d63cb8193;hb=da7b9880cfa75cdc3f3a4903e9ed7bfc86b534a3;hp=292e6f5bb87c39827f2391723f4d24d6a49698d6;hpb=d1e5e4256ca75af1c8be51f86b3d6321f0a3f506;p=gitmo%2FMooseX-Getopt.git diff --git a/t/008_configfromfile.t b/t/008_configfromfile.t index 292e6f5..bcb0322 100644 --- a/t/008_configfromfile.t +++ b/t/008_configfromfile.t @@ -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 {