1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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');
}
|