puppet 5.5.14-x64-mingw32 → 5.5.16-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +18 -17
- data/ext/solaris/smf/puppet.xml +2 -0
- data/lib/hiera/scope.rb +7 -0
- data/lib/puppet.rb +1 -1
- data/lib/puppet/application/device.rb +22 -10
- data/lib/puppet/configurer.rb +23 -38
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/pops/types/types.rb +5 -3
- data/lib/puppet/provider.rb +1 -2
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/package.rb +2 -0
- data/lib/puppet/provider/package/dpkg.rb +15 -2
- data/lib/puppet/provider/package/gem.rb +65 -29
- data/lib/puppet/provider/package/pip.rb +136 -111
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +27 -16
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +68 -0
- data/lib/puppet/provider/service/upstart.rb +8 -8
- data/lib/puppet/provider/user/useradd.rb +16 -13
- data/lib/puppet/settings/server_list_setting.rb +9 -0
- data/lib/puppet/ssl/validator/default_validator.rb +30 -0
- data/lib/puppet/type/package.rb +46 -9
- data/lib/puppet/util/pidlock.rb +15 -1
- data/lib/puppet/util/windows/process.rb +70 -0
- data/lib/puppet/util/windows/registry.rb +7 -1
- data/lib/puppet/util/windows/user.rb +14 -4
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +81 -78
- data/man/man5/puppet.conf.5 +2 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/network/http_pool_spec.rb +120 -0
- data/spec/integration/type/package_spec.rb +1 -1
- data/spec/integration/util/windows/registry_spec.rb +52 -0
- data/spec/integration/util/windows/user_spec.rb +19 -0
- data/spec/lib/puppet_spec/https.rb +166 -0
- data/spec/unit/configurer_spec.rb +49 -13
- data/spec/unit/functions/new_spec.rb +15 -0
- data/spec/unit/hiera/scope_spec.rb +7 -0
- data/spec/unit/network/http/connection_spec.rb +0 -130
- data/spec/unit/provider/package/dpkg_spec.rb +18 -1
- data/spec/unit/provider/package/gem_spec.rb +101 -48
- data/spec/unit/provider/package/pip3_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +59 -68
- data/spec/unit/provider/package/puppet_gem_spec.rb +22 -6
- data/spec/unit/provider/package/rpm_spec.rb +116 -27
- data/spec/unit/provider/service/upstart_spec.rb +3 -19
- data/spec/unit/settings/server_list_setting_spec.rb +21 -0
- data/spec/unit/ssl/validator_spec.rb +2 -0
- data/spec/unit/util/pidlock_spec.rb +46 -0
- metadata +9 -2
@@ -33,40 +33,56 @@ describe Puppet::Type.type(:package).provider(:puppet_gem) do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should use the path to the gem command" do
|
36
|
-
allow(described_class).to receive(:
|
36
|
+
allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
|
37
37
|
expect(described_class).to receive(:execute).with(be_a(Array), execute_options) { |args| expect(args[0]).to eq(provider_gem_cmd) }.and_return('')
|
38
38
|
provider.install
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should not append install_options by default" do
|
42
|
-
expect(described_class).to receive(:execute_gem_command).with(%w{install --no-rdoc --no-ri myresource}).and_return('')
|
42
|
+
expect(described_class).to receive(:execute_gem_command).with(provider_gem_cmd, %w{install --no-rdoc --no-ri myresource}).and_return('')
|
43
43
|
provider.install
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should allow setting an install_options parameter" do
|
47
47
|
resource[:install_options] = [ '--force', {'--bindir' => '/usr/bin' } ]
|
48
|
-
expect(described_class).to receive(:execute_gem_command).with(%w{install --force --bindir=/usr/bin --no-rdoc --no-ri myresource}).and_return('')
|
48
|
+
expect(described_class).to receive(:execute_gem_command).with(provider_gem_cmd, %w{install --force --bindir=/usr/bin --no-rdoc --no-ri myresource}).and_return('')
|
49
49
|
provider.install
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
context "when uninstalling" do
|
54
54
|
it "should use the path to the gem command" do
|
55
|
-
allow(described_class).to receive(:
|
55
|
+
allow(described_class).to receive(:validate_command).with(provider_gem_cmd)
|
56
56
|
expect(described_class).to receive(:execute).with(be_a(Array), execute_options) { |args| expect(args[0]).to eq(provider_gem_cmd) }.and_return('')
|
57
57
|
provider.uninstall
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should not append uninstall_options by default" do
|
61
|
-
expect(described_class).to receive(:execute_gem_command).with(%w{uninstall --executables --all myresource}).and_return('')
|
61
|
+
expect(described_class).to receive(:execute_gem_command).with(provider_gem_cmd, %w{uninstall --executables --all myresource}).and_return('')
|
62
62
|
provider.uninstall
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should allow setting an uninstall_options parameter" do
|
66
66
|
resource[:uninstall_options] = [ '--force', {'--bindir' => '/usr/bin' } ]
|
67
|
-
expect(described_class).to receive(:execute_gem_command).with(%w{uninstall --executables --all myresource --force --bindir=/usr/bin}).and_return('')
|
67
|
+
expect(described_class).to receive(:execute_gem_command).with(provider_gem_cmd, %w{uninstall --executables --all myresource --force --bindir=/usr/bin}).and_return('')
|
68
68
|
provider.uninstall
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
context 'calculated specificity' do
|
73
|
+
context 'when is not defaultfor' do
|
74
|
+
subject { described_class.specificity }
|
75
|
+
it { is_expected.to eql 1 }
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when is defaultfor' do
|
79
|
+
let(:os) { Facter.value(:operatingsystem) }
|
80
|
+
subject do
|
81
|
+
described_class.defaultfor(operatingsystem: os)
|
82
|
+
described_class.specificity
|
83
|
+
end
|
84
|
+
it { is_expected.to be > 100 }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
72
88
|
end
|
@@ -56,7 +56,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
56
56
|
describe "self.instances" do
|
57
57
|
describe "with a modern version of RPM" do
|
58
58
|
it "includes all the modern flags" do
|
59
|
-
expect(Puppet::Util::Execution).to receive(:execpipe)
|
59
|
+
expect(Puppet::Util::Execution).to receive(:execpipe)
|
60
|
+
.with("/bin/rpm -qa --nosignature --nodigest --qf '#{nevra_format}'")
|
61
|
+
.and_yield(packages)
|
60
62
|
|
61
63
|
described_class.instances
|
62
64
|
end
|
@@ -66,7 +68,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
66
68
|
let(:rpm_version) { "RPM version 4.0.2\n" }
|
67
69
|
|
68
70
|
it "excludes the --nosignature flag" do
|
69
|
-
expect(Puppet::Util::Execution).to receive(:execpipe)
|
71
|
+
expect(Puppet::Util::Execution).to receive(:execpipe)
|
72
|
+
.with("/bin/rpm -qa --nodigest --qf '#{nevra_format}'")
|
73
|
+
.and_yield(packages)
|
70
74
|
|
71
75
|
described_class.instances
|
72
76
|
end
|
@@ -76,14 +80,18 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
76
80
|
let(:rpm_version) { "RPM version 3.0.5\n" }
|
77
81
|
|
78
82
|
it "excludes the --nodigest flag" do
|
79
|
-
expect(Puppet::Util::Execution).to receive(:execpipe)
|
83
|
+
expect(Puppet::Util::Execution).to receive(:execpipe)
|
84
|
+
.with("/bin/rpm -qa --qf '#{nevra_format}'")
|
85
|
+
.and_yield(packages)
|
80
86
|
|
81
87
|
described_class.instances
|
82
88
|
end
|
83
89
|
end
|
84
90
|
|
85
91
|
it "returns an array of packages" do
|
86
|
-
expect(Puppet::Util::Execution).to receive(:execpipe)
|
92
|
+
expect(Puppet::Util::Execution).to receive(:execpipe)
|
93
|
+
.with("/bin/rpm -qa --nosignature --nodigest --qf '#{nevra_format}'")
|
94
|
+
.and_yield(packages)
|
87
95
|
|
88
96
|
installed_packages = described_class.instances
|
89
97
|
|
@@ -167,7 +175,8 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
167
175
|
|
168
176
|
describe "when not already installed" do
|
169
177
|
it "only includes the '-i' flag" do
|
170
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
178
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
179
|
+
.with(["/bin/rpm", ["-i"], '/path/to/package'], execute_options)
|
171
180
|
provider.install
|
172
181
|
end
|
173
182
|
end
|
@@ -184,7 +193,8 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
184
193
|
end
|
185
194
|
|
186
195
|
it "includes the options" do
|
187
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
196
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
197
|
+
.with(["/bin/rpm", ["-i", "-D", "--test=value", "-Q"], '/path/to/package'], execute_options)
|
188
198
|
provider.install
|
189
199
|
end
|
190
200
|
end
|
@@ -197,7 +207,8 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
197
207
|
end
|
198
208
|
|
199
209
|
it "includes the '-U --oldpackage' flags" do
|
200
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
210
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
211
|
+
.with(["/bin/rpm", ["-U", "--oldpackage"], '/path/to/package'], execute_options)
|
201
212
|
provider.install
|
202
213
|
end
|
203
214
|
end
|
@@ -214,7 +225,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
214
225
|
|
215
226
|
it "raises an error if the rpm command fails" do
|
216
227
|
expect(resource).to receive(:[]).with(:source).and_return('source-string')
|
217
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
228
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
229
|
+
.with(["/bin/rpm", "-q", "--qf", "'#{nevra_format}'", "-p", "source-string"])
|
230
|
+
.and_raise(Puppet::ExecutionFailure, 'rpm command failed')
|
218
231
|
|
219
232
|
expect {
|
220
233
|
provider.latest
|
@@ -225,52 +238,115 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
225
238
|
describe "#uninstall" do
|
226
239
|
let(:resource) do
|
227
240
|
Puppet::Type.type(:package).new(
|
228
|
-
:name
|
229
|
-
:ensure
|
241
|
+
:name => resource_name,
|
242
|
+
:ensure => :installed
|
230
243
|
)
|
231
244
|
end
|
232
245
|
|
246
|
+
describe "on an ancient RPM" do
|
247
|
+
let(:rpm_version) { "RPM version 3.0.6\n" }
|
248
|
+
|
249
|
+
before(:each) do
|
250
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
251
|
+
.with(["/bin/rpm", "-q", resource_name, '', '', '--qf', "'#{nevra_format}'"], execute_options)
|
252
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
253
|
+
end
|
254
|
+
|
255
|
+
it "excludes the architecture from the package name" do
|
256
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
257
|
+
.with(["/bin/rpm", ["-e"], resource_name], execute_options)
|
258
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0)).at_most(:once)
|
259
|
+
provider.uninstall
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
233
263
|
describe "on a modern RPM" do
|
264
|
+
let(:rpm_version) { "RPM version 4.10.0\n" }
|
265
|
+
|
266
|
+
|
234
267
|
before(:each) do
|
235
268
|
expect(Puppet::Util::Execution).to receive(:execute)
|
236
|
-
.with(["/bin/rpm", "-q",
|
237
|
-
.and_return(Puppet::Util::Execution::ProcessOutput.new("
|
269
|
+
.with(["/bin/rpm", "-q", resource_name, '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options)
|
270
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
238
271
|
end
|
239
272
|
|
273
|
+
it "excludes the architecture from the package name" do
|
274
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
275
|
+
.with(["/bin/rpm", ["-e"], resource_name], execute_options)
|
276
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0)).at_most(:once)
|
277
|
+
provider.uninstall
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
describe "on a modern RPM when architecture is specified" do
|
240
282
|
let(:rpm_version) { "RPM version 4.10.0\n" }
|
241
283
|
|
284
|
+
let(:resource) do
|
285
|
+
Puppet::Type.type(:package).new(
|
286
|
+
:name => "#{resource_name}.noarch",
|
287
|
+
:ensure => :absent,
|
288
|
+
)
|
289
|
+
end
|
290
|
+
|
291
|
+
before(:each) do
|
292
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
293
|
+
.with(["/bin/rpm", "-q", "#{resource_name}.noarch", '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options)
|
294
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
295
|
+
end
|
296
|
+
|
242
297
|
it "includes the architecture in the package name" do
|
243
298
|
expect(Puppet::Util::Execution).to receive(:execute)
|
244
|
-
.with(["/bin/rpm", ["-e"],
|
299
|
+
.with(["/bin/rpm", ["-e"], "#{resource_name}.noarch"], execute_options)
|
245
300
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0)).at_most(:once)
|
246
301
|
provider.uninstall
|
247
302
|
end
|
248
303
|
end
|
249
304
|
|
250
|
-
describe "
|
305
|
+
describe "when version and release are specified" do
|
306
|
+
let(:resource) do
|
307
|
+
Puppet::Type.type(:package).new(
|
308
|
+
:name => "#{resource_name}-1.2.3.4-5.el4",
|
309
|
+
:ensure => :absent,
|
310
|
+
)
|
311
|
+
end
|
312
|
+
|
251
313
|
before(:each) do
|
252
314
|
expect(Puppet::Util::Execution).to receive(:execute)
|
253
|
-
.with(["/bin/rpm", "-q", "
|
254
|
-
.and_return(Puppet::Util::Execution::ProcessOutput.new("
|
315
|
+
.with(["/bin/rpm", "-q", "#{resource_name}-1.2.3.4-5.el4", '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options)
|
316
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
255
317
|
end
|
256
318
|
|
257
|
-
|
258
|
-
|
259
|
-
it "excludes the architecture from the package name" do
|
319
|
+
it "includes the version and release in the package name" do
|
260
320
|
expect(Puppet::Util::Execution).to receive(:execute)
|
261
|
-
.with(["/bin/rpm", ["-e"],
|
321
|
+
.with(["/bin/rpm", ["-e"], "#{resource_name}-1.2.3.4-5.el4"], execute_options)
|
262
322
|
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0)).at_most(:once)
|
263
323
|
provider.uninstall
|
264
324
|
end
|
265
325
|
end
|
266
326
|
|
267
|
-
describe "when
|
327
|
+
describe "when only version is specified" do
|
328
|
+
let(:resource) do
|
329
|
+
Puppet::Type.type(:package).new(
|
330
|
+
:name => "#{resource_name}-1.2.3.4",
|
331
|
+
:ensure => :absent,
|
332
|
+
)
|
333
|
+
end
|
334
|
+
|
268
335
|
before(:each) do
|
269
336
|
expect(Puppet::Util::Execution).to receive(:execute)
|
270
|
-
.with(["/bin/rpm", "-q", "
|
271
|
-
.and_return(Puppet::Util::Execution::ProcessOutput.new("
|
337
|
+
.with(["/bin/rpm", "-q", "#{resource_name}-1.2.3.4", '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options)
|
338
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
272
339
|
end
|
273
340
|
|
341
|
+
it "includes the version in the package name" do
|
342
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
343
|
+
.with(["/bin/rpm", ["-e"], "#{resource_name}-1.2.3.4"], execute_options)
|
344
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0)).at_most(:once)
|
345
|
+
provider.uninstall
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
describe "when uninstalled with options" do
|
274
350
|
let(:resource) do
|
275
351
|
Puppet::Type.type(:package).new(
|
276
352
|
:name => resource_name,
|
@@ -280,8 +356,15 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
280
356
|
)
|
281
357
|
end
|
282
358
|
|
359
|
+
before(:each) do
|
360
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
361
|
+
.with(["/bin/rpm", "-q", resource_name, '--nosignature', '--nodigest', "--qf", "'#{nevra_format}'"], execute_options)
|
362
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("#{resource_name} 0 1.2.3.4 5.el4 noarch\n", 0))
|
363
|
+
end
|
364
|
+
|
283
365
|
it "includes the options" do
|
284
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
366
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
367
|
+
.with(["/bin/rpm", ["-e", "--nodeps"], resource_name], execute_options)
|
285
368
|
provider.uninstall
|
286
369
|
end
|
287
370
|
end
|
@@ -331,7 +414,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
331
414
|
before do
|
332
415
|
expect(Puppet).not_to receive(:debug)
|
333
416
|
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", "'#{nevra_format}'"]
|
334
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
417
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
418
|
+
.with(expected_args, execute_options)
|
419
|
+
.and_raise(Puppet::ExecutionFailure.new("package #{resource_name} is not installed"))
|
335
420
|
end
|
336
421
|
|
337
422
|
it "does not log or fail if allow_virtual is false" do
|
@@ -342,7 +427,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
342
427
|
it "does not log or fail if allow_virtual is true" do
|
343
428
|
resource[:allow_virtual] = true
|
344
429
|
expected_args = ['/bin/rpm', '-q', resource_name, '--nosignature', '--nodigest', '--qf', "'#{nevra_format}'", '--whatprovides']
|
345
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
430
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
431
|
+
.with(expected_args, execute_options)
|
432
|
+
.and_raise(Puppet::ExecutionFailure.new("package #{resource_name} is not provided"))
|
346
433
|
expect(provider.query).to be_nil
|
347
434
|
end
|
348
435
|
end
|
@@ -350,7 +437,9 @@ describe Puppet::Type.type(:package).provider(:rpm) do
|
|
350
437
|
it "parses virtual package" do
|
351
438
|
provider.resource[:allow_virtual] = true
|
352
439
|
expected_args = ["/bin/rpm", "-q", resource_name, "--nosignature", "--nodigest", "--qf", "'#{nevra_format}'"]
|
353
|
-
expect(Puppet::Util::Execution).to receive(:execute)
|
440
|
+
expect(Puppet::Util::Execution).to receive(:execute)
|
441
|
+
.with(expected_args, execute_options)
|
442
|
+
.and_raise(Puppet::ExecutionFailure.new("package #{resource_name} is not installed"))
|
354
443
|
expect(Puppet::Util::Execution).to receive(:execute)
|
355
444
|
.with(expected_args + ["--whatprovides"], execute_options)
|
356
445
|
.and_return(Puppet::Util::Execution::ProcessOutput.new("myresource 0 1.2.3.4 5.el4 noarch\n", 0))
|
@@ -33,32 +33,16 @@ describe Puppet::Type.type(:service).provider(:upstart) do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
context "upstart daemon existence confine" do
|
36
|
-
# We have a separate method here because our search for the upstart daemon
|
37
|
-
# confine expects it to be the last confine declared in the upstart provider.
|
38
|
-
# If in the future we add other confines below it or change its order, these
|
39
|
-
# unit tests will fail. Placing knowledge of where this confine is located
|
40
|
-
# in one place makes updating it less painful in case we ever need to do this.
|
41
|
-
def assert_upstart_daemon_existence_confine_is(expected_value)
|
42
|
-
upstart_daemon_existence_confine = provider_class.confine_collection.instance_variable_get(:@confines)[-1]
|
43
|
-
expect(upstart_daemon_existence_confine.valid?).to be(expected_value)
|
44
|
-
end
|
45
|
-
|
46
36
|
let(:initctl_version) { ['/sbin/initctl', 'version', '--quiet'] }
|
47
37
|
|
48
38
|
before(:each) do
|
49
|
-
# Stub out /sbin/initctl
|
50
39
|
allow(Puppet::Util).to receive(:which).with('/sbin/initctl').and_return('/sbin/initctl')
|
51
|
-
|
52
|
-
# Both of our tests are asserting the confine :true block that shells out to
|
53
|
-
# `initctl version --quiet`. Its expression is evaluated at provider load-time.
|
54
|
-
# Hence before each test, we want to reload the upstart provider so that the
|
55
|
-
# confine is re-evaluated.
|
56
|
-
Puppet::Type.type(:service).unprovide(:upstart)
|
57
40
|
end
|
58
41
|
|
59
42
|
it "should return true when the daemon is running" do
|
60
43
|
expect(Puppet::Util::Execution).to receive(:execute).with(initctl_version, instance_of(Hash))
|
61
|
-
|
44
|
+
|
45
|
+
expect(provider_class).to be_has_initctl
|
62
46
|
end
|
63
47
|
|
64
48
|
it "should return false when the daemon is not running" do
|
@@ -66,7 +50,7 @@ describe Puppet::Type.type(:service).provider(:upstart) do
|
|
66
50
|
.with(initctl_version, instance_of(Hash))
|
67
51
|
.and_raise(Puppet::ExecutionFailure, "initctl failed!")
|
68
52
|
|
69
|
-
|
53
|
+
expect(provider_class).to_not be_has_initctl
|
70
54
|
end
|
71
55
|
end
|
72
56
|
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/settings/server_list_setting'
|
3
|
+
|
4
|
+
describe Puppet::Settings::ServerListSetting do
|
5
|
+
|
6
|
+
it "prints strings as strings" do
|
7
|
+
settings = Puppet::Settings.new
|
8
|
+
settings.define_settings(:main, neptune: {type: :server_list, desc: 'list of servers'})
|
9
|
+
server_list_setting = settings.setting(:neptune)
|
10
|
+
expect(server_list_setting.print("jupiter,mars")).to eq("jupiter,mars")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "prints arrays as strings" do
|
14
|
+
settings = Puppet::Settings.new
|
15
|
+
settings.define_settings(:main, neptune: {type: :server_list, desc: 'list of servers'})
|
16
|
+
server_list_setting = settings.setting(:neptune)
|
17
|
+
expect(server_list_setting.print([["main", 1234],["production", 8140]])).to eq("main:1234,production:8140")
|
18
|
+
expect(server_list_setting.print([])).to eq("")
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -186,6 +186,7 @@ describe Puppet::SSL::Validator::DefaultValidator do
|
|
186
186
|
allow(subject).to receive(:ssl_certificates_are_present?).and_return(true)
|
187
187
|
connection = double('Net::HTTP')
|
188
188
|
|
189
|
+
allow(connection).to receive(:address).and_return('puppet.com')
|
189
190
|
expect(connection).to receive(:cert_store=).with(ssl_host.ssl_store)
|
190
191
|
expect(connection).to receive(:ca_file=).with(ssl_configuration.ca_auth_file)
|
191
192
|
expect(connection).to receive(:cert=).with(ssl_host.certificate.content)
|
@@ -200,6 +201,7 @@ describe Puppet::SSL::Validator::DefaultValidator do
|
|
200
201
|
allow(subject).to receive(:ssl_certificates_are_present?).and_return(false)
|
201
202
|
connection = double('Net::HTTP')
|
202
203
|
|
204
|
+
allow(connection).to receive(:address).and_return('puppet.com')
|
203
205
|
expect(connection).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
|
204
206
|
|
205
207
|
subject.setup_connection(connection)
|
@@ -22,6 +22,23 @@ describe Puppet::Util::Pidlock do
|
|
22
22
|
|
23
23
|
it "should become locked" do
|
24
24
|
@lock.lock
|
25
|
+
if Puppet::Util::Platform.windows?
|
26
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(@lock.lock_pid).and_return('C:\Program Files\Puppet Labs\Puppet\puppet\bin\ruby.exe')
|
27
|
+
else
|
28
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'comm=']).and_return('puppet')
|
29
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'args=']).and_return('puppet')
|
30
|
+
end
|
31
|
+
expect(@lock).to be_locked
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should become locked if puppet is a gem" do
|
35
|
+
@lock.lock
|
36
|
+
unless Puppet::Util::Platform.windows?
|
37
|
+
expect(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'comm=']).and_return('ruby')
|
38
|
+
expect(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'args=']).and_return('ruby /root/puppet/.bundle/ruby/2.3.0/bin/puppet agent --no-daemonize -v')
|
39
|
+
else
|
40
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(@lock.lock_pid).and_return('C:\tools\ruby25\bin\ruby.exe')
|
41
|
+
end
|
25
42
|
expect(@lock).to be_locked
|
26
43
|
end
|
27
44
|
|
@@ -100,6 +117,23 @@ describe Puppet::Util::Pidlock do
|
|
100
117
|
describe "#locked?" do
|
101
118
|
it "should return true if locked" do
|
102
119
|
@lock.lock
|
120
|
+
if Puppet::Util::Platform.windows?
|
121
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(@lock.lock_pid).and_return('C:\Program Files\Puppet Labs\Puppet\puppet\bin\ruby.exe')
|
122
|
+
else
|
123
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'comm=']).and_return('puppet')
|
124
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'args=']).and_return('puppet')
|
125
|
+
end
|
126
|
+
expect(@lock).to be_locked
|
127
|
+
end
|
128
|
+
|
129
|
+
it "should return true if locked when puppet as gem" do
|
130
|
+
@lock.lock
|
131
|
+
unless Puppet::Util::Platform.windows?
|
132
|
+
expect(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'comm=']).and_return('ruby')
|
133
|
+
expect(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', @lock.lock_pid, '-o', 'args=']).and_return('ruby /root/puppet/.bundle/ruby/2.3.0/bin/puppet agent --no-daemonize -v')
|
134
|
+
else
|
135
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(@lock.lock_pid).and_return('C:\tools\ruby25\bin\ruby.exe')
|
136
|
+
end
|
103
137
|
expect(@lock).to be_locked
|
104
138
|
end
|
105
139
|
|
@@ -145,6 +179,12 @@ describe Puppet::Util::Pidlock do
|
|
145
179
|
end
|
146
180
|
|
147
181
|
it "should replace with new locks" do
|
182
|
+
if Puppet::Util::Platform.windows?
|
183
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(6789).and_return('C:\Program Files\Puppet Labs\Puppet\puppet\bin\ruby.exe')
|
184
|
+
else
|
185
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', 6789, '-o', 'comm=']).and_return('puppet')
|
186
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', 6789, '-o', 'args=']).and_return('puppet')
|
187
|
+
end
|
148
188
|
@lock.lock
|
149
189
|
expect(Puppet::FileSystem.exist?(@lockfile)).to be_truthy
|
150
190
|
expect(@lock.lock_pid).to eq(6789)
|
@@ -169,6 +209,12 @@ describe Puppet::Util::Pidlock do
|
|
169
209
|
before(:each) do
|
170
210
|
# fake our pid to be 1234
|
171
211
|
allow(Process).to receive(:pid).and_return(1234)
|
212
|
+
if Puppet::Util::Platform.windows?
|
213
|
+
allow(Puppet::Util::Windows::Process).to receive(:get_process_image_name_by_pid).with(1234).and_return('C:\Program Files\Puppet Labs\Puppet\puppet\bin\ruby.exe')
|
214
|
+
else
|
215
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', 1234, '-o', 'comm=']).and_return('puppet')
|
216
|
+
allow(Puppet::Util::Execution).to receive(:execute).with(['ps', '-p', 1234, '-o', 'args=']).and_return('puppet')
|
217
|
+
end
|
172
218
|
# lock the file
|
173
219
|
@lock.lock
|
174
220
|
# fake our pid to be a different pid, to simulate someone else
|