File Coverage

blib/lib/Test/Settings.pm
Criterion Covered Total %
statement 62 64 96.8
branch 7 8 87.5
condition 17 22 77.2
subroutine 28 28 100.0
pod 21 21 100.0
total 135 143 94.4


line stmt bran cond sub pod time code
1             package Test::Settings;
2             {
3             $Test::Settings::VERSION = '0.003';
4             }
5              
6 2     2   58626 use strict;
  2         6  
  2         130  
7 2     2   13 use warnings;
  2         3  
  2         73  
8              
9 2     2   10 use Exporter;
  2         9  
  2         2469  
10             our @ISA = qw(Exporter);
11              
12             our @EXPORT_OK = qw(
13             want_smoke
14             want_non_interactive
15             want_extended
16             want_author
17             want_release
18             want_all
19              
20             enable_smoke
21             enable_non_interactive
22             enable_extended
23             enable_author
24             enable_release
25             enable_all
26              
27             disable_smoke
28             disable_non_interactive
29             disable_release
30             disable_extended
31             disable_author
32             disable_release
33             disable_all
34              
35             current_settings
36             current_settings_env
37             current_settings_env_all
38             );
39              
40             our %EXPORT_TAGS = (
41             'all' => \@EXPORT_OK,
42             );
43              
44             # Things we currently know about
45             my %flags = (
46             want_smoke => 'AUTOMATED_TESTING',
47             want_non_interactive => 'NONINTERACTIVE_TESTING',
48             want_extended => 'EXTENDED_TESTING',
49             want_author => 'AUTHOR_TESTING',
50             want_release => 'RELEASE_TESTING',
51             );
52              
53             sub _get_env_name {
54 123     123   131 my ($flag) = @_;
55              
56 123 50       1046 if ($flags{$flag}) {
57 123         212 return $flags{$flag};
58             } else {
59 0         0 require Carp;
60 0         0 Carp::croak("No such flag $flag\n");
61             }
62             }
63              
64             sub _get_flag {
65 68     68   82 my ($flag) = @_;
66              
67 68         6670 my $env_name = _get_env_name($flag);
68              
69 68         306 return $ENV{$env_name};
70             }
71              
72             sub _set_flag {
73 15     15   39 my ($flag) = @_;
74              
75 15         40 my $env_name = _get_env_name($flag);
76              
77 15         117 $ENV{$env_name} = 1;
78             }
79              
80             sub _clear_flag {
81 20     20   38 my ($flag) = @_;
82              
83 20         50 my $env_name = _get_env_name($flag);
84              
85 20         120 delete $ENV{$env_name};
86             }
87              
88 12     12 1 60 sub want_smoke { _get_flag('want_smoke') }
89 9     9 1 21 sub want_non_interactive { _get_flag('want_non_interactive') }
90 9     9 1 18 sub want_extended { _get_flag('want_extended') }
91 9     9 1 18 sub want_author { _get_flag('want_author') }
92 9     9 1 17 sub want_release { _get_flag('want_release') }
93             sub want_all {
94 6 100 66 6 1 15 return 1 if
      66        
      33        
      66        
95             want_smoke &&
96             want_non_interactive &&
97             want_extended &&
98             want_author &&
99             want_release
100             ;
101             }
102              
103 3     3 1 27 sub enable_smoke { _set_flag('want_smoke') }
104 3     3 1 27 sub enable_non_interactive { _set_flag('want_non_interactive') }
105 3     3 1 8 sub enable_extended { _set_flag('want_extended') }
106 3     3 1 10 sub enable_author { _set_flag('want_author') }
107 3     3 1 12 sub enable_release { _set_flag('want_release') }
108             sub enable_all {
109 2     2 1 434039 enable_smoke;
110 2         9 enable_non_interactive;
111 2         15 enable_extended;
112 2         11 enable_author;
113 2         11 enable_release;
114             }
115              
116 4     4 1 22 sub disable_smoke { _clear_flag('want_smoke') }
117 4     4 1 12 sub disable_non_interactive { _clear_flag('want_non_interactive') }
118 4     4 1 9 sub disable_extended { _clear_flag('want_extended') }
119 4     4 1 10 sub disable_author { _clear_flag('want_author') }
120 4     4 1 7 sub disable_release { _clear_flag('want_release') }
121             sub disable_all {
122 3     3 1 543446 disable_smoke;
123 3         10 disable_non_interactive;
124 3         11 disable_extended;
125 3         7 disable_author;
126 3         9 disable_release;
127             }
128              
129             sub current_settings {
130 2   100 2 1 6 my @values = (
      100        
      100        
      100        
      100        
131             want_smoke() || '',
132             want_non_interactive() || '',
133             want_extended() || '',
134             want_author() || '',
135             want_release() || '',
136             );
137              
138 2         521 return sprintf(<
139             want_smoke: %s
140             want_non_interactive: %s
141             want_extended: %s
142             want_author: %s
143             want_release: %s
144             EOF
145              
146             }
147              
148             sub current_settings_env {
149 2     2 1 4 my $output = '';
150              
151 2         15 for my $flag (sort keys %flags) {
152 10         13 my $env_name = _get_env_name($flag);
153              
154 10 100       18 if (my $f = _get_flag($flag)) {
155 5         15 $output .= sprintf("%s=1\n", $env_name);
156             }
157             }
158              
159 2         8 return $output;
160             }
161              
162             sub current_settings_env_all {
163 2     2 1 4 my $output = '';
164              
165 2         8 for my $flag (sort keys %flags) {
166 10         16 my $env_name = _get_env_name($flag);
167              
168 10 100       17 if (my $f = _get_flag($flag)) {
169 5         13 $output .= sprintf("%s=1\n", $env_name);
170             } else {
171 5         14 $output .= sprintf("%s=0\n", $env_name);
172             }
173             }
174              
175 2         8 return $output;
176             }
177              
178             1;
179             __END__