use Test::Exception;
use Test::More;
-if ( !require MooseX::ConfigFromFile )
+if ( !eval { require MooseX::ConfigFromFile } )
{
plan skip_all => 'Test requires MooseX::ConfigFromFile';
}
else
{
- plan tests => 24;
+ plan tests => 25;
}
{
throws_ok { App->new_with_options } qr/Required option missing: required_from_config/;
-
- TODO: {
- local $TODO = 'Cannot supply required args from config';
-
- my $app = eval { App::DefaultConfigFile->new_with_options };
+ {
+ my $app = App::DefaultConfigFile->new_with_options;
isa_ok( $app, 'App::DefaultConfigFile' );
app_ok( $app );
- ok( $app && !$app->config_from_override,
+ ok( !$app->config_from_override,
'... config_from_override false as expected' );
- is( $app && $app->configfile, '/notused/default',
+ is( $app->configfile, '/notused/default',
'... configfile is /notused/default as expected' );
}
}
{
local @ARGV = qw( --configfile /notused --required_from_argv 1 );
- TODO: {
- local $TODO = 'Cannot supply required args from config';
-
- my $app = eval { App->new_with_options };
+ {
+ my $app = App->new_with_options;
isa_ok( $app, 'App' );
app_ok( $app );
}
- TODO: {
- local $TODO = 'Cannot supply required args from config';
-
- my $app = eval { App::DefaultConfigFile->new_with_options };
+ {
+ my $app = App::DefaultConfigFile->new_with_options;
isa_ok( $app, 'App::DefaultConfigFile' );
app_ok( $app );
- is ( $app && $app->config_from_override,
+ ok( $app->config_from_override,
'... config_from_override true as expected' );
- is( $app && $app->configfile, '/notused',
+ is( $app->configfile, '/notused',
'... configfile is /notused as expected' );
}
}
'... optional_from_config is undef as expected' );
}
+{
+ package BaseApp::WithConfig;
+ use Moose;
+ with 'MooseX::ConfigFromFile';
+
+ sub get_config_from_file { return {}; }
+}
+
+{
+ package DerivedApp::Getopt;
+ use Moose;
+ extends 'BaseApp::WithConfig';
+ with 'MooseX::Getopt';
+}
+
+# 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';
+}
+
sub app_ok {
my $app = shift;
- is( $app && $app->required_from_config, 'from_config_1',
+ is( $app->required_from_config, 'from_config_1',
'... required_from_config is from_config_1 as expected' );
- is( $app && $app->optional_from_config, 'from_config_2',
+ is( $app->optional_from_config, 'from_config_2',
'... optional_from_config is from_config_2 as expected' );
- is( $app && $app->required_from_argv, '1',
+ is( $app->required_from_argv, '1',
'... required_from_argv is 1 as expected' );
}