Skip to content
This repository was archived by the owner on Jun 11, 2019. It is now read-only.

Commit 6fac2b2

Browse files
committed
improve type validation
1 parent 08f7716 commit 6fac2b2

File tree

4 files changed

+76
-67
lines changed

4 files changed

+76
-67
lines changed

manifests/init.pp

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,71 +19,73 @@
1919
$bool_jdk=any2bool($jdk)
2020
$bool_debug=any2bool($debug)
2121

22+
if $package != undef { validate_string($package) }
23+
if $package_jdk != undef { validate_string($package_jdk) }
24+
2225
### Definition of some variables used in the module
23-
$manage_package = $java::bool_absent ? {
26+
$manage_package = $bool_absent ? {
2427
true => 'absent',
2528
false => 'present',
2629
}
27-
$manage_file = $java::bool_absent ? {
30+
$manage_file = $bool_absent ? {
2831
true => 'absent',
2932
default => 'present',
3033
}
3134

3235
validate_absolute_path($java_home_base)
33-
3436
validate_string($version)
3537

36-
$headless_suffix = $java::bool_headless ? {
38+
$headless_suffix = $bool_headless ? {
3739
true => '-headless',
3840
default => '',
3941
}
4042
$real_package = $package ? {
41-
'' => $::operatingsystem ? {
43+
'' => $::operatingsystem ? {
4244
/(?i:Ubuntu|Debian|Mint)/ => "openjdk-${version}-jre${headless_suffix}",
4345
/(?i:SLES)/ => "java-1_${version}_0-ibm",
4446
/(?i:OpenSuSE)/ => "java-1_${version}_0-openjdk",
45-
/(?i:Solaris)/ => $::operatingsystemmajrelease ? {
46-
'10' => "CSWjre${version}",
47-
'11' => "jre-${version}",
48-
'5' => "jre-${version}",
47+
/(?i:Solaris)/ => $::operatingsystemmajrelease ? {
48+
'10' => "CSWjre${version}",
49+
'11' => "jre-${version}",
50+
'5' => "jre-${version}",
4951
},
50-
default => "java-1.${version}.0-openjdk",
52+
default => "java-1.${version}.0-openjdk",
5153
},
5254
default => $package,
5355
}
5456

5557
$real_package_jdk = $package_jdk ? {
56-
'' => $::operatingsystem ? {
58+
'' => $::operatingsystem ? {
5759
/(?i:Ubuntu|Debian|Mint)/ => "openjdk-${version}-jdk",
5860
/(?i:SLES)/ => "java-1_${version}_0-ibm",
5961
/(?i:OpenSuSE)/ => "java-1_${version}_0-openjdk-devel",
60-
/(?i:Solaris)/ => $::operatingsystemmajrelease ? {
61-
'10' => "CSWjdk${version}",
62-
'11' => "jdk-${version}",
63-
'5' => "jdk-${version}",
62+
/(?i:Solaris)/ => $::operatingsystemmajrelease ? {
63+
'10' => "CSWjdk${version}",
64+
'11' => "jdk-${version}",
65+
'5' => "jdk-${version}",
6466
},
65-
default => "java-1.${version}.0-openjdk-devel",
67+
default => "java-1.${version}.0-openjdk-devel",
6668
},
6769
default => $package_jdk,
6870
}
6971

7072
### Managed resources
7173
package { 'java':
72-
ensure => $java::manage_package,
73-
name => $java::real_package,
74+
ensure => $manage_package,
75+
name => $real_package,
7476
}
7577

76-
if $java::bool_jdk == true {
78+
if $bool_jdk == true {
7779
package { 'java-jdk':
78-
ensure => $java::manage_package,
79-
name => $java::real_package_jdk,
80+
ensure => $manage_package,
81+
name => $real_package_jdk,
8082
}
8183
}
8284

8385
### Debugging, if enabled ( debug => true )
84-
if $java::bool_debug == true {
86+
if $bool_debug == true {
8587
file { 'debug_java':
86-
ensure => $java::manage_file,
88+
ensure => $manage_file,
8789
path => "${settings::vardir}/debug-java",
8890
mode => '0640',
8991
owner => 'root',
@@ -96,5 +98,4 @@
9698
if $java::my_class {
9799
include $java::my_class
98100
}
99-
100101
}

manifests/install.pp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
default => '',
6565
}
6666
$real_package = $package ? {
67-
undef => $bool_jdk ? {
67+
'' => $bool_jdk ? {
6868
false => $::operatingsystem ? {
6969
/(?i:RedHat|Centos|Fedora|Scientific|Amazon|Linux)/ => "java-1.${version}.0-openjdk",
7070
/(?i:Ubuntu|Debian|Mint)/ => "openjdk-${version}-jre${headless_suffix}",
@@ -73,7 +73,7 @@
7373
/(?i:Solaris)/ => $::operatingsystemmajrelease ? {
7474
'10' => "CSWjre${version}",
7575
'11' => "jre-${version}",
76-
'5' => undef,
76+
'5' => '',
7777
},
7878
default => fail("OperatingSystem ${::operatingsystem} not supported"),
7979
},

manifests/params.pp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,9 @@
3232
default => '/usr/lib/jvm',
3333
}
3434

35-
36-
# Real package names are computed in java class
37-
$package = undef
38-
$package_jdk = undef
39-
4035
# General Settings
41-
$my_class = undef
4236
$absent = false
4337
$puppi = false
4438
$puppi_helper = 'standard'
4539
$debug = false
46-
4740
}

spec/classes/init_spec.rb

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,48 +13,63 @@
1313
it { should compile.with_all_deps }
1414
end
1515

16-
describe 'variable type and content validations' do
17-
let(:validation_params) do
16+
17+
describe 'variable type and content validations' do
18+
# set needed custom facts and variables
19+
let(:facts) do
20+
{
21+
:operatingsystem => 'Ubuntu',
22+
:operatingsystemrelease => '14.04',
23+
}
24+
end
25+
let(:mandatory_params) do
1826
{
1927
#:param => 'value',
2028
}
21-
end
29+
end
30+
31+
validations = {
32+
'absolute_path' => {
33+
:name => %w(java_home_base),
34+
:valid => ['/absolute/filepath', '/absolute/directory/', %w(/array /with_paths)],
35+
:invalid => ['../invalid', 3, 2.42, %w(array), { 'ha' => 'sh' }, true, false, nil],
36+
:message => 'is not an absolute path',
37+
},
38+
'string' => {
39+
:name => %w(package package_jdk version),
40+
:valid => ['string'],
41+
:invalid => [%w(array), { 'ha' => 'sh' }, 3, 2.42, true, false],
42+
:params => { :jdk => true },
43+
:message => 'is not a string',
44+
},
45+
'bool_stringified' => {
46+
:name => %w(jdk headless absent debug),
47+
#:valid => [true, false, 'true', 'false'],
48+
:valid => [true, false],
49+
:invalid => ['invalid', %w(array), { 'ha' => 'sh' }, 3, 2.42, nil],
50+
:message => '(Unknown type of boolean|str2bool\(\): Requires either string to work with)',
51+
},
52+
}
53+
54+
validations.sort.each do |type, var|
55+
var[:name].each do |var_name|
56+
var[:params] = {} if var[:params].nil?
57+
var[:valid].each do |valid|
58+
context "when #{var_name} (#{type}) is set to valid #{valid} (as #{valid.class})" do
59+
let(:params) { [mandatory_params, var[:params], { :"#{var_name}" => valid, }].reduce(:merge) }
60+
it { should compile }
61+
end
62+
end
2263

23-
validations = {
24-
'absolute_path' => {
25-
:name => ['java_home_base'],
26-
:valid => ['/usr/lib/jvm'],
27-
:invalid => ['invalid',3,2.42,['array'],a={'ha'=>'sh'}],
28-
:message => 'is not an absolute path',
29-
},
30-
'version' => {
31-
:name => ['version'] ,
32-
:valid => ['6'],
33-
:invalid => [['array'],a={'ha'=>'sh'}, true],
34-
:message => 'is not a string',
35-
},
36-
}
37-
38-
validations.sort.each do |type, var|
39-
var[:name].each do |var_name|
40-
var[:valid].each do |valid|
41-
context "with #{var_name} (#{type}) set to valid #{valid} (as #{valid.class})" do
42-
let(:params) { validation_params.merge({ :"#{var_name}" => valid, }) }
43-
it { should compile }
44-
end
45-
end
46-
47-
var[:invalid].each do |invalid|
48-
context "with #{var_name} (#{type}) set to invalid #{invalid} (as #{invalid.class})" do
49-
let(:params) { validation_params.merge({ :"#{var_name}" => invalid, }) }
64+
var[:invalid].each do |invalid|
65+
context "when #{var_name} (#{type}) is set to invalid #{invalid} (as #{invalid.class})" do
66+
let(:params) { [mandatory_params, var[:params], { :"#{var_name}" => invalid, }].reduce(:merge) }
5067
it 'should fail' do
51-
expect do
52-
should contain_class(subject)
53-
end.to raise_error(Puppet::Error, /#{var[:message]}/)
68+
expect { should contain_class(subject) }.to raise_error(Puppet::Error, /#{var[:message]}/)
5469
end
5570
end
5671
end
5772
end # var[:name].each
5873
end # validations.sort.each
59-
end # describe
74+
end # describe 'variable type and content validations'
6075
end

0 commit comments

Comments
 (0)