puppet 5.5.8 → 5.5.10

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +14 -14
  3. data/Rakefile +3 -1
  4. data/ext/solaris/smf/svc-puppetd +8 -1
  5. data/ext/solaris/smf/svc-puppetmasterd +8 -1
  6. data/lib/puppet/application/device.rb +45 -29
  7. data/lib/puppet/face/config.rb +1 -1
  8. data/lib/puppet/forge.rb +4 -1
  9. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +3 -1
  10. data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
  11. data/lib/puppet/pops/types/string_converter.rb +11 -2
  12. data/lib/puppet/provider/cron/crontab.rb +1 -1
  13. data/lib/puppet/provider/package/windows/exe_package.rb +13 -0
  14. data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
  15. data/lib/puppet/provider/package/windows/package.rb +9 -1
  16. data/lib/puppet/provider/parsedfile.rb +25 -4
  17. data/lib/puppet/provider/service/smf.rb +54 -0
  18. data/lib/puppet/transaction.rb +4 -1
  19. data/lib/puppet/transaction/event_manager.rb +13 -1
  20. data/lib/puppet/transaction/resource_harness.rb +3 -1
  21. data/lib/puppet/util/command_line.rb +2 -3
  22. data/lib/puppet/util/filetype.rb +36 -4
  23. data/lib/puppet/util/selinux.rb +1 -1
  24. data/lib/puppet/util/windows/api_types.rb +1 -1
  25. data/lib/puppet/util/windows/registry.rb +29 -5
  26. data/lib/puppet/util/windows/service.rb +106 -99
  27. data/lib/puppet/version.rb +1 -1
  28. data/locales/puppet.pot +97 -69
  29. data/man/man5/puppet.conf.5 +2 -2
  30. data/man/man8/puppet-agent.8 +1 -1
  31. data/man/man8/puppet-apply.8 +1 -1
  32. data/man/man8/puppet-ca.8 +1 -1
  33. data/man/man8/puppet-catalog.8 +1 -1
  34. data/man/man8/puppet-cert.8 +1 -1
  35. data/man/man8/puppet-certificate.8 +1 -1
  36. data/man/man8/puppet-certificate_request.8 +1 -1
  37. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  38. data/man/man8/puppet-config.8 +2 -2
  39. data/man/man8/puppet-describe.8 +1 -1
  40. data/man/man8/puppet-device.8 +23 -19
  41. data/man/man8/puppet-doc.8 +1 -1
  42. data/man/man8/puppet-epp.8 +1 -1
  43. data/man/man8/puppet-facts.8 +1 -1
  44. data/man/man8/puppet-filebucket.8 +1 -1
  45. data/man/man8/puppet-generate.8 +1 -1
  46. data/man/man8/puppet-help.8 +1 -1
  47. data/man/man8/puppet-key.8 +1 -1
  48. data/man/man8/puppet-lookup.8 +1 -1
  49. data/man/man8/puppet-man.8 +1 -1
  50. data/man/man8/puppet-master.8 +1 -1
  51. data/man/man8/puppet-module.8 +1 -1
  52. data/man/man8/puppet-node.8 +1 -1
  53. data/man/man8/puppet-parser.8 +1 -1
  54. data/man/man8/puppet-plugin.8 +1 -1
  55. data/man/man8/puppet-report.8 +1 -1
  56. data/man/man8/puppet-resource.8 +1 -1
  57. data/man/man8/puppet-script.8 +1 -1
  58. data/man/man8/puppet-status.8 +1 -1
  59. data/man/man8/puppet.8 +2 -2
  60. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
  61. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
  62. data/spec/integration/ssl/key_spec.rb +0 -4
  63. data/spec/integration/transaction_spec.rb +1 -1
  64. data/spec/integration/util/windows/registry_spec.rb +39 -0
  65. data/spec/unit/application/device_spec.rb +4 -1
  66. data/spec/unit/application/lookup_spec.rb +10 -9
  67. data/spec/unit/forge/forge_spec.rb +4 -2
  68. data/spec/unit/indirector/yaml_spec.rb +1 -1
  69. data/spec/unit/pops/loaders/loader_spec.rb +6 -7
  70. data/spec/unit/pops/types/p_timespan_type_spec.rb +22 -0
  71. data/spec/unit/pops/types/p_timestamp_type_spec.rb +19 -0
  72. data/spec/unit/pops/types/string_converter_spec.rb +20 -0
  73. data/spec/unit/provider/cron/parsed_spec.rb +4 -3
  74. data/spec/unit/provider/group/ldap_spec.rb +22 -25
  75. data/spec/unit/provider/group/pw_spec.rb +7 -10
  76. data/spec/unit/provider/host/parsed_spec.rb +3 -17
  77. data/spec/unit/provider/nameservice/directoryservice_spec.rb +97 -103
  78. data/spec/unit/provider/package/aix_spec.rb +5 -8
  79. data/spec/unit/provider/package/apt_spec.rb +3 -6
  80. data/spec/unit/provider/package/dnf_spec.rb +29 -31
  81. data/spec/unit/provider/package/dpkg_spec.rb +18 -21
  82. data/spec/unit/provider/package/freebsd_spec.rb +4 -7
  83. data/spec/unit/provider/package/gem_spec.rb +41 -41
  84. data/spec/unit/provider/package/hpux_spec.rb +7 -10
  85. data/spec/unit/provider/package/macports_spec.rb +13 -15
  86. data/spec/unit/provider/package/nim_spec.rb +3 -10
  87. data/spec/unit/provider/package/openbsd_spec.rb +14 -17
  88. data/spec/unit/provider/package/pip3_spec.rb +3 -6
  89. data/spec/unit/provider/package/pip_spec.rb +44 -72
  90. data/spec/unit/provider/package/pkgin_spec.rb +13 -18
  91. data/spec/unit/provider/package/pkgng_spec.rb +21 -24
  92. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -9
  93. data/spec/unit/provider/package/tdnf_spec.rb +9 -12
  94. data/spec/unit/provider/package/yum_spec.rb +29 -15
  95. data/spec/unit/provider/package/zypper_spec.rb +17 -19
  96. data/spec/unit/provider/service/bsd_spec.rb +8 -12
  97. data/spec/unit/provider/service/daemontools_spec.rb +12 -20
  98. data/spec/unit/provider/service/debian_spec.rb +8 -16
  99. data/spec/unit/provider/service/freebsd_spec.rb +2 -5
  100. data/spec/unit/provider/service/openbsd_spec.rb +12 -18
  101. data/spec/unit/provider/service/rcng_spec.rb +3 -7
  102. data/spec/unit/provider/service/redhat_spec.rb +21 -23
  103. data/spec/unit/provider/service/runit_spec.rb +9 -19
  104. data/spec/unit/provider/service/smf_spec.rb +82 -21
  105. data/spec/unit/provider/service/src_spec.rb +14 -23
  106. data/spec/unit/provider/user/hpux_spec.rb +2 -5
  107. data/spec/unit/provider/user/ldap_spec.rb +29 -32
  108. data/spec/unit/provider/user/pw_spec.rb +10 -13
  109. data/spec/unit/ssl/key_spec.rb +2 -4
  110. data/spec/unit/transaction/event_manager_spec.rb +12 -1
  111. data/spec/unit/transaction/resource_harness_spec.rb +18 -0
  112. data/spec/unit/transaction_spec.rb +25 -0
  113. data/spec/unit/util/filetype_spec.rb +13 -5
  114. data/spec/unit/util/logging_spec.rb +0 -41
  115. data/spec/unit/util/monkey_patches_spec.rb +18 -5
  116. data/spec/unit/util/selinux_spec.rb +4 -0
  117. metadata +6 -2
@@ -1,9 +1,6 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- provider_class = Puppet::Type.type(:package).provider(:pip3)
5
-
6
- describe provider_class do
3
+ describe Puppet::Type.type(:package).provider(:pip3) do
7
4
 
8
5
  it { is_expected.to be_installable }
9
6
  it { is_expected.to be_uninstallable }
@@ -12,11 +9,11 @@ describe provider_class do
12
9
  it { is_expected.to be_install_options }
13
10
 
14
11
  it "should inherit most things from pip provider" do
15
- expect(provider_class < Puppet::Type.type(:package).provider(:pip))
12
+ expect(described_class < Puppet::Type.type(:package).provider(:pip))
16
13
  end
17
14
 
18
15
  it "should use pip3 command" do
19
- expect(provider_class.cmd).to eq(["pip3"])
16
+ expect(described_class.cmd).to eq(["pip3"])
20
17
  end
21
18
 
22
19
  end
@@ -1,23 +1,19 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- provider_class = Puppet::Type.type(:package).provider(:pip)
5
3
  osfamilies = { 'windows' => ['pip.exe'], 'other' => ['pip', 'pip-python'] }
6
4
 
7
- describe provider_class do
8
-
5
+ describe Puppet::Type.type(:package).provider(:pip) do
9
6
  before do
10
7
  @resource = Puppet::Resource.new(:package, "fake_package")
11
- @provider = provider_class.new(@resource)
8
+ @provider = described_class.new(@resource)
12
9
  @client = stub_everything('client')
13
10
  @client.stubs(:call).with('package_releases', 'real_package').returns(["1.3", "1.2.5", "1.2.4"])
14
11
  @client.stubs(:call).with('package_releases', 'fake_package').returns([])
15
12
  end
16
13
 
17
- describe "parse" do
18
-
14
+ context "parse" do
19
15
  it "should return a hash on valid input" do
20
- expect(provider_class.parse("real_package==1.2.5")).to eq({
16
+ expect(described_class.parse("real_package==1.2.5")).to eq({
21
17
  :ensure => "1.2.5",
22
18
  :name => "real_package",
23
19
  :provider => :pip,
@@ -25,48 +21,43 @@ describe provider_class do
25
21
  end
26
22
 
27
23
  it "should return nil on invalid input" do
28
- expect(provider_class.parse("foo")).to eq(nil)
24
+ expect(described_class.parse("foo")).to eq(nil)
29
25
  end
30
-
31
26
  end
32
27
 
33
- describe "cmd" do
34
-
28
+ context "cmd" do
35
29
  it "should return 'pip.exe' by default on Windows systems" do
36
30
  Puppet.features.stubs(:microsoft_windows?).returns true
37
- expect(provider_class.cmd[0]).to eq('pip.exe')
31
+ expect(described_class.cmd[0]).to eq('pip.exe')
38
32
  end
39
33
 
40
34
  it "could return pip-python on legacy redhat systems which rename pip" do
41
35
  Puppet.features.stubs(:microsoft_windows?).returns false
42
- expect(provider_class.cmd[1]).to eq('pip-python')
36
+ expect(described_class.cmd[1]).to eq('pip-python')
43
37
  end
44
38
 
45
39
  it "should return pip by default on other systems" do
46
40
  Puppet.features.stubs(:microsoft_windows?).returns false
47
- expect(provider_class.cmd[0]).to eq('pip')
41
+ expect(described_class.cmd[0]).to eq('pip')
48
42
  end
49
-
50
43
  end
51
44
 
52
- describe "instances" do
53
-
45
+ context "instances" do
54
46
  osfamilies.each do |osfamily, pip_cmds|
55
-
56
47
  it "should return an array on #{osfamily} systems when #{pip_cmds.join(' or ')} is present" do
57
48
  Puppet.features.stubs(:microsoft_windows?).returns (osfamily == 'windows')
58
49
  pip_cmds.each do |pip_cmd|
59
50
  pip_cmds.each do |cmd|
60
51
  unless cmd == pip_cmd
61
- provider_class.expects(:which).with(cmd).returns(nil)
52
+ described_class.expects(:which).with(cmd).returns(nil)
62
53
  end
63
54
  end
64
- provider_class.stubs(:pip_version).returns('8.0.1')
65
- provider_class.expects(:which).with(pip_cmd).returns("/fake/bin/#{pip_cmd}")
55
+ described_class.stubs(:pip_version).returns('8.0.1')
56
+ described_class.expects(:which).with(pip_cmd).returns("/fake/bin/#{pip_cmd}")
66
57
  p = stub("process")
67
58
  p.expects(:collect).yields("real_package==1.2.5")
68
- provider_class.expects(:execpipe).with(["/fake/bin/#{pip_cmd}", "freeze"]).yields(p)
69
- provider_class.instances
59
+ described_class.expects(:execpipe).with(["/fake/bin/#{pip_cmd}", "freeze"]).yields(p)
60
+ described_class.instances
70
61
  end
71
62
  end
72
63
 
@@ -75,12 +66,12 @@ describe provider_class do
75
66
  versions.each do |version|
76
67
  it "should use the --all option when version is '#{version}'" do
77
68
  Puppet.features.stubs(:microsoft_windows?).returns (osfamily == 'windows')
78
- provider_class.stubs(:pip_cmd).returns('/fake/bin/pip')
79
- provider_class.stubs(:pip_version).returns(version)
69
+ described_class.stubs(:pip_cmd).returns('/fake/bin/pip')
70
+ described_class.stubs(:pip_version).returns(version)
80
71
  p = stub("process")
81
72
  p.expects(:collect).yields("real_package==1.2.5")
82
- provider_class.expects(:execpipe).with(["/fake/bin/pip", "freeze", "--all"]).yields(p)
83
- provider_class.instances
73
+ described_class.expects(:execpipe).with(["/fake/bin/pip", "freeze", "--all"]).yields(p)
74
+ described_class.instances
84
75
  end
85
76
  end
86
77
  end
@@ -88,23 +79,20 @@ describe provider_class do
88
79
  it "should return an empty array on #{osfamily} systems when #{pip_cmds.join(' and ')} are missing" do
89
80
  Puppet.features.stubs(:microsoft_windows?).returns (osfamily == 'windows')
90
81
  pip_cmds.each do |cmd|
91
- provider_class.expects(:which).with(cmd).returns nil
82
+ described_class.expects(:which).with(cmd).returns nil
92
83
  end
93
- expect(provider_class.instances).to eq([])
84
+ expect(described_class.instances).to eq([])
94
85
  end
95
-
96
86
  end
97
-
98
87
  end
99
88
 
100
- describe "query" do
101
-
89
+ context "query" do
102
90
  before do
103
91
  @resource[:name] = "real_package"
104
92
  end
105
93
 
106
94
  it "should return a hash when pip and the package are present" do
107
- provider_class.expects(:instances).returns [provider_class.new({
95
+ described_class.expects(:instances).returns [described_class.new({
108
96
  :ensure => "1.2.5",
109
97
  :name => "real_package",
110
98
  :provider => :pip,
@@ -118,14 +106,14 @@ describe provider_class do
118
106
  end
119
107
 
120
108
  it "should return nil when the package is missing" do
121
- provider_class.expects(:instances).returns []
109
+ described_class.expects(:instances).returns []
122
110
  expect(@provider.query).to eq(nil)
123
111
  end
124
112
 
125
113
  it "should be case insensitive" do
126
114
  @resource[:name] = "Real_Package"
127
115
 
128
- provider_class.expects(:instances).returns [provider_class.new({
116
+ described_class.expects(:instances).returns [described_class.new({
129
117
  :ensure => "1.2.5",
130
118
  :name => "real_package",
131
119
  :provider => :pip,
@@ -137,16 +125,15 @@ describe provider_class do
137
125
  :provider => :pip,
138
126
  })
139
127
  end
140
-
141
128
  end
142
129
 
143
- describe "latest" do
130
+ context "latest" do
144
131
  context "with pip version < 1.5.4" do
145
132
  before :each do
146
- provider_class.stubs(:pip_version).returns('1.0.1')
147
- provider_class.stubs(:which).with('pip').returns("/fake/bin/pip")
148
- provider_class.stubs(:which).with('pip-python').returns("/fake/bin/pip")
149
- provider_class.stubs(:which).with('pip.exe').returns("/fake/bin/pip")
133
+ described_class.stubs(:pip_version).returns('1.0.1')
134
+ described_class.stubs(:which).with('pip').returns("/fake/bin/pip")
135
+ described_class.stubs(:which).with('pip-python').returns("/fake/bin/pip")
136
+ described_class.stubs(:which).with('pip.exe').returns("/fake/bin/pip")
150
137
  end
151
138
 
152
139
  it "should find a version number for new_pip_package" do
@@ -198,12 +185,11 @@ describe provider_class do
198
185
  context "with pip version >= 1.5.4" do
199
186
  # For Pip 1.5.4 and above, you can get a version list from CLI - which allows for native pip behavior
200
187
  # with regards to custom repositories, proxies and the like
201
-
202
188
  before :each do
203
- provider_class.stubs(:pip_version).returns('1.5.4')
204
- provider_class.stubs(:which).with('pip').returns("/fake/bin/pip")
205
- provider_class.stubs(:which).with('pip-python').returns("/fake/bin/pip")
206
- provider_class.stubs(:which).with('pip.exe').returns("/fake/bin/pip")
189
+ described_class.stubs(:pip_version).returns('1.5.4')
190
+ described_class.stubs(:which).with('pip').returns("/fake/bin/pip")
191
+ described_class.stubs(:which).with('pip-python').returns("/fake/bin/pip")
192
+ described_class.stubs(:which).with('pip.exe').returns("/fake/bin/pip")
207
193
  end
208
194
 
209
195
  it "should find a version number for real_package" do
@@ -247,11 +233,9 @@ describe provider_class do
247
233
  expect(latest).to eq('15.0.2')
248
234
  end
249
235
  end
250
-
251
236
  end
252
237
 
253
- describe "install" do
254
-
238
+ context "install" do
255
239
  before do
256
240
  @resource[:name] = "fake_package"
257
241
  @url = "git+https://example.com/fake_package.git"
@@ -314,48 +298,40 @@ describe provider_class do
314
298
  with("install", "-q", "--timeout=10", "--no-index", "fake_package")
315
299
  @provider.install
316
300
  end
317
-
318
301
  end
319
302
 
320
- describe "uninstall" do
321
-
303
+ context "uninstall" do
322
304
  it "should uninstall" do
323
305
  @resource[:name] = "fake_package"
324
306
  @provider.expects(:lazy_pip).
325
307
  with('uninstall', '-y', '-q', 'fake_package')
326
308
  @provider.uninstall
327
309
  end
328
-
329
310
  end
330
311
 
331
- describe "update" do
332
-
312
+ context "update" do
333
313
  it "should just call install" do
334
314
  @provider.expects(:install).returns(nil)
335
315
  @provider.update
336
316
  end
337
-
338
317
  end
339
318
 
340
- describe "pip_version" do
341
-
319
+ context "pip_version" do
342
320
  it "should return nil on missing pip" do
343
- provider_class.stubs(:pip_cmd).returns(nil)
344
- expect(provider_class.pip_version).to eq(nil)
321
+ described_class.stubs(:pip_cmd).returns(nil)
322
+ expect(described_class.pip_version).to eq(nil)
345
323
  end
346
324
 
347
325
  it "should look up version if pip is present" do
348
- provider_class.stubs(:pip_cmd).returns('/fake/bin/pip')
326
+ described_class.stubs(:pip_cmd).returns('/fake/bin/pip')
349
327
  p = stub("process")
350
328
  p.expects(:collect).yields('pip 8.0.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)')
351
- provider_class.expects(:execpipe).with(['/fake/bin/pip', '--version']).yields(p)
352
- expect(provider_class.pip_version).to eq('8.0.2')
329
+ described_class.expects(:execpipe).with(['/fake/bin/pip', '--version']).yields(p)
330
+ expect(described_class.pip_version).to eq('8.0.2')
353
331
  end
354
-
355
332
  end
356
333
 
357
- describe "lazy_pip" do
358
-
334
+ context "lazy_pip" do
359
335
  after(:each) do
360
336
  Puppet::Type::Package::ProviderPip.instance_variable_set(:@confine_collection, nil)
361
337
  end
@@ -366,7 +342,6 @@ describe provider_class do
366
342
  end
367
343
 
368
344
  osfamilies.each do |osfamily, pip_cmds|
369
-
370
345
  pip_cmds.each do |pip_cmd|
371
346
  it "should retry on #{osfamily} systems if #{pip_cmd} has not yet been found" do
372
347
  Puppet.features.stubs(:microsoft_windows?).returns (osfamily == 'windows')
@@ -399,9 +374,6 @@ describe provider_class do
399
374
  expect { @provider.method(:lazy_pip).call("freeze") }.
400
375
  to raise_error(NoMethodError, "Could not locate command #{pip_cmds.join(' and ')}.")
401
376
  end
402
-
403
377
  end
404
-
405
378
  end
406
-
407
379
  end
@@ -1,19 +1,16 @@
1
1
  require "spec_helper"
2
2
 
3
- provider_class = Puppet::Type.type(:package).provider(:pkgin)
4
-
5
- describe provider_class do
3
+ describe Puppet::Type.type(:package).provider(:pkgin) do
6
4
  let(:resource) { Puppet::Type.type(:package).new(:name => "vim", :provider => :pkgin) }
7
5
  subject { resource.provider }
8
6
 
9
7
  describe "Puppet provider interface" do
10
8
  it "can return the list of all packages" do
11
- expect(provider_class).to respond_to(:instances)
9
+ expect(described_class).to respond_to(:instances)
12
10
  end
13
11
  end
14
12
 
15
13
  describe "#install" do
16
-
17
14
  describe "a package not installed" do
18
15
  before { resource[:ensure] = :absent }
19
16
  it "uses pkgin install to install" do
@@ -29,7 +26,6 @@ describe provider_class do
29
26
  subject.install
30
27
  end
31
28
  end
32
-
33
29
  end
34
30
 
35
31
  describe "#uninstall" do
@@ -45,19 +41,19 @@ describe provider_class do
45
41
  end
46
42
 
47
43
  before do
48
- provider_class.stubs(:pkgin).with(:list).returns(pkgin_ls_output)
44
+ described_class.stubs(:pkgin).with(:list).returns(pkgin_ls_output)
49
45
  end
50
46
 
51
47
  it "returns an array of providers for each package" do
52
- instances = provider_class.instances
48
+ instances = described_class.instances
53
49
  expect(instances).to have(2).items
54
50
  instances.each do |instance|
55
- expect(instance).to be_a(provider_class)
51
+ expect(instance).to be_a(described_class)
56
52
  end
57
53
  end
58
54
 
59
55
  it "populates each provider with an installed package" do
60
- zlib_provider, zziplib_provider = provider_class.instances
56
+ zlib_provider, zziplib_provider = described_class.instances
61
57
  expect(zlib_provider.get(:name)).to eq("zlib")
62
58
  expect(zlib_provider.get(:ensure)).to eq("1.2.3")
63
59
  expect(zziplib_provider.get(:name)).to eq("zziplib")
@@ -67,7 +63,7 @@ describe provider_class do
67
63
 
68
64
  describe "#latest" do
69
65
  before do
70
- provider_class.stubs(:pkgin).with(:search, "vim").returns(pkgin_search_output)
66
+ described_class.stubs(:pkgin).with(:search, "vim").returns(pkgin_search_output)
71
67
  end
72
68
 
73
69
  context "when the package is installed" do
@@ -119,7 +115,7 @@ SEARCH
119
115
  end
120
116
 
121
117
  it "returns the newest available version" do
122
- provider_class.stubs(:pkgin).with(:search, "vim").returns(pkgin_search_output)
118
+ described_class.stubs(:pkgin).with(:search, "vim").returns(pkgin_search_output)
123
119
  expect(subject.latest).to eq("7.3")
124
120
  end
125
121
  end
@@ -140,7 +136,7 @@ SEARCH
140
136
  let(:package) { "vim-7.2.446;=;Vim editor (vi clone) without GUI" }
141
137
 
142
138
  it "extracts the name and status" do
143
- expect(provider_class.parse_pkgin_line(package)).to eq({ :name => "vim" ,
139
+ expect(described_class.parse_pkgin_line(package)).to eq({ :name => "vim" ,
144
140
  :status => "=" ,
145
141
  :ensure => "7.2.446" })
146
142
  end
@@ -150,7 +146,7 @@ SEARCH
150
146
  let(:package) { "ruby18-puppet-0.25.5nb1;>;Configuration management framework written in Ruby" }
151
147
 
152
148
  it "extracts the name and status" do
153
- expect(provider_class.parse_pkgin_line(package)).to eq({ :name => "ruby18-puppet",
149
+ expect(described_class.parse_pkgin_line(package)).to eq({ :name => "ruby18-puppet",
154
150
  :status => ">" ,
155
151
  :ensure => "0.25.5nb1" })
156
152
  end
@@ -160,7 +156,7 @@ SEARCH
160
156
  let(:package) { "ruby200-facter-2.4.3nb1;=;Cross-platform Ruby library for retrieving facts from OS" }
161
157
 
162
158
  it "extracts the name and status" do
163
- expect(provider_class.parse_pkgin_line(package)).to eq({ :name => "ruby200-facter",
159
+ expect(described_class.parse_pkgin_line(package)).to eq({ :name => "ruby200-facter",
164
160
  :status => "=" ,
165
161
  :ensure => "2.4.3nb1" })
166
162
  end
@@ -170,18 +166,17 @@ SEARCH
170
166
  let(:package) { "vim-7.2.446;Vim editor (vi clone) without GUI" }
171
167
 
172
168
  it "extracts the name and status" do
173
- expect(provider_class.parse_pkgin_line(package)).to eq({ :name => "vim" ,
169
+ expect(described_class.parse_pkgin_line(package)).to eq({ :name => "vim" ,
174
170
  :status => nil ,
175
171
  :ensure => "7.2.446" })
176
172
  end
177
-
178
173
  end
179
174
 
180
175
  context "with an invalid package" do
181
176
  let(:package) { "" }
182
177
 
183
178
  it "returns nil" do
184
- expect(provider_class.parse_pkgin_line(package)).to be_nil
179
+ expect(described_class.parse_pkgin_line(package)).to be_nil
185
180
  end
186
181
  end
187
182
  end
@@ -1,10 +1,7 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
  require 'puppet/provider/package/pkgng'
4
3
 
5
- provider_class = Puppet::Type.type(:package).provider(:pkgng)
6
-
7
- describe provider_class do
4
+ describe Puppet::Type.type(:package).provider(:pkgng) do
8
5
  let(:name) { 'bash' }
9
6
  let(:installed_name) { 'zsh' }
10
7
  let(:pkgng) { 'pkgng' }
@@ -38,41 +35,41 @@ describe provider_class do
38
35
  end
39
36
 
40
37
  before do
41
- provider_class.stubs(:command).with(:pkg) { '/usr/local/sbin/pkg' }
38
+ described_class.stubs(:command).with(:pkg) { '/usr/local/sbin/pkg' }
42
39
 
43
40
  info = File.read(my_fixture('pkg.info'))
44
- provider_class.stubs(:get_query).returns(info)
41
+ described_class.stubs(:get_query).returns(info)
45
42
 
46
43
  version_list = File.read(my_fixture('pkg.version'))
47
- provider_class.stubs(:get_version_list).returns(version_list)
44
+ described_class.stubs(:get_version_list).returns(version_list)
48
45
  end
49
46
 
50
47
  context "#instances" do
51
48
  it "should return the empty set if no packages are listed" do
52
- provider_class.stubs(:get_query).returns('')
53
- provider_class.stubs(:get_version_list).returns('')
54
- expect(provider_class.instances).to be_empty
49
+ described_class.stubs(:get_query).returns('')
50
+ described_class.stubs(:get_version_list).returns('')
51
+ expect(described_class.instances).to be_empty
55
52
  end
56
53
 
57
54
  it "should return all packages when invoked" do
58
- expect(provider_class.instances.map(&:name).sort).to eq(
55
+ expect(described_class.instances.map(&:name).sort).to eq(
59
56
  %w{ca_root_nss curl nmap pkg gnupg mcollective zsh tac_plus}.sort)
60
57
  end
61
58
 
62
59
  it "should set latest to current version when no upgrade available" do
63
- nmap = provider_class.instances.find {|i| i.properties[:origin] == 'security/nmap' }
60
+ nmap = described_class.instances.find {|i| i.properties[:origin] == 'security/nmap' }
64
61
 
65
62
  expect(nmap.properties[:version]).to eq(nmap.properties[:latest])
66
63
  end
67
64
 
68
65
  it "should return an empty array when pkg calls raise an exception" do
69
- provider_class.stubs(:get_query).raises(Puppet::ExecutionFailure, 'An error occurred.')
70
- expect(provider_class.instances).to eq([])
66
+ described_class.stubs(:get_query).raises(Puppet::ExecutionFailure, 'An error occurred.')
67
+ expect(described_class.instances).to eq([])
71
68
  end
72
69
 
73
70
  describe "version" do
74
71
  it "should retrieve the correct version of the current package" do
75
- zsh = provider_class.instances.find {|i| i.properties[:origin] == 'shells/zsh' }
72
+ zsh = described_class.instances.find {|i| i.properties[:origin] == 'shells/zsh' }
76
73
  expect( zsh.properties[:version]).to eq('5.0.2_1')
77
74
  end
78
75
  end
@@ -118,32 +115,32 @@ describe provider_class do
118
115
 
119
116
  context "#prefetch" do
120
117
  it "should fail gracefully when " do
121
- provider_class.stubs(:instances).returns([])
122
- expect{ provider_class.prefetch({}) }.to_not raise_error
118
+ described_class.stubs(:instances).returns([])
119
+ expect{ described_class.prefetch({}) }.to_not raise_error
123
120
  end
124
121
  end
125
122
 
126
123
  context "#query" do
127
124
  it "should return the installed version if present" do
128
- provider_class.prefetch({installed_name => installed_resource})
125
+ described_class.prefetch({installed_name => installed_resource})
129
126
  expect(installed_provider.query).to eq({:version=>'5.0.2_1'})
130
127
  end
131
128
 
132
129
  it "should return nil if not present" do
133
130
  fixture = File.read(my_fixture('pkg.query_absent'))
134
- provider_class.stubs(:get_resource_info).with('bash').returns(fixture)
131
+ described_class.stubs(:get_resource_info).with('bash').returns(fixture)
135
132
  expect(provider.query).to equal(nil)
136
133
  end
137
134
  end
138
135
 
139
136
  describe "latest" do
140
137
  it "should retrieve the correct version of the latest package" do
141
- provider_class.prefetch( { installed_name => installed_resource })
138
+ described_class.prefetch( { installed_name => installed_resource })
142
139
  expect(installed_provider.latest).not_to be_nil
143
140
  end
144
141
 
145
142
  it "should set latest to newer package version when available" do
146
- instances = provider_class.instances
143
+ instances = described_class.instances
147
144
  curl = instances.find {|i| i.properties[:origin] == 'ftp/curl' }
148
145
  expect(curl.properties[:latest]).to eq('7.33.0_2')
149
146
  end
@@ -164,13 +161,13 @@ describe provider_class do
164
161
  describe "get_latest_version" do
165
162
  it "should rereturn nil when the current package is the latest" do
166
163
  version_list = File.read(my_fixture('pkg.version'))
167
- nmap_latest_version = provider_class.get_latest_version('security/nmap', version_list)
164
+ nmap_latest_version = described_class.get_latest_version('security/nmap', version_list)
168
165
  expect(nmap_latest_version).to be_nil
169
166
  end
170
167
 
171
168
  it "should match the package name exactly" do
172
169
  version_list = File.read(my_fixture('pkg.version'))
173
- bash_comp_latest_version = provider_class.get_latest_version('shells/bash-completion', version_list)
170
+ bash_comp_latest_version = described_class.get_latest_version('shells/bash-completion', version_list)
174
171
  expect(bash_comp_latest_version).to eq('2.1_3')
175
172
  end
176
173
  end
@@ -179,7 +176,7 @@ describe provider_class do
179
176
  context "on FreeBSD" do
180
177
  it "should be the default provider" do
181
178
  Facter.expects(:value).with(:operatingsystem).at_least_once.returns :freebsd
182
- expect(provider_class).to be_default
179
+ expect(described_class).to be_default
183
180
  end
184
181
  end
185
182
  end