beaker-puppet 1.29.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +9 -0
  3. data/.github/workflows/release.yml +2 -2
  4. data/.github/workflows/test.yml +28 -7
  5. data/.rubocop.yml +5 -0
  6. data/.rubocop_todo.yml +842 -0
  7. data/CHANGELOG.md +31 -0
  8. data/Gemfile +5 -20
  9. data/Rakefile +64 -169
  10. data/acceptance/config/acceptance-options.rb +3 -3
  11. data/acceptance/config/gem/acceptance-options.rb +8 -8
  12. data/acceptance/config/git/acceptance-options.rb +8 -8
  13. data/acceptance/config/pkg/acceptance-options.rb +7 -7
  14. data/acceptance/pre_suite/gem/install.rb +6 -6
  15. data/acceptance/pre_suite/git/install.rb +22 -22
  16. data/acceptance/pre_suite/pkg/install.rb +3 -3
  17. data/acceptance/tests/backwards_compatible.rb +6 -7
  18. data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
  19. data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
  20. data/acceptance/tests/install_smoke_test.rb +5 -4
  21. data/acceptance/tests/stub_host.rb +11 -10
  22. data/acceptance/tests/web_helpers_test.rb +11 -10
  23. data/beaker-puppet.gemspec +16 -23
  24. data/bin/beaker-puppet +2 -4
  25. data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
  26. data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
  27. data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
  28. data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
  29. data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
  30. data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
  31. data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
  32. data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
  33. data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
  34. data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
  35. data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
  36. data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
  37. data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
  38. data/lib/beaker-puppet/version.rb +1 -1
  39. data/lib/beaker-puppet/wrappers.rb +13 -14
  40. data/lib/beaker-puppet.rb +4 -5
  41. data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
  42. data/setup/common/000-delete-puppet-when-none.rb +2 -4
  43. data/setup/common/003_solaris_cert_fix.rb +74 -70
  44. data/setup/common/005_redhat_subscription_fix.rb +3 -2
  45. data/setup/common/011_Install_Puppet_Server.rb +7 -9
  46. data/setup/common/012_Finalize_Installs.rb +5 -5
  47. data/setup/common/025_StopFirewall.rb +1 -1
  48. data/setup/common/030_StopSssd.rb +2 -2
  49. data/setup/common/040_ValidateSignCert.rb +10 -12
  50. data/setup/common/045_EnsureMasterStarted.rb +2 -2
  51. data/setup/gem/010_GemInstall.rb +5 -4
  52. data/setup/git/000_EnvSetup.rb +48 -48
  53. data/setup/git/010_TestSetup.rb +13 -12
  54. data/setup/git/020_PuppetUserAndGroup.rb +3 -2
  55. data/setup/git/060_InstallModules.rb +14 -14
  56. data/setup/git/070_InstallCACerts.rb +82 -82
  57. data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
  58. data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
  59. data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
  60. data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
  61. data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
  62. data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
  63. data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
  64. data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
  65. data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
  66. data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
  67. data/spec/beaker-puppet/wrappers_spec.rb +10 -10
  68. data/spec/helpers.rb +85 -91
  69. data/tasks/ci.rake +171 -179
  70. metadata +33 -62
  71. data/setup/common/020_InstallCumulusModules.rb +0 -13
  72. data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
  73. data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
@@ -17,48 +17,61 @@ describe ClassMixedWithDSLInstallUtils do
17
17
  let(:metadata) { @metadata ||= {} }
18
18
  let(:presets) { Beaker::Options::Presets.new }
19
19
  let(:opts) { presets.presets.merge(presets.env_vars) }
20
- let(:basic_hosts) { make_hosts( { :pe_ver => '3.0',
21
- :platform => 'linux',
22
- :roles => [ 'agent' ] }, 4 ) }
23
- let(:hosts) { basic_hosts[0][:roles] = ['master', 'database', 'dashboard']
24
- basic_hosts[1][:platform] = 'windows'
25
- basic_hosts[2][:platform] = 'osx-10.9-x86_64'
26
- basic_hosts[3][:platform] = 'eos'
27
- basic_hosts }
28
- let(:hosts_sorted) { [ hosts[1], hosts[0], hosts[2], hosts[3] ] }
29
- let(:winhost) { make_host( 'winhost', { :platform => 'windows',
30
- :pe_ver => '3.0',
31
- :working_dir => '/tmp',
32
- :is_cygwin => true} ) }
33
- let(:winhost_non_cygwin) { make_host( 'winhost_non_cygwin', { :platform => 'windows',
34
- :pe_ver => '3.0',
35
- :working_dir => '/tmp',
36
- :is_cygwin => 'false' } ) }
37
- let(:machost) { make_host( 'machost', { :platform => 'osx-10.9-x86_64',
38
- :pe_ver => '3.0',
39
- :working_dir => '/tmp' } ) }
40
- let(:unixhost) { make_host( 'unixhost', { :platform => 'linux',
41
- :pe_ver => '3.0',
42
- :working_dir => '/tmp',
43
- :dist => 'puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386' } ) }
44
- let(:eoshost) { make_host( 'eoshost', { :platform => 'eos',
45
- :pe_ver => '3.0',
46
- :working_dir => '/tmp',
47
- :dist => 'puppet-enterprise-3.7.1-rc0-78-gffc958f-eos-4-i386' } ) }
48
-
49
- describe "#configure_defaults_on" do
50
-
51
- it "can set foss defaults" do
20
+ let(:basic_hosts) do
21
+ make_hosts({ pe_ver: '3.0',
22
+ platform: 'linux',
23
+ roles: ['agent'], }, 4)
24
+ end
25
+ let(:hosts) do
26
+ basic_hosts[0][:roles] = %w[master database dashboard]
27
+ basic_hosts[1][:platform] = 'windows'
28
+ basic_hosts[2][:platform] = 'osx-10.9-x86_64'
29
+ basic_hosts[3][:platform] = 'eos'
30
+ basic_hosts
31
+ end
32
+ let(:hosts_sorted) { [hosts[1], hosts[0], hosts[2], hosts[3]] }
33
+ let(:winhost) do
34
+ make_host('winhost', { platform: 'windows',
35
+ pe_ver: '3.0',
36
+ working_dir: '/tmp',
37
+ is_cygwin: true, })
38
+ end
39
+ let(:winhost_non_cygwin) do
40
+ make_host('winhost_non_cygwin', { platform: 'windows',
41
+ pe_ver: '3.0',
42
+ working_dir: '/tmp',
43
+ is_cygwin: 'false', })
44
+ end
45
+ let(:machost) do
46
+ make_host('machost', { platform: 'osx-10.9-x86_64',
47
+ pe_ver: '3.0',
48
+ working_dir: '/tmp', })
49
+ end
50
+ let(:unixhost) do
51
+ make_host('unixhost', { platform: 'linux',
52
+ pe_ver: '3.0',
53
+ working_dir: '/tmp',
54
+ dist: 'puppet-enterprise-3.1.0-rc0-230-g36c9e5c-debian-7-i386', })
55
+ end
56
+ let(:eoshost) do
57
+ make_host('eoshost', { platform: 'eos',
58
+ pe_ver: '3.0',
59
+ working_dir: '/tmp',
60
+ dist: 'puppet-enterprise-3.7.1-rc0-78-gffc958f-eos-4-i386', })
61
+ end
62
+
63
+ describe '#configure_defaults_on' do
64
+ it 'can set foss defaults' do
52
65
  expect(subject).to receive(:add_foss_defaults_on).exactly(hosts.length).times
53
66
  subject.configure_defaults_on(hosts, 'foss')
54
67
  end
55
68
 
56
- it "can set aio defaults" do
69
+ it 'can set aio defaults' do
57
70
  expect(subject).to receive(:add_aio_defaults_on).exactly(hosts.length).times
58
71
  subject.configure_defaults_on(hosts, 'aio')
59
72
  end
60
73
 
61
- it "can set pe defaults" do
74
+ it 'can set pe defaults' do
62
75
  expect(subject).to receive(:add_pe_defaults_on).exactly(hosts.length).times
63
76
  subject.configure_defaults_on(hosts, 'pe')
64
77
  end
@@ -74,9 +87,8 @@ describe ClassMixedWithDSLInstallUtils do
74
87
  end
75
88
  end
76
89
 
77
- describe "#configure_type_defaults_on" do
78
-
79
- it "can set foss defaults for foss type" do
90
+ describe '#configure_type_defaults_on' do
91
+ it 'can set foss defaults for foss type' do
80
92
  hosts.each do |host|
81
93
  host['type'] = 'foss'
82
94
  end
@@ -84,7 +96,7 @@ describe ClassMixedWithDSLInstallUtils do
84
96
  subject.configure_type_defaults_on(hosts)
85
97
  end
86
98
 
87
- it "adds aio defaults to foss hosts when they have an aio foss puppet version" do
99
+ it 'adds aio defaults to foss hosts when they have an aio foss puppet version' do
88
100
  hosts.each do |host|
89
101
  host[:pe_ver] = nil
90
102
  host[:version] = nil
@@ -96,7 +108,7 @@ describe ClassMixedWithDSLInstallUtils do
96
108
  subject.configure_type_defaults_on(hosts)
97
109
  end
98
110
 
99
- it "adds aio defaults to foss hosts when they have type foss-aio" do
111
+ it 'adds aio defaults to foss hosts when they have type foss-aio' do
100
112
  hosts.each do |host|
101
113
  host[:pe_ver] = nil
102
114
  host[:version] = nil
@@ -107,7 +119,7 @@ describe ClassMixedWithDSLInstallUtils do
107
119
  subject.configure_type_defaults_on(hosts)
108
120
  end
109
121
 
110
- it "can set aio defaults for aio type (backwards compatability)" do
122
+ it 'can set aio defaults for aio type (backwards compatability)' do
111
123
  hosts.each do |host|
112
124
  host[:pe_ver] = nil
113
125
  host[:version] = nil
@@ -117,7 +129,7 @@ describe ClassMixedWithDSLInstallUtils do
117
129
  subject.configure_type_defaults_on(hosts)
118
130
  end
119
131
 
120
- it "can set pe defaults for pe type" do
132
+ it 'can set pe defaults for pe type' do
121
133
  hosts.each do |host|
122
134
  host['type'] = 'pe'
123
135
  end
@@ -125,7 +137,7 @@ describe ClassMixedWithDSLInstallUtils do
125
137
  subject.configure_type_defaults_on(hosts)
126
138
  end
127
139
 
128
- it "adds aio defaults to pe hosts when they an aio pe version" do
140
+ it 'adds aio defaults to pe hosts when they an aio pe version' do
129
141
  hosts.each do |host|
130
142
  host['type'] = 'pe'
131
143
  host['pe_ver'] = '4.0'
@@ -134,52 +146,55 @@ describe ClassMixedWithDSLInstallUtils do
134
146
  expect(subject).to receive(:add_aio_defaults_on).exactly(hosts.length).times
135
147
  subject.configure_type_defaults_on(hosts)
136
148
  end
137
-
138
149
  end
139
150
 
140
151
  describe '#puppetserver_version_on' do
141
152
  it 'returns the tag on a released version' do
142
- result = object_double(Beaker::Result.new({}, 'puppetserver --version'), :stdout => "puppetserver version: 6.13.0", :exit_code => 0)
143
- expect(subject).to receive(:on).with(hosts.first, 'puppetserver --version', accept_all_exit_codes: true).and_return(result)
153
+ result = object_double(Beaker::Result.new({}, 'puppetserver --version'), stdout: 'puppetserver version: 6.13.0',
154
+ exit_code: 0)
155
+ expect(subject).to receive(:on).with(hosts.first, 'puppetserver --version',
156
+ accept_all_exit_codes: true).and_return(result)
144
157
  expect(subject.puppetserver_version_on(hosts.first)).to eq('6.13.0')
145
158
  end
146
159
 
147
160
  it 'returns the tag on a nightly version' do
148
- result = object_double(Beaker::Result.new({}, 'puppetserver --version'), :stdout => "puppetserver version: 7.0.0.SNAPSHOT.2020.10.14T0512", :exit_code => 0)
149
- expect(subject).to receive(:on).with(hosts.first, 'puppetserver --version', accept_all_exit_codes: true).and_return(result)
161
+ result = object_double(Beaker::Result.new({}, 'puppetserver --version'),
162
+ stdout: 'puppetserver version: 7.0.0.SNAPSHOT.2020.10.14T0512', exit_code: 0)
163
+ expect(subject).to receive(:on).with(hosts.first, 'puppetserver --version',
164
+ accept_all_exit_codes: true).and_return(result)
150
165
  expect(subject.puppetserver_version_on(hosts.first)).to eq('7.0.0')
151
166
  end
152
167
  end
153
168
 
154
169
  describe '#puppet_collection_for' do
155
170
  it 'raises an error when given an invalid package' do
156
- expect {
171
+ expect do
157
172
  subject.puppet_collection_for(:foo, '5.5.4')
158
- }.to raise_error(RuntimeError, /package must be one of puppet_agent, puppet, puppetserver/)
173
+ end.to raise_error(RuntimeError, /package must be one of puppet_agent, puppet, puppetserver/)
159
174
  end
160
175
 
161
176
  context 'when the :puppet_agent package is passed in' do
162
177
  context 'given a valid version' do
163
178
  {
164
- '1.10.14' => 'pc1',
165
- '1.10.x' => 'pc1',
166
- '5.3.1' => 'puppet5',
167
- '5.3.x' => 'puppet5',
168
- '5.99.0' => 'puppet6',
169
- '6.1.99-foo' => 'puppet6',
170
- '6.99.99' => 'puppet7',
171
- '7.0.0' => 'puppet7',
179
+ '1.10.14' => 'pc1',
180
+ '1.10.x' => 'pc1',
181
+ '5.3.1' => 'puppet5',
182
+ '5.3.x' => 'puppet5',
183
+ '5.99.0' => 'puppet6',
184
+ '6.1.99-foo' => 'puppet6',
185
+ '6.99.99' => 'puppet7',
186
+ '7.0.0' => 'puppet7',
172
187
  }.each do |version, collection|
173
188
  it "returns collection '#{collection}' for version '#{version}'" do
174
189
  expect(subject.puppet_collection_for(:puppet_agent, version)).to eq(collection)
175
190
  end
176
191
  end
177
192
  end
178
-
193
+
179
194
  it "returns the default, latest puppet collection given the version 'latest'" do
180
195
  expect(subject.puppet_collection_for(:puppet_agent, 'latest')).to eq('puppet')
181
196
  end
182
-
197
+
183
198
  context 'given an invalid version' do
184
199
  [nil, '', '0.1.0', '3.8.1', '', 'not-semver', 'not.semver.either'].each do |version|
185
200
  it "returns a nil collection value for version '#{version}'" do
@@ -192,14 +207,14 @@ describe ClassMixedWithDSLInstallUtils do
192
207
  context 'when the :puppet package is passed-in' do
193
208
  context 'given a valid version' do
194
209
  {
195
- '4.9.0' => 'pc1',
196
- '4.10.x' => 'pc1',
197
- '5.3.1' => 'puppet5',
198
- '5.3.x' => 'puppet5',
199
- '5.99.0' => 'puppet6',
200
- '6.1.99-foo' => 'puppet6',
201
- '6.99.99' => 'puppet7',
202
- '7.0.0' => 'puppet7',
210
+ '4.9.0' => 'pc1',
211
+ '4.10.x' => 'pc1',
212
+ '5.3.1' => 'puppet5',
213
+ '5.3.x' => 'puppet5',
214
+ '5.99.0' => 'puppet6',
215
+ '6.1.99-foo' => 'puppet6',
216
+ '6.99.99' => 'puppet7',
217
+ '7.0.0' => 'puppet7',
203
218
  }.each do |version, collection|
204
219
  it "returns collection '#{collection}' for version '#{version}'" do
205
220
  expect(subject.puppet_collection_for(:puppet, version)).to eq(collection)
@@ -223,25 +238,25 @@ describe ClassMixedWithDSLInstallUtils do
223
238
  context 'when the :puppetserver package is passed in' do
224
239
  context 'given a valid version' do
225
240
  {
226
- '2.0.0' => 'pc1',
227
- '2.0.x' => 'pc1',
228
- '5.3.1' => 'puppet5',
229
- '5.3.x' => 'puppet5',
230
- '5.99.0' => 'puppet6',
231
- '6.1.99-foo' => 'puppet6',
232
- '6.99.99' => 'puppet7',
233
- '7.0.0' => 'puppet7',
241
+ '2.0.0' => 'pc1',
242
+ '2.0.x' => 'pc1',
243
+ '5.3.1' => 'puppet5',
244
+ '5.3.x' => 'puppet5',
245
+ '5.99.0' => 'puppet6',
246
+ '6.1.99-foo' => 'puppet6',
247
+ '6.99.99' => 'puppet7',
248
+ '7.0.0' => 'puppet7',
234
249
  }.each do |version, collection|
235
250
  it "returns collection '#{collection}' for version '#{version}'" do
236
251
  expect(subject.puppet_collection_for(:puppetserver, version)).to eq(collection)
237
252
  end
238
253
  end
239
254
  end
240
-
255
+
241
256
  it "returns the default, latest puppet collection given the version 'latest'" do
242
257
  expect(subject.puppet_collection_for(:puppetserver, 'latest')).to eq('puppet')
243
258
  end
244
-
259
+
245
260
  context 'given an invalid version' do
246
261
  [nil, '', '0.1.0', '3.8.1', '', 'not-semver', 'not.semver.either'].each do |version|
247
262
  it "returns a nil collection value for version '#{version}'" do