mirror of
https://github.com/duncs/clusterssh.git
synced 2025-04-21 00:59:07 +00:00
Read a given config file
Throw an exception if it cannot be read
This commit is contained in:
parent
3caf243048
commit
3fedc40eaf
4 changed files with 39 additions and 12 deletions
1
Build.PL
1
Build.PL
|
@ -29,6 +29,7 @@ my $build = Module::Build->new(
|
|||
'Test::Pod::Coverage' => 0,
|
||||
'Test::Pod' => 0,
|
||||
'Test::Trap' => 0,
|
||||
'Readonly' => 0,
|
||||
},
|
||||
add_to_cleanup => ['App-ClusterSSH-*'],
|
||||
create_makefile_pl => 'traditional',
|
||||
|
|
|
@ -110,7 +110,15 @@ sub parse_config_file {
|
|||
|
||||
$self->debug( 2, 'Loading in config file: ', $config_file );
|
||||
|
||||
return if ( !-e $config_file || !-r $config_file );
|
||||
if ( !-e $config_file || !-r $config_file ){
|
||||
croak(
|
||||
App::ClusterSSH::Exception::Config->throw(
|
||||
error => $self->loc(
|
||||
'File [_1] does not exist or cannot be read', $config_file
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
open( CFG, $config_file ) or die("Couldnt open $config_file: $!");
|
||||
my $l;
|
||||
|
|
40
t/15config.t
40
t/15config.t
|
@ -1,12 +1,14 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use FindBin qw($Bin);
|
||||
use FindBin qw($Bin $Script);
|
||||
use lib "$Bin/../lib";
|
||||
|
||||
use Test::More;
|
||||
use Test::Trap;
|
||||
|
||||
use Readonly;
|
||||
|
||||
BEGIN { use_ok("App::ClusterSSH::Config") }
|
||||
|
||||
my $config;
|
||||
|
@ -14,7 +16,7 @@ my $config;
|
|||
$config = App::ClusterSSH::Config->new();
|
||||
isa_ok( $config, 'App::ClusterSSH::Config' );
|
||||
|
||||
my $default_config = {
|
||||
Readonly::Hash my %default_config => {
|
||||
terminal => "xterm",
|
||||
terminal_args => "",
|
||||
terminal_title_opt => "-T",
|
||||
|
@ -76,11 +78,12 @@ my $default_config = {
|
|||
lang => 'en',
|
||||
|
||||
};
|
||||
is_deeply( $config, $default_config, 'default config is correct' );
|
||||
my %expected = %default_config;
|
||||
is_deeply( $config, \%expected, 'default config is correct' );
|
||||
|
||||
trap {
|
||||
$config = $config->validate_args(
|
||||
whoops => 'not there',
|
||||
$config = $config->validate_args(
|
||||
whoops => 'not there',
|
||||
doesnt_exist => 'whoops',
|
||||
);
|
||||
};
|
||||
|
@ -89,12 +92,15 @@ is( $trap->die,
|
|||
'Unknown configuration parameters: doesnt_exist,whoops',
|
||||
'got correct error message'
|
||||
);
|
||||
is_deeply( $trap->die->unknown_config,
|
||||
['doesnt_exist','whoops'], 'Picked up unknown config array' );
|
||||
is_deeply(
|
||||
$trap->die->unknown_config,
|
||||
[ 'doesnt_exist', 'whoops' ],
|
||||
'Picked up unknown config array'
|
||||
);
|
||||
|
||||
$default_config->{extra_cluster_file} = '/etc/filename';
|
||||
$default_config->{rsh_args} = 'some args';
|
||||
$default_config->{max_addhost_menu_cluster_items} = 120;
|
||||
$expected{extra_cluster_file} = '/etc/filename';
|
||||
$expected{rsh_args} = 'some args';
|
||||
$expected{max_addhost_menu_cluster_items} = 120;
|
||||
trap {
|
||||
$config = $config->validate_args(
|
||||
extra_cluster_file => '/etc/filename',
|
||||
|
@ -103,6 +109,18 @@ trap {
|
|||
);
|
||||
};
|
||||
is( $trap->die, undef, 'validated ok' );
|
||||
is_deeply( $config, $default_config, 'default config is correct' );
|
||||
is_deeply( $config, \%expected, 'default config is correct' );
|
||||
|
||||
%expected = %default_config;
|
||||
|
||||
my $file = "$Bin/$Script.doesntexist";
|
||||
trap {
|
||||
$config = $config->parse_config_file( $file, );
|
||||
};
|
||||
isa_ok( $trap->die, 'App::ClusterSSH::Exception::Config' );
|
||||
is( $trap->die,
|
||||
"File $file does not exist or cannot be read",
|
||||
'got correct error message'
|
||||
);
|
||||
|
||||
done_testing();
|
||||
|
|
Loading…
Add table
Reference in a new issue