diff options
Diffstat (limited to 't/config-file.t')
-rw-r--r-- | t/config-file.t | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/t/config-file.t b/t/config-file.t new file mode 100644 index 0000000..4d476a6 --- /dev/null +++ b/t/config-file.t @@ -0,0 +1,108 @@ +#!perl + +use warnings; +use strict; + +use Test::More tests => 18; + +use File::Basename; + +my $class = 'CPAN::Mini'; + +use_ok($class); +can_ok($class, 'config_file'); + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# command line option case +{ + my $filename = 'Changes'; + ok(-e $filename, "file name [$filename] exists"); + + local $ENV{CPAN_MINI_CONFIG} = 'Buster'; + my $options = { config_file => $filename, }; + + is($class->config_file($options), + $filename, 'selects config file name from command line'); +} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# environment variable case +{ + my $filename = $0; + ok(-e $filename, "file name [$filename] exists"); + + local $ENV{CPAN_MINI_CONFIG} = $filename; + + is($class->config_file, $filename, + 'selects config file name from environment with no args'); + is($class->config_file({}), + $filename, 'selects config file name from environment with empty hash ref'); + is($class->config_file('trash'), + $filename, 'selects config file name from environment with non-ref arg'); +} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# default case +# this is the case where there is a ~/.minicpanrc +{ + + my $filename = 'Changes'; + ok(-e $filename, "file name [$filename] exists"); + + { + no strict 'refs'; + no warnings 'redefine'; + + *{"${class}::__homedir_configfile"} = sub { $filename }; + is($class->__homedir_configfile, + $filename, "__homedir_configfile returns mocked name"); + } + + local $ENV{CPAN_MINI_CONFIG} = undef; + + is($class->config_file, $filename, 'selects default config file name'); +} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# last ditch case +# this is the case wehre there is no ~/.minicpanrc +{ + local $ENV{CPAN_MINI_CONFIG} = undef; + my $is_there_filename = 'Changes'; + ok(-e $is_there_filename, "file name [$is_there_filename] does exist"); + + { + no strict 'refs'; + no warnings 'redefine'; + + *{"${class}::__homedir_configfile"} = sub { undef }; + is($class->__homedir_configfile, + undef, "__homedir_configfile returns mocked name"); + *{"${class}::__default_configfile"} = sub { $is_there_filename }; + is($class->__default_configfile, + $is_there_filename, "__default_configfile returns mocked name"); + } + + is($class->config_file, $is_there_filename, + 'selects default config file name'); +} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# everything failed case +{ + local $ENV{CPAN_MINI_CONFIG} = undef; + + { + no strict 'refs'; + no warnings 'redefine'; + + *{"${class}::__homedir_configfile"} = sub { undef }; + is($class->__homedir_configfile, + undef, "__homedir_configfile returns mocked name"); + *{"${class}::__default_configfile"} = sub { undef }; + is($class->__default_configfile, + undef, "__default_configfile returns mocked name"); + } + + is($class->config_file, undef, 'returns undef when no config file is found'); +} |