chef-sugar-ng 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.github/lock.yml +3 -0
  3. data/.github/reaction.yml +1 -0
  4. data/.gitignore +26 -0
  5. data/.kitchen.yml +16 -0
  6. data/.travis.yml +17 -0
  7. data/CHANGELOG.md +261 -0
  8. data/CONTRIBUTING.md +20 -0
  9. data/Gemfile +2 -0
  10. data/LICENSE +201 -0
  11. data/README.md +540 -0
  12. data/Rakefile +11 -0
  13. data/chef-sugar-ng.gemspec +33 -0
  14. data/lib/chef/sugar.rb +51 -0
  15. data/lib/chef/sugar/architecture.rb +171 -0
  16. data/lib/chef/sugar/cloud.rb +192 -0
  17. data/lib/chef/sugar/constraints.rb +108 -0
  18. data/lib/chef/sugar/constraints_dsl.rb +83 -0
  19. data/lib/chef/sugar/core_extensions.rb +19 -0
  20. data/lib/chef/sugar/core_extensions/array.rb +34 -0
  21. data/lib/chef/sugar/core_extensions/object.rb +27 -0
  22. data/lib/chef/sugar/core_extensions/string.rb +66 -0
  23. data/lib/chef/sugar/data_bag.rb +146 -0
  24. data/lib/chef/sugar/docker.rb +40 -0
  25. data/lib/chef/sugar/filters.rb +227 -0
  26. data/lib/chef/sugar/init.rb +62 -0
  27. data/lib/chef/sugar/ip.rb +48 -0
  28. data/lib/chef/sugar/kernel.rb +49 -0
  29. data/lib/chef/sugar/kitchen.rb +40 -0
  30. data/lib/chef/sugar/node.rb +213 -0
  31. data/lib/chef/sugar/platform.rb +327 -0
  32. data/lib/chef/sugar/platform_family.rb +179 -0
  33. data/lib/chef/sugar/ruby.rb +51 -0
  34. data/lib/chef/sugar/run_context.rb +41 -0
  35. data/lib/chef/sugar/shell.rb +147 -0
  36. data/lib/chef/sugar/vagrant.rb +77 -0
  37. data/lib/chef/sugar/version.rb +21 -0
  38. data/lib/chef/sugar/virtualization.rb +151 -0
  39. data/libraries/chef-sugar.rb +1 -0
  40. data/metadata.rb +24 -0
  41. data/recipes/default.rb +20 -0
  42. data/spec/spec_helper.rb +25 -0
  43. data/spec/support/shared_examples.rb +20 -0
  44. data/spec/unit/chef/sugar/architecture_spec.rb +129 -0
  45. data/spec/unit/chef/sugar/cloud_spec.rb +149 -0
  46. data/spec/unit/chef/sugar/constraints_spec.rb +45 -0
  47. data/spec/unit/chef/sugar/core_extensions/array_spec.rb +10 -0
  48. data/spec/unit/chef/sugar/core_extensions/object_spec.rb +62 -0
  49. data/spec/unit/chef/sugar/core_extensions/string_spec.rb +48 -0
  50. data/spec/unit/chef/sugar/data_bag_spec.rb +118 -0
  51. data/spec/unit/chef/sugar/docker_spec.rb +39 -0
  52. data/spec/unit/chef/sugar/init_spec.rb +74 -0
  53. data/spec/unit/chef/sugar/ip_spec.rb +53 -0
  54. data/spec/unit/chef/sugar/kernel_spec.rb +16 -0
  55. data/spec/unit/chef/sugar/kitchen_spec.rb +18 -0
  56. data/spec/unit/chef/sugar/node_spec.rb +172 -0
  57. data/spec/unit/chef/sugar/platform_family_spec.rb +166 -0
  58. data/spec/unit/chef/sugar/platform_spec.rb +342 -0
  59. data/spec/unit/chef/sugar/ruby_spec.rb +39 -0
  60. data/spec/unit/chef/sugar/run_context_spec.rb +19 -0
  61. data/spec/unit/chef/sugar/shell_spec.rb +104 -0
  62. data/spec/unit/chef/sugar/vagrant_spec.rb +37 -0
  63. data/spec/unit/chef/sugar/virtualization_spec.rb +135 -0
  64. data/spec/unit/recipes/default_spec.rb +9 -0
  65. metadata +202 -0
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chef::Sugar::Kernel do
4
+ describe '.require_chef_gem' do
5
+ it 'raises an exception when the gem is not installed' do
6
+ expect {
7
+ described_class.require_chef_gem('bacon')
8
+ }.to raise_error(Chef::Sugar::Kernel::ChefGemLoadError)
9
+ end
10
+
11
+ it 'loads the gem' do
12
+ allow(Chef::Sugar::Kernel).to receive(:require).and_return(true)
13
+ expect(described_class.require_chef_gem('bacon')).to be true
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chef::Sugar::Kitchen do
4
+ it_behaves_like 'a chef sugar'
5
+
6
+ describe '#kitchen?' do
7
+ it 'is true when the TEST_KITCHEN environment variable is set' do
8
+ allow(ENV).to receive(:[]).with('TEST_KITCHEN').and_return('1')
9
+ node = {}
10
+ expect(described_class.kitchen?(node)).to be true
11
+ end
12
+
13
+ it 'is false when the TEST_KITCHEN environment variable is unset' do
14
+ node = {}
15
+ expect(described_class.kitchen?(node)).to be false
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,172 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chef::Node do
4
+ describe '#in?' do
5
+ it 'returns true when the node is in the environment' do
6
+ allow(subject).to receive(:chef_environment).and_return('production')
7
+ expect(subject.in?('production')).to be true
8
+ expect(subject.in?(/production$/)).to be true
9
+ end
10
+
11
+ it 'returns false when the node is not in the environment' do
12
+ allow(subject).to receive(:chef_environment).and_return('staging')
13
+ expect(subject.in?('production')).to be false
14
+ expect(subject.in?(/production$/)).to be false
15
+ end
16
+ end
17
+
18
+ describe '#deep_fetch' do
19
+ let(:node) { described_class.new }
20
+ before { node.default['apache2']['config']['root'] = '/var/www' }
21
+
22
+ it 'fetches a deeply nested attribute' do
23
+ expect(node.deep_fetch('apache2', 'config', 'root')).to eq('/var/www')
24
+ end
25
+
26
+ it 'ignores symbols, strings, etc' do
27
+ expect(node.deep_fetch(:apache2, :config, :root)).to eq('/var/www')
28
+ end
29
+
30
+ it 'safely returns nil if a key does not exist' do
31
+ expect(node.deep_fetch(:apache2, :not_real, :nested, :yup)).to be_nil
32
+ end
33
+ end
34
+
35
+ describe '#deep_fetch!' do
36
+ let(:node) { described_class.new }
37
+ before { node.default['apache2']['config']['root'] = '/var/www' }
38
+
39
+ it 'fetches a deeply nested attribute' do
40
+ expect(node.deep_fetch!('apache2', 'config', 'root')).to eq('/var/www')
41
+ end
42
+
43
+ it 'ignores symbols, strings, etc' do
44
+ expect(node.deep_fetch!(:apache2, :config, :root)).to eq('/var/www')
45
+ end
46
+
47
+ it 'raises an error if a key does not exist' do
48
+ expect {
49
+ node.deep_fetch!(:apache2, :not_real)
50
+ }.to raise_error(Chef::Node::AttributeDoesNotExistError) { |e|
51
+ expect(e.message).to eq(<<-EOH.gsub(/^ {10}/, ''))
52
+ No attribute `node['apache2']['not_real']' exists on
53
+ the current node. Specifically the `not_real' attribute is not
54
+ defined. Please make sure you have spelled everything correctly.
55
+ EOH
56
+ }
57
+ end
58
+ end
59
+
60
+ describe '#namespace' do
61
+ let(:node) { described_class.new }
62
+
63
+ it 'defines the attributes' do
64
+ node.instance_eval do
65
+ namespace 'apache2' do
66
+ namespace 'config' do
67
+ root '/var/www'
68
+ end
69
+ end
70
+ end
71
+
72
+ expect(node.default).to eq({
73
+ 'apache2' => {
74
+ 'config' => { 'root' => '/var/www' }
75
+ }
76
+ })
77
+ end
78
+
79
+ it 'accepts multiple attributes' do
80
+ node.instance_eval do
81
+ namespace 'apache2', 'config' do
82
+ root '/var/www'
83
+ end
84
+ end
85
+
86
+ expect(node.default).to eq({
87
+ 'apache2' => {
88
+ 'config' => { 'root' => '/var/www' }
89
+ }
90
+ })
91
+ end
92
+
93
+ it 'accepts attribute precedence levels' do
94
+ node.instance_eval do
95
+ namespace 'apache2', precedence: normal do
96
+ namespace 'config', precedence: override do
97
+ root '/var/www'
98
+ end
99
+ end
100
+ end
101
+
102
+ expect(node.override).to eq({
103
+ 'apache2' => {
104
+ 'config' => { 'root' => '/var/www' }
105
+ }
106
+ })
107
+ end
108
+
109
+ it 'maintains precedence level into nested calls' do
110
+ node.instance_eval do
111
+ namespace 'apache2', precedence: override do
112
+ namespace 'config' do
113
+ root '/var/www'
114
+ end
115
+ end
116
+ end
117
+
118
+ expect(node.override).to eq({
119
+ 'apache2' => {
120
+ 'config' => { 'root' => '/var/www' }
121
+ }
122
+ })
123
+ end
124
+
125
+ it 'resets precedence to default in subsequent non-nested calls' do
126
+ node.instance_eval do
127
+ namespace 'apache2', precedence: override do
128
+ namespace 'config' do
129
+ root '/var/www'
130
+ end
131
+ end
132
+
133
+ namespace 'php' do
134
+ version '5.3'
135
+ end
136
+ end
137
+
138
+ expect(node.override).to eq({
139
+ 'apache2' => {
140
+ 'config' => { 'root' => '/var/www' }
141
+ }
142
+ })
143
+
144
+ expect(node.default).to eq({
145
+ 'php' => {
146
+ 'version' => '5.3'
147
+ }
148
+ })
149
+ end
150
+
151
+ it 'can access attributes within itself' do
152
+ node.instance_eval do
153
+ namespace 'apache2' do
154
+ namespace 'config' do
155
+ root '/var/www'
156
+ ssl File.join(root, 'ssl')
157
+ end
158
+ end
159
+ end
160
+
161
+ expect(node.default).to eq({
162
+ 'apache2' => {
163
+ 'config' => {
164
+ 'root' => '/var/www',
165
+ 'ssl' => '/var/www/ssl',
166
+ }
167
+ }
168
+ })
169
+ end
170
+ end
171
+
172
+ end
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chef::Sugar::PlatformFamily do
4
+ it_behaves_like 'a chef sugar'
5
+
6
+ describe '#arch_linux?' do
7
+ it 'returns true when the platform_family is arch linux' do
8
+ node = { 'platform_family' => 'arch' }
9
+ expect(described_class.arch_linux?(node)).to be true
10
+ end
11
+
12
+ it 'returns false when the platform_family is not arch linux' do
13
+ node = { 'platform_family' => 'windows' }
14
+ expect(described_class.arch_linux?(node)).to be false
15
+ end
16
+ end
17
+
18
+ describe '#debian?' do
19
+ it 'returns true when the platform_family is debian' do
20
+ node = { 'platform_family' => 'debian' }
21
+ expect(described_class.debian?(node)).to be true
22
+ end
23
+
24
+ it 'returns false when the platform_family is not debian' do
25
+ node = { 'platform_family' => 'windows' }
26
+ expect(described_class.debian?(node)).to be false
27
+ end
28
+ end
29
+
30
+ describe '#fedora?' do
31
+ it 'returns true when the platform_family is fedora' do
32
+ node = { 'platform_family' => 'fedora' }
33
+ expect(described_class.fedora?(node)).to be true
34
+ end
35
+
36
+ it 'returns false when the platform_family is not fedora' do
37
+ node = { 'platform_family' => 'windows' }
38
+ expect(described_class.fedora?(node)).to be false
39
+ end
40
+ end
41
+
42
+ describe '#freebsd?' do
43
+ it 'returns true when the platform_family is freebsd' do
44
+ node = { 'platform_family' => 'freebsd' }
45
+ expect(described_class.freebsd?(node)).to be true
46
+ end
47
+
48
+ it 'returns false when the platform_family is not freebsd' do
49
+ node = { 'platform_family' => 'windows' }
50
+ expect(described_class.freebsd?(node)).to be false
51
+ end
52
+ end
53
+
54
+ describe '#gentoo?' do
55
+ it 'returns true when the platform_family is gentoo' do
56
+ node = { 'platform_family' => 'gentoo' }
57
+ expect(described_class.gentoo?(node)).to be true
58
+ end
59
+
60
+ it 'returns false when the platform_family is not gentoo' do
61
+ node = { 'platform_family' => 'windows' }
62
+ expect(described_class.gentoo?(node)).to be false
63
+ end
64
+ end
65
+
66
+ describe '#mac_os_x?' do
67
+ it 'returns true when the platform_family is mac_os_x' do
68
+ node = { 'platform_family' => 'mac_os_x' }
69
+ expect(described_class.mac_os_x?(node)).to be true
70
+ end
71
+
72
+ it 'returns false when the platform_family is not mac_os_x' do
73
+ node = { 'platform_family' => 'windows' }
74
+ expect(described_class.mac_os_x?(node)).to be false
75
+ end
76
+ end
77
+
78
+ describe '#openbsd?' do
79
+ it 'returns true when the platform_family is openbsd' do
80
+ node = { 'platform_family' => 'openbsd' }
81
+ expect(described_class.openbsd?(node)).to be true
82
+ end
83
+
84
+ it 'returns false when the platform_family is not openbsd' do
85
+ node = { 'platform_family' => 'windows' }
86
+ expect(described_class.openbsd?(node)).to be false
87
+ end
88
+ end
89
+
90
+ describe '#rhel?' do
91
+ it 'returns true when the platform_family is rhel' do
92
+ node = { 'platform_family' => 'rhel' }
93
+ expect(described_class.rhel?(node)).to be true
94
+ end
95
+
96
+ it 'returns false when the platform_family is not rhel' do
97
+ node = { 'platform_family' => 'windows' }
98
+ expect(described_class.rhel?(node)).to be false
99
+ end
100
+ end
101
+
102
+ describe '#slackware?' do
103
+ it 'returns true when the platform_family is slackware' do
104
+ node = { 'platform_family' => 'slackware' }
105
+ expect(described_class.slackware?(node)).to be true
106
+ end
107
+
108
+ it 'returns false when the platform_family is not slackware' do
109
+ node = { 'platform_family' => 'windows' }
110
+ expect(described_class.slackware?(node)).to be false
111
+ end
112
+ end
113
+
114
+ describe '#suse?' do
115
+ it 'returns true when the platform_family is suse' do
116
+ node = { 'platform_family' => 'suse' }
117
+ expect(described_class.suse?(node)).to be true
118
+ end
119
+
120
+ it 'returns false when the platform_family is not suse' do
121
+ node = { 'platform_family' => 'windows' }
122
+ expect(described_class.suse?(node)).to be false
123
+ end
124
+ end
125
+
126
+ describe '#windows?' do
127
+ it 'returns true when the platform_family is windows' do
128
+ node = { 'platform_family' => 'windows' }
129
+ expect(described_class.windows?(node)).to be true
130
+ end
131
+
132
+ it 'returns false when the platform_family is not windows' do
133
+ node = { 'platform_family' => 'debian' }
134
+ expect(described_class.windows?(node)).to be false
135
+ end
136
+ end
137
+
138
+ describe '#wrlinux?' do
139
+ it 'returns true when the platform_family is wrlinux' do
140
+ node = { 'platform_family' => 'wrlinux' }
141
+ expect(described_class.wrlinux?(node)).to be true
142
+ end
143
+
144
+ it 'returns false when the platform_family is not wrlinux' do
145
+ node = { 'platform_family' => 'debian' }
146
+ expect(described_class.wrlinux?(node)).to be false
147
+ end
148
+ end
149
+
150
+ describe '#linux?' do
151
+ it 'returns true when the os is Linux' do
152
+ node = { 'os' => 'linux' }
153
+ expect(described_class.linux?(node)).to be true
154
+ end
155
+
156
+ it 'returns false when the os is Windows' do
157
+ node = { 'os' => 'windows' }
158
+ expect(described_class.linux?(node)).to be false
159
+ end
160
+
161
+ it 'returns false when the os is Windows' do
162
+ node = { 'os' => 'darwin' }
163
+ expect(described_class.linux?(node)).to be false
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,342 @@
1
+ require 'spec_helper'
2
+
3
+ describe Chef::Sugar::Platform do
4
+ it_behaves_like 'a chef sugar'
5
+
6
+ describe '#linux_mint?' do
7
+ it 'returns true when the platform is linux mint' do
8
+ node = { 'platform' => 'linuxmint' }
9
+ expect(described_class.linux_mint?(node)).to be true
10
+ end
11
+
12
+ it 'returns false when the platform is not linux mint' do
13
+ node = { 'platform' => 'windows' }
14
+ expect(described_class.linux_mint?(node)).to be false
15
+ end
16
+ end
17
+
18
+ describe '#ubuntu?' do
19
+ it 'returns true when the platform is ubuntu' do
20
+ node = { 'platform' => 'ubuntu' }
21
+ expect(described_class.ubuntu?(node)).to be true
22
+ end
23
+
24
+ it 'returns false when the platform is not ubuntu' do
25
+ node = { 'platform' => 'windows' }
26
+ expect(described_class.ubuntu?(node)).to be false
27
+ end
28
+ end
29
+
30
+ describe '#amazon_linux?' do
31
+ it 'returns true when the platform is amazon linux' do
32
+ node = { 'platform' => 'amazon' }
33
+ expect(described_class.amazon_linux?(node)).to be true
34
+ end
35
+
36
+ it 'returns false when the platform is not amazon linux' do
37
+ node = { 'platform' => 'windows' }
38
+ expect(described_class.amazon_linux?(node)).to be false
39
+ end
40
+ end
41
+
42
+ describe '#centos?' do
43
+ it 'returns true when the platform is centos' do
44
+ node = { 'platform' => 'centos' }
45
+ expect(described_class.centos?(node)).to be true
46
+ end
47
+
48
+ it 'returns false when the platform is not centos' do
49
+ node = { 'platform' => 'windows' }
50
+ expect(described_class.centos?(node)).to be false
51
+ end
52
+ end
53
+
54
+ describe '#oracle_linux?' do
55
+ it 'returns true when the platform is oracle linux' do
56
+ node = { 'platform' => 'oracle' }
57
+ expect(described_class.oracle_linux?(node)).to be true
58
+ end
59
+
60
+ it 'returns false when the platform is not oracle linux' do
61
+ node = { 'platform' => 'windows' }
62
+ expect(described_class.oracle_linux?(node)).to be false
63
+ end
64
+ end
65
+
66
+ describe '#scientific_linux?' do
67
+ it 'returns true when the platform is scientific linux' do
68
+ node = { 'platform' => 'scientific' }
69
+ expect(described_class.scientific_linux?(node)).to be true
70
+ end
71
+
72
+ it 'returns false when the platform is not scientific linux' do
73
+ node = { 'platform' => 'windows' }
74
+ expect(described_class.scientific_linux?(node)).to be false
75
+ end
76
+ end
77
+
78
+ describe '#redhat_enterprise_linux?' do
79
+ it 'returns true when the platform is redhat enterprise linux' do
80
+ node = { 'platform' => 'redhat' }
81
+ expect(described_class.redhat_enterprise_linux?(node)).to be true
82
+ end
83
+
84
+ it 'returns false when the platform is not redhat enterprise linux' do
85
+ node = { 'platform' => 'enterprise' }
86
+ expect(described_class.redhat_enterprise_linux?(node)).to be false
87
+ end
88
+ end
89
+
90
+ describe '#solaris2?' do
91
+ it 'returns true when the platform is solaris2' do
92
+ node = { 'platform' => 'solaris2' }
93
+ expect(described_class.solaris2?(node)).to be true
94
+ end
95
+
96
+ it 'returns false when the platform is not solaris2' do
97
+ node = { 'platform' => 'windows' }
98
+ expect(described_class.solaris2?(node)).to be false
99
+ end
100
+ end
101
+
102
+ describe '#aix?' do
103
+ it 'returns true when the platform is aix' do
104
+ node = { 'platform' => 'aix' }
105
+ expect(described_class.aix?(node)).to be true
106
+ end
107
+
108
+ it 'returns false when the platform is not aix' do
109
+ node = { 'platform' => 'windows' }
110
+ expect(described_class.aix?(node)).to be false
111
+ end
112
+ end
113
+
114
+ describe '#smartos?' do
115
+ it 'returns true when the platform is smartos' do
116
+ node = { 'platform' => 'smartos' }
117
+ expect(described_class.smartos?(node)).to be true
118
+ end
119
+
120
+ it 'returns false when the platform is not smartos' do
121
+ node = { 'platform' => 'windows' }
122
+ expect(described_class.smartos?(node)).to be false
123
+ end
124
+ end
125
+
126
+ describe '#omnios?' do
127
+ it 'returns true when the platform is omnios' do
128
+ node = { 'platform' => 'omnios' }
129
+ expect(described_class.omnios?(node)).to be true
130
+ end
131
+
132
+ it 'returns false when the platform is not omnios' do
133
+ node = { 'platform' => 'windows' }
134
+ expect(described_class.omnios?(node)).to be false
135
+ end
136
+ end
137
+
138
+ describe '#raspbian?' do
139
+ it 'returns true when platform is raspbian' do
140
+ node = { 'platform' => 'raspbian' }
141
+ expect(described_class.raspbian?(node)).to be true
142
+ end
143
+
144
+ it 'returns false when the platform is not raspbian' do
145
+ node = { 'platform' => 'windows' }
146
+ expect(described_class.raspbian?(node)).to be false
147
+ end
148
+ end
149
+
150
+ describe '#nexus' do
151
+ it 'returns true when the platform is nexus' do
152
+ node = { 'platform' => 'nexus' }
153
+ expect(described_class.nexus?(node)).to be true
154
+ end
155
+
156
+ it 'returns false when the platform is not nexus' do
157
+ node = { 'platform' => 'windows' }
158
+ expect(described_class.nexus?(node)).to be false
159
+ end
160
+ end
161
+
162
+ describe '#ios_xr' do
163
+ it 'returns true when the platform is ios_xr' do
164
+ node = { 'platform' => 'ios_xr' }
165
+ expect(described_class.ios_xr?(node)).to be true
166
+ end
167
+
168
+ it 'returns false when the platform is not ios_xr' do
169
+ node = { 'platform' => 'windows' }
170
+ expect(described_class.ios_xr?(node)).to be false
171
+ end
172
+ end
173
+
174
+ describe '#platform_version' do
175
+ it 'returns the platform version' do
176
+ node = { 'platform_version' => '1.2.3' }
177
+ expect(described_class.platform_version(node)).to eq('1.2.3')
178
+ end
179
+ end
180
+
181
+ context 'dynamic matchers' do
182
+ describe '#ubuntu_after_lucid?' do
183
+ it 'returns true when the version is later than 10.04' do
184
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.10' }
185
+ expect(described_class.ubuntu_after_lucid?(node)).to be true
186
+ end
187
+
188
+ it 'returns false when the version is 10.04' do
189
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04' }
190
+ expect(described_class.ubuntu_after_lucid?(node)).to be false
191
+ end
192
+
193
+ it 'returns false when the version is a patch release higher than 10.04' do
194
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04.4' }
195
+ expect(described_class.ubuntu_after_lucid?(node)).to be false
196
+ end
197
+
198
+ it 'returns false when the version is less than 10.04' do
199
+ node = { 'platform' => 'ubuntu', 'platform_version' => '9.10' }
200
+ expect(described_class.ubuntu_after_lucid?(node)).to be false
201
+ end
202
+ end
203
+
204
+ describe '#ubuntu_after_or_at_lucid?' do
205
+ it 'returns true when the version is later than 10.04' do
206
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.10' }
207
+ expect(described_class.ubuntu_after_or_at_lucid?(node)).to be true
208
+ end
209
+
210
+ it 'returns true when the version is 10.04' do
211
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04' }
212
+ expect(described_class.ubuntu_after_or_at_lucid?(node)).to be true
213
+ end
214
+
215
+ it 'returns true when the version is a patch release higher than 10.04' do
216
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04.4' }
217
+ expect(described_class.ubuntu_after_or_at_lucid?(node)).to be true
218
+ end
219
+
220
+ it 'returns false when the version is less than 10.04' do
221
+ node = { 'platform' => 'ubuntu', 'platform_version' => '9.10' }
222
+ expect(described_class.ubuntu_after_or_at_lucid?(node)).to be false
223
+ end
224
+ end
225
+
226
+ describe '#ubuntu_lucid?' do
227
+ it 'returns false when the version is later than 10.04' do
228
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.10' }
229
+ expect(described_class.ubuntu_lucid?(node)).to be false
230
+ end
231
+
232
+ it 'returns true when the version is 10.04' do
233
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04' }
234
+ expect(described_class.ubuntu_lucid?(node)).to be true
235
+ end
236
+
237
+ it 'returns true when the version is a patch release higher than 10.04' do
238
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04.4' }
239
+ expect(described_class.ubuntu_lucid?(node)).to be true
240
+ end
241
+
242
+ it 'returns false when the version is less than 10.04' do
243
+ node = { 'platform' => 'ubuntu', 'platform_version' => '9.10' }
244
+ expect(described_class.ubuntu_lucid?(node)).to be false
245
+ end
246
+ end
247
+
248
+ describe '#ubuntu_before_lucid?' do
249
+ it 'returns false when the version is later than 10.04' do
250
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.10' }
251
+ expect(described_class.ubuntu_before_lucid?(node)).to be false
252
+ end
253
+
254
+ it 'returns false when the version is 10.04' do
255
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04' }
256
+ expect(described_class.ubuntu_before_lucid?(node)).to be false
257
+ end
258
+
259
+ it 'returns false when the version is a patch release higher than 10.04' do
260
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04.4' }
261
+ expect(described_class.ubuntu_before_lucid?(node)).to be false
262
+ end
263
+
264
+ it 'returns true when the version is less than 10.04' do
265
+ node = { 'platform' => 'ubuntu', 'platform_version' => '9.10' }
266
+ expect(described_class.ubuntu_before_lucid?(node)).to be true
267
+ end
268
+ end
269
+
270
+ describe '#ubuntu_before_or_at_lucid?' do
271
+ it 'returns false when the version is later than 10.04' do
272
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.10' }
273
+ expect(described_class.ubuntu_before_or_at_lucid?(node)).to be false
274
+ end
275
+
276
+ it 'returns true when the version is 10.04' do
277
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04' }
278
+ expect(described_class.ubuntu_before_or_at_lucid?(node)).to be true
279
+ end
280
+
281
+ it 'returns true when the version is a patch release higher than 10.04' do
282
+ node = { 'platform' => 'ubuntu', 'platform_version' => '10.04.4' }
283
+ expect(described_class.ubuntu_before_or_at_lucid?(node)).to be true
284
+ end
285
+
286
+ it 'returns true when the version is less than 10.04' do
287
+ node = { 'platform' => 'ubuntu', 'platform_version' => '9.10' }
288
+ expect(described_class.ubuntu_before_or_at_lucid?(node)).to be true
289
+ end
290
+ end
291
+
292
+ describe '#centos_final?' do
293
+ it 'returns true when the version is a subset of the major' do
294
+ node = { 'platform' => 'centos', 'platform_version' => '6.8' }
295
+ expect(described_class.centos_final?(node)).to be true
296
+ end
297
+
298
+ it 'returns false when the version is not the major' do
299
+ node = { 'platform' => 'centos', 'platform_version' => '7.4' }
300
+ expect(described_class.centos_final?(node)).to be false
301
+ end
302
+ end
303
+
304
+ describe '#debian_wheezy?' do
305
+ it 'returns true when the version is a subset of the major' do
306
+ node = { 'platform' => 'debian', 'platform_version' => '7.1' }
307
+ expect(described_class.debian_wheezy?(node)).to be true
308
+ end
309
+
310
+ it 'returns false when the version is not the major' do
311
+ node = { 'platform' => 'debian', 'platform_version' => '6.1' }
312
+ expect(described_class.debian_wheezy?(node)).to be false
313
+ end
314
+ end
315
+
316
+ describe '#debian_before_wheezy?' do
317
+ it 'returns true when the version is a less than the major' do
318
+ node = { 'platform' => 'debian', 'platform_version' => '6.5' }
319
+ expect(described_class.debian_before_wheezy?(node)).to be true
320
+ end
321
+
322
+ it 'returns false when the version is not less than the major' do
323
+ node = { 'platform' => 'debian', 'platform_version' => '8.0' }
324
+ expect(described_class.debian_before_wheezy?(node)).to be false
325
+ end
326
+ end
327
+
328
+ describe '#solaris_10?' do
329
+ it 'returns true when the version is 5.10' do
330
+ node = { 'platform' => 'solaris2', 'platform_version' => '5.10' }
331
+ expect(described_class.solaris_10?(node)).to be true
332
+ end
333
+ end
334
+
335
+ describe '#solaris_11?' do
336
+ it 'returns true when the version is 5.11' do
337
+ node = { 'platform' => 'solaris2', 'platform_version' => '5.11' }
338
+ expect(described_class.solaris_11?(node)).to be true
339
+ end
340
+ end
341
+ end
342
+ end