puppet 5.5.18 → 5.5.19

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.

Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +12 -11
  3. data/lib/puppet.rb +5 -2
  4. data/lib/puppet/application/filebucket.rb +13 -0
  5. data/lib/puppet/defaults.rb +60 -33
  6. data/lib/puppet/indirector/catalog/compiler.rb +8 -0
  7. data/lib/puppet/network/http/connection.rb +4 -0
  8. data/lib/puppet/network/http/pool.rb +5 -1
  9. data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
  10. data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
  11. data/lib/puppet/pops/types/type_calculator.rb +24 -0
  12. data/lib/puppet/provider/group/groupadd.rb +19 -19
  13. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  14. data/lib/puppet/provider/package/apt.rb +14 -3
  15. data/lib/puppet/provider/package/dnfmodule.rb +9 -2
  16. data/lib/puppet/provider/package/dpkg.rb +13 -6
  17. data/lib/puppet/provider/package/fink.rb +20 -3
  18. data/lib/puppet/provider/package/openbsd.rb +13 -1
  19. data/lib/puppet/provider/package/pkg.rb +18 -5
  20. data/lib/puppet/provider/package/yum.rb +9 -5
  21. data/lib/puppet/provider/user/directoryservice.rb +30 -5
  22. data/lib/puppet/provider/user/useradd.rb +5 -6
  23. data/lib/puppet/ssl/certificate.rb +2 -1
  24. data/lib/puppet/ssl/certificate_authority.rb +6 -5
  25. data/lib/puppet/test/test_helper.rb +7 -0
  26. data/lib/puppet/transaction/resource_harness.rb +1 -1
  27. data/lib/puppet/type/file.rb +13 -0
  28. data/lib/puppet/type/package.rb +63 -9
  29. data/lib/puppet/util/plist.rb +6 -0
  30. data/lib/puppet/version.rb +1 -1
  31. data/locales/puppet.pot +100 -92
  32. data/man/man5/puppet.conf.5 +12 -6
  33. data/man/man8/puppet-agent.8 +1 -1
  34. data/man/man8/puppet-apply.8 +1 -1
  35. data/man/man8/puppet-ca.8 +1 -1
  36. data/man/man8/puppet-catalog.8 +1 -1
  37. data/man/man8/puppet-cert.8 +1 -1
  38. data/man/man8/puppet-certificate.8 +1 -1
  39. data/man/man8/puppet-certificate_request.8 +1 -1
  40. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  41. data/man/man8/puppet-config.8 +1 -1
  42. data/man/man8/puppet-describe.8 +1 -1
  43. data/man/man8/puppet-device.8 +1 -1
  44. data/man/man8/puppet-doc.8 +1 -1
  45. data/man/man8/puppet-epp.8 +1 -1
  46. data/man/man8/puppet-facts.8 +1 -1
  47. data/man/man8/puppet-filebucket.8 +16 -1
  48. data/man/man8/puppet-generate.8 +1 -1
  49. data/man/man8/puppet-help.8 +1 -1
  50. data/man/man8/puppet-key.8 +1 -1
  51. data/man/man8/puppet-lookup.8 +1 -1
  52. data/man/man8/puppet-man.8 +1 -1
  53. data/man/man8/puppet-master.8 +1 -1
  54. data/man/man8/puppet-module.8 +1 -1
  55. data/man/man8/puppet-node.8 +1 -1
  56. data/man/man8/puppet-parser.8 +1 -1
  57. data/man/man8/puppet-plugin.8 +1 -1
  58. data/man/man8/puppet-report.8 +1 -1
  59. data/man/man8/puppet-resource.8 +1 -1
  60. data/man/man8/puppet-script.8 +1 -1
  61. data/man/man8/puppet-status.8 +1 -1
  62. data/man/man8/puppet.8 +2 -2
  63. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
  64. data/spec/integration/indirector/facts/facter_spec.rb +4 -0
  65. data/spec/unit/application/apply_spec.rb +2 -12
  66. data/spec/unit/configurer/fact_handler_spec.rb +0 -4
  67. data/spec/unit/configurer_spec.rb +0 -3
  68. data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
  69. data/spec/unit/network/http/connection_spec.rb +17 -1
  70. data/spec/unit/network/http/pool_spec.rb +32 -0
  71. data/spec/unit/node_spec.rb +7 -4
  72. data/spec/unit/provider/group/groupadd_spec.rb +30 -1
  73. data/spec/unit/provider/package/apt_spec.rb +13 -2
  74. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  75. data/spec/unit/provider/package/dnfmodule_spec.rb +22 -0
  76. data/spec/unit/provider/package/dpkg_spec.rb +20 -4
  77. data/spec/unit/provider/package/openbsd_spec.rb +17 -0
  78. data/spec/unit/provider/package/pkg_spec.rb +13 -1
  79. data/spec/unit/provider/package/yum_spec.rb +50 -0
  80. data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
  81. data/spec/unit/provider/user/useradd_spec.rb +7 -2
  82. data/spec/unit/puppet_pal_2pec.rb +3 -0
  83. data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
  84. data/spec/unit/ssl/certificate_spec.rb +7 -0
  85. data/spec/unit/type/package_spec.rb +8 -0
  86. data/spec/unit/util/plist_spec.rb +20 -0
  87. metadata +2 -2
@@ -9,19 +9,9 @@ describe Puppet::Resource::Catalog::Compiler do
9
9
  let(:node_name) { "foo" }
10
10
  let(:node) { Puppet::Node.new(node_name)}
11
11
 
12
- before do
13
- allow(Facter).to receive(:to_hash).and_return({})
14
- end
15
-
16
12
  describe "when initializing" do
17
13
  before do
18
- expect(Puppet).to receive(:version).and_return(1)
19
- expect(Facter).to receive(:value).with('fqdn').and_return("my.server.com")
20
- expect(Facter).to receive(:value).with('ipaddress').and_return("my.ip.address")
21
- end
22
-
23
- it "should gather data about itself" do
24
- Puppet::Resource::Catalog::Compiler.new
14
+ allow(Puppet).to receive(:version).and_return(1)
25
15
  end
26
16
 
27
17
  it "should cache the server metadata and reuse it" do
@@ -38,8 +28,6 @@ describe Puppet::Resource::Catalog::Compiler do
38
28
 
39
29
  describe "when finding catalogs" do
40
30
  before do
41
- allow(Facter).to receive(:value).and_return("whatever")
42
-
43
31
  allow(node).to receive(:merge)
44
32
  allow(Puppet::Node.indirection).to receive(:find).and_return(node)
45
33
  @request = Puppet::Indirector::Request.new(:catalog, :find, node_name, nil, :node => node_name)
@@ -246,10 +234,10 @@ describe Puppet::Resource::Catalog::Compiler do
246
234
 
247
235
  describe "when handling a request with facts" do
248
236
  before do
249
- Puppet::Node::Facts.indirection.terminus_class = :memory
250
237
  allow(Facter).to receive(:value).and_return("something")
251
238
 
252
- @facts = Puppet::Node::Facts.new('hostname', "fact" => "value", "architecture" => "i386")
239
+ facts = Puppet::Node::Facts.new('hostname', "fact" => "value", "architecture" => "i386")
240
+ Puppet::Node::Facts.indirection.save(facts)
253
241
  end
254
242
 
255
243
  def a_legacy_request_that_contains(facts, format = :pson)
@@ -267,6 +255,8 @@ describe Puppet::Resource::Catalog::Compiler do
267
255
  end
268
256
 
269
257
  context "when extracting facts from the request" do
258
+ let(:facts) { Puppet::Node::Facts.new("hostname") }
259
+
270
260
  it "should do nothing if no facts are provided" do
271
261
  request = Puppet::Indirector::Request.new(:catalog, :find, "hostname", nil)
272
262
  request.options[:facts] = nil
@@ -276,21 +266,21 @@ describe Puppet::Resource::Catalog::Compiler do
276
266
 
277
267
  it "should deserialize the facts without changing the timestamp" do
278
268
  time = Time.now
279
- @facts.timestamp = time
280
- request = a_request_that_contains(@facts)
269
+ facts.timestamp = time
270
+ request = a_request_that_contains(facts)
281
271
  facts = compiler.extract_facts_from_request(request)
282
272
  expect(facts.timestamp).to eq(time)
283
273
  end
284
274
 
285
275
  it "accepts PSON facts from older agents" do
286
- request = a_legacy_request_that_contains(@facts)
276
+ request = a_legacy_request_that_contains(facts)
287
277
 
288
278
  facts = compiler.extract_facts_from_request(request)
289
- expect(facts).to eq(@facts)
279
+ expect(facts).to eq(facts)
290
280
  end
291
281
 
292
282
  it "rejects YAML facts" do
293
- request = a_legacy_request_that_contains(@facts, :yaml)
283
+ request = a_legacy_request_that_contains(facts, :yaml)
294
284
 
295
285
  expect {
296
286
  compiler.extract_facts_from_request(request)
@@ -298,7 +288,7 @@ describe Puppet::Resource::Catalog::Compiler do
298
288
  end
299
289
 
300
290
  it "rejects unknown fact formats" do
301
- request = a_request_that_contains(@facts)
291
+ request = a_request_that_contains(facts)
302
292
  request.options[:facts_format] = 'unknown-format'
303
293
 
304
294
  expect {
@@ -308,15 +298,17 @@ describe Puppet::Resource::Catalog::Compiler do
308
298
  end
309
299
 
310
300
  context "when saving facts from the request" do
301
+ let(:facts) { Puppet::Node::Facts.new("hostname") }
302
+
311
303
  it "should save facts if they were issued by the request" do
312
- request = a_request_that_contains(@facts)
304
+ request = a_request_that_contains(facts)
313
305
 
314
306
  options = {
315
307
  :environment => request.environment,
316
308
  :transaction_uuid => request.options[:transaction_uuid],
317
309
  }
318
310
 
319
- expect(Puppet::Node::Facts.indirection).to receive(:save).with(@facts, nil, options)
311
+ expect(Puppet::Node::Facts.indirection).to receive(:save).with(facts, nil, options)
320
312
  compiler.find(request)
321
313
  end
322
314
 
@@ -328,7 +320,7 @@ describe Puppet::Resource::Catalog::Compiler do
328
320
  :transaction_uuid => request.options[:transaction_uuid],
329
321
  }
330
322
 
331
- expect(Puppet::Node::Facts.indirection).not_to receive(:save).with(@facts, nil, options)
323
+ expect(Puppet::Node::Facts.indirection).not_to receive(:save).with(facts, nil, options)
332
324
  compiler.find(request)
333
325
  end
334
326
  end
@@ -336,7 +328,6 @@ describe Puppet::Resource::Catalog::Compiler do
336
328
 
337
329
  describe "when finding nodes" do
338
330
  it "should look node information up via the Node class with the provided key" do
339
- allow(Facter).to receive(:value).and_return("whatever")
340
331
  request = Puppet::Indirector::Request.new(:catalog, :find, node_name, nil)
341
332
  allow(compiler).to receive(:compile)
342
333
 
@@ -414,9 +405,37 @@ describe Puppet::Resource::Catalog::Compiler do
414
405
  end
415
406
  end
416
407
 
408
+ describe "after finding nodes when checking for a PE version" do
409
+ include PuppetSpec::Compiler
410
+
411
+ let(:pe_version_file) { '/opt/puppetlabs/server/pe_version' }
412
+ let(:request) { Puppet::Indirector::Request.new(:catalog, :find, node_name, nil) }
413
+
414
+ before :each do
415
+ Puppet[:code] = 'notify { "PE Version: $pe_serverversion": }'
416
+ end
417
+
418
+ it "should not add 'pe_serverversion' when FOSS" do
419
+ allow(Puppet::Node.indirection).to receive(:find).with(node_name, anything).and_return(node)
420
+ catalog = compiler.find(request)
421
+
422
+ expect(catalog.resource('notify', 'PE Version: 2019.2.0')).to be_nil
423
+ end
424
+
425
+ it "should add 'pe_serverversion' when PE" do
426
+ allow(File).to receive(:readable?).with(pe_version_file).and_return(true)
427
+ allow(File).to receive(:zero?).with(pe_version_file).and_return(false)
428
+ allow(File).to receive(:read).with(pe_version_file).and_return('2019.2.0')
429
+
430
+ allow(Puppet::Node.indirection).to receive(:find).with(node_name, anything).and_return(node)
431
+ catalog = compiler.find(request)
432
+
433
+ expect(catalog.resource('notify', 'PE Version: 2019.2.0')).to be
434
+ end
435
+ end
436
+
417
437
  describe "when filtering resources" do
418
438
  before :each do
419
- allow(Facter).to receive(:value)
420
439
  @catalog = double('catalog')
421
440
  allow(@catalog).to receive(:respond_to?).with(:filter).and_return(true)
422
441
  end
@@ -135,7 +135,7 @@ describe Puppet::Network::HTTP::Connection do
135
135
  end
136
136
 
137
137
  context "when response indicates an overloaded server" do
138
- let(:http) { double('http') }
138
+ let(:http) { double('http', :started? => true) }
139
139
  let(:site) { Puppet::Network::HTTP::Site.new('http', 'my_server', 8140) }
140
140
  let(:verify) { Puppet::SSL::Validator.no_validator }
141
141
  let(:httpunavailable) { Net::HTTPServiceUnavailable.new('1.1', 503, 'Service Unavailable') }
@@ -158,6 +158,7 @@ describe Puppet::Network::HTTP::Connection do
158
158
 
159
159
  pool = Puppet.lookup(:http_pool)
160
160
  expect(pool).to receive(:with_connection).with(site, anything).and_yield(http)
161
+ allow(http).to receive(:finish)
161
162
 
162
163
  result = subject.get('/foo')
163
164
 
@@ -167,6 +168,7 @@ describe Puppet::Network::HTTP::Connection do
167
168
  it "should return a 503 response if Retry-After is not convertible to an Integer or RFC 2822 Date" do
168
169
  httpunavailable['Retry-After'] = 'foo'
169
170
  allow(http).to receive(:request).and_return(httpunavailable)
171
+ allow(http).to receive(:finish)
170
172
 
171
173
  pool = Puppet.lookup(:http_pool)
172
174
  expect(pool).to receive(:with_connection).with(site, anything).and_yield(http)
@@ -176,9 +178,21 @@ describe Puppet::Network::HTTP::Connection do
176
178
  expect(result.code).to eq(503)
177
179
  end
178
180
 
181
+ it "should close the connection before sleeping" do
182
+ allow(http).to receive(:request).and_return(httpunavailable, httpok)
183
+
184
+ pool = Puppet.lookup(:http_pool)
185
+ expect(pool).to receive(:with_connection).with(site, anything).and_yield(http)
186
+
187
+ expect(http).to receive(:finish)
188
+
189
+ subject.get('/foo')
190
+ end
191
+
179
192
  it "should sleep and retry if Retry-After is an Integer" do
180
193
  httpunavailable['Retry-After'] = '42'
181
194
  allow(http).to receive(:request).and_return(httpunavailable, httpok)
195
+ allow(http).to receive(:finish)
182
196
 
183
197
  pool = Puppet.lookup(:http_pool)
184
198
  expect(pool).to receive(:with_connection).with(site, anything).twice.and_yield(http)
@@ -193,6 +207,7 @@ describe Puppet::Network::HTTP::Connection do
193
207
  it "should sleep and retry if Retry-After is an RFC 2822 Date" do
194
208
  httpunavailable['Retry-After'] = 'Wed, 13 Apr 2005 15:18:05 GMT'
195
209
  allow(http).to receive(:request).and_return(httpunavailable, httpok)
210
+ allow(http).to receive(:finish)
196
211
 
197
212
  now = DateTime.new(2005, 4, 13, 8, 17, 5, '-07:00')
198
213
  allow(DateTime).to receive(:now).and_return(now)
@@ -210,6 +225,7 @@ describe Puppet::Network::HTTP::Connection do
210
225
  it "should sleep for no more than the Puppet runinterval" do
211
226
  httpunavailable['Retry-After'] = '60'
212
227
  allow(http).to receive(:request).and_return(httpunavailable, httpok)
228
+ allow(http).to receive(:finish)
213
229
  Puppet[:runinterval] = 30
214
230
 
215
231
  pool = Puppet.lookup(:http_pool)
@@ -60,6 +60,8 @@ describe Puppet::Network::HTTP::Pool do
60
60
 
61
61
  it 'returns the connection to the pool' do
62
62
  conn = create_connection(site)
63
+ expect(conn).to receive(:started?).and_return(true)
64
+
63
65
  pool = create_pool
64
66
  pool.release(site, conn)
65
67
 
@@ -137,6 +139,7 @@ describe Puppet::Network::HTTP::Pool do
137
139
  it 'releases HTTP connections' do
138
140
  conn = create_connection(site)
139
141
  expect(conn).to receive(:use_ssl?).and_return(false)
142
+ expect(conn).to receive(:started?).and_return(true)
140
143
 
141
144
  pool = create_pool_with_connections(site, conn)
142
145
  expect(pool).to receive(:release).with(site, conn)
@@ -148,6 +151,7 @@ describe Puppet::Network::HTTP::Pool do
148
151
  conn = create_connection(site)
149
152
  expect(conn).to receive(:use_ssl?).and_return(true)
150
153
  expect(conn).to receive(:verify_mode).and_return(OpenSSL::SSL::VERIFY_PEER)
154
+ expect(conn).to receive(:started?).and_return(true)
151
155
 
152
156
  pool = create_pool_with_connections(site, conn)
153
157
  expect(pool).to receive(:release).with(site, conn)
@@ -166,6 +170,19 @@ describe Puppet::Network::HTTP::Pool do
166
170
 
167
171
  pool.with_connection(site, verify) {|c| }
168
172
  end
173
+
174
+ it "doesn't add a closed connection back to the pool" do
175
+ http = Net::HTTP.new(site.addr)
176
+ http.use_ssl = true
177
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
178
+ http.start
179
+
180
+ pool = create_pool_with_connections(site, http)
181
+
182
+ pool.with_connection(site, verify) {|c| c.finish}
183
+
184
+ expect(pool.pool[site]).to be_empty
185
+ end
169
186
  end
170
187
  end
171
188
 
@@ -228,6 +245,7 @@ describe Puppet::Network::HTTP::Pool do
228
245
 
229
246
  it 'finishes expired connections' do
230
247
  conn = create_connection(site)
248
+ allow(conn).to receive(:started?).and_return(true)
231
249
  expect(conn).to receive(:finish)
232
250
 
233
251
  pool = create_pool_with_expired_connections(site, conn)
@@ -241,6 +259,7 @@ describe Puppet::Network::HTTP::Pool do
241
259
  expect(Puppet).to receive(:log_exception).with(be_a(IOError), "Failed to close connection for #{site}: read timeout")
242
260
 
243
261
  conn = create_connection(site)
262
+ expect(conn).to receive(:started?).and_return(true)
244
263
  expect(conn).to receive(:finish).and_raise(IOError, 'read timeout')
245
264
 
246
265
  pool = create_pool_with_expired_connections(site, conn)
@@ -289,10 +308,23 @@ describe Puppet::Network::HTTP::Pool do
289
308
 
290
309
  it 'closes all cached connections' do
291
310
  conn = create_connection(site)
311
+ allow(conn).to receive(:started?).and_return(true)
292
312
  expect(conn).to receive(:finish)
293
313
 
294
314
  pool = create_pool_with_connections(site, conn)
295
315
  pool.close
296
316
  end
317
+
318
+ it 'allows a connection to be closed multiple times safely' do
319
+ http = Net::HTTP.new(site.addr)
320
+ http.use_ssl = true
321
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
322
+ http.start
323
+
324
+ pool = create_pool
325
+
326
+ expect(pool.close_connection(site, http)).to eq(true)
327
+ expect(pool.close_connection(site, http)).to eq(false)
328
+ end
297
329
  end
298
330
  end
@@ -414,7 +414,9 @@ end
414
414
 
415
415
  describe Puppet::Node, "when generating the list of names to search through" do
416
416
  before do
417
- @node = Puppet::Node.new("foo.domain.com", :parameters => {"hostname" => "yay", "domain" => "domain.com"})
417
+ Puppet[:strict_hostname_checking] = false
418
+ @node = Puppet::Node.new("foo.domain.com",
419
+ :parameters => {"hostname" => "yay", "domain" => "domain.com"})
418
420
  end
419
421
 
420
422
  it "returns an array of names" do
@@ -445,7 +447,6 @@ describe Puppet::Node, "when generating the list of names to search through" do
445
447
 
446
448
  describe "and :node_name is set to 'cert'" do
447
449
  before do
448
- Puppet[:strict_hostname_checking] = false
449
450
  Puppet[:node_name] = "cert"
450
451
  end
451
452
 
@@ -454,8 +455,11 @@ describe Puppet::Node, "when generating the list of names to search through" do
454
455
  end
455
456
 
456
457
  describe "and strict hostname checking is enabled" do
457
- it "only uses the passed-in key" do
458
+ before do
458
459
  Puppet[:strict_hostname_checking] = true
460
+ end
461
+
462
+ it "only uses the passed-in key" do
459
463
  expect(@node.names).to eq(["foo.domain.com"])
460
464
  end
461
465
  end
@@ -463,7 +467,6 @@ describe Puppet::Node, "when generating the list of names to search through" do
463
467
 
464
468
  describe "and :node_name is set to 'facter'" do
465
469
  before do
466
- Puppet[:strict_hostname_checking] = false
467
470
  Puppet[:node_name] = "facter"
468
471
  end
469
472
 
@@ -47,7 +47,7 @@ describe Puppet::Type.type(:group).provider(:groupadd) do
47
47
  described_class.has_feature(:libuser)
48
48
  resource[:forcelocal] = :true
49
49
  end
50
-
50
+
51
51
  it "should use lgroupadd instead of groupadd" do
52
52
  expect(provider).to receive(:execute).with(including('/usr/sbin/lgroupadd'), hash_including(:custom_environment => hash_including('LIBUSER_CONF')))
53
53
  provider.create
@@ -124,6 +124,35 @@ describe Puppet::Type.type(:group).provider(:groupadd) do
124
124
  end
125
125
  end
126
126
 
127
+ describe "#findgroup" do
128
+ before { allow(File).to receive(:read).with('/etc/group').and_return(content) }
129
+
130
+ let(:content) { "sample_group_name:sample_password:sample_gid:sample_user_list" }
131
+ let(:output) do
132
+ {
133
+ group_name: 'sample_group_name',
134
+ password: 'sample_password',
135
+ gid: 'sample_gid',
136
+ user_list: 'sample_user_list',
137
+ }
138
+ end
139
+
140
+ [:group_name, :password, :gid, :user_list].each do |key|
141
+ it "finds a group by #{key} when asked" do
142
+ expect(provider.send(:findgroup, key, "sample_#{key}")).to eq(output)
143
+ end
144
+ end
145
+
146
+ it "returns false when specified key/value pair is not found" do
147
+ expect(provider.send(:findgroup, :group_name, 'invalid_group_name')).to eq(false)
148
+ end
149
+
150
+ it "reads the group file only once per resource" do
151
+ expect(File).to receive(:read).with('/etc/group').once
152
+ 5.times { provider.send(:findgroup, :group_name, 'sample_group_name') }
153
+ end
154
+ end
155
+
127
156
  describe "#delete" do
128
157
  before do
129
158
  allow(provider).to receive(:exists?).and_return(true)
@@ -32,12 +32,14 @@ describe Puppet::Type.type(:package).provider(:apt) do
32
32
 
33
33
  it "should use 'apt-get remove' to uninstall" do
34
34
  expect(provider).to receive(:aptget).with("-y", "-q", :remove, name)
35
+ expect(provider).to receive(:properties).and_return({:mark => :none})
35
36
  provider.uninstall
36
37
  end
37
38
 
38
39
  it "should use 'apt-get purge' and 'dpkg purge' to purge" do
39
40
  expect(provider).to receive(:aptget).with("-y", "-q", :remove, "--purge", name)
40
41
  expect(provider).to receive(:dpkg).with("--purge", name)
42
+ expect(provider).to receive(:properties).and_return({:mark => :none})
41
43
  provider.purge
42
44
  end
43
45
 
@@ -88,14 +90,14 @@ Version table:
88
90
  it "should preseed if a responsefile is provided" do
89
91
  resource[:responsefile] = "/my/file"
90
92
  expect(provider).to receive(:run_preseed)
91
-
93
+ expect(provider).to receive(:properties).and_return({:mark => :none})
92
94
  allow(provider).to receive(:aptget)
93
95
  provider.install
94
96
  end
95
97
 
96
98
  it "should check for a cdrom" do
97
99
  expect(provider).to receive(:checkforcdrom)
98
-
100
+ expect(provider).to receive(:properties).and_return({:mark => :none})
99
101
  allow(provider).to receive(:aptget)
100
102
  provider.install
101
103
  end
@@ -106,6 +108,7 @@ Version table:
106
108
  expect(command[-1]).to eq(name)
107
109
  expect(command[-2]).to eq(:install)
108
110
  end
111
+ expect(provider).to receive(:properties).and_return({:mark => :none})
109
112
 
110
113
  provider.install
111
114
  end
@@ -115,6 +118,7 @@ Version table:
115
118
  expect(provider).to receive(:aptget) do |*command|
116
119
  expect(command[-1]).to eq("#{name}=1.0")
117
120
  end
121
+ expect(provider).to receive(:properties).and_return({:mark => :none})
118
122
 
119
123
  provider.install
120
124
  end
@@ -124,6 +128,7 @@ Version table:
124
128
  expect(provider).to receive(:aptget) do |*command|
125
129
  expect(command).to include("--force-yes")
126
130
  end
131
+ expect(provider).to receive(:properties).and_return({:mark => :none})
127
132
 
128
133
  provider.install
129
134
  end
@@ -132,6 +137,7 @@ Version table:
132
137
  expect(provider).to receive(:aptget) do |*command|
133
138
  expect(command).to include("-q")
134
139
  end
140
+ expect(provider).to receive(:properties).and_return({:mark => :none})
135
141
 
136
142
  provider.install
137
143
  end
@@ -140,6 +146,7 @@ Version table:
140
146
  expect(provider).to receive(:aptget) do |*command|
141
147
  expect(command).to include("-y")
142
148
  end
149
+ expect(provider).to receive(:properties).and_return({:mark => :none})
143
150
 
144
151
  provider.install
145
152
  end
@@ -149,6 +156,7 @@ Version table:
149
156
  expect(provider).to receive(:aptget) do |*command|
150
157
  expect(command).to include("DPkg::Options::=--force-confold")
151
158
  end
159
+ expect(provider).to receive(:properties).and_return({:mark => :none})
152
160
 
153
161
  provider.install
154
162
  end
@@ -158,6 +166,7 @@ Version table:
158
166
  expect(provider).to receive(:aptget) do |*command|
159
167
  expect(command).to include("DPkg::Options::=--force-confnew")
160
168
  end
169
+ expect(provider).to receive(:properties).and_return({:mark => :none})
161
170
 
162
171
  provider.install
163
172
  end
@@ -165,6 +174,7 @@ Version table:
165
174
  it 'should support string install options' do
166
175
  resource[:install_options] = ['--foo', '--bar']
167
176
  expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar', :install, name)
177
+ expect(provider).to receive(:properties).and_return({:mark => :none})
168
178
 
169
179
  provider.install
170
180
  end
@@ -172,6 +182,7 @@ Version table:
172
182
  it 'should support hash install options' do
173
183
  resource[:install_options] = ['--foo', { '--bar' => 'baz', '--baz' => 'foo' }]
174
184
  expect(provider).to receive(:aptget).with('-q', '-y', '-o', 'DPkg::Options::=--force-confold', '--foo', '--bar=baz', '--baz=foo', :install, name)
185
+ expect(provider).to receive(:properties).and_return({:mark => :none})
175
186
 
176
187
  provider.install
177
188
  end