puppet 5.5.8-universal-darwin → 5.5.10-universal-darwin

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,14 +1,6 @@
1
- #! /usr/bin/env ruby
2
- #
3
- # Unit testing for the debian service provider
4
- #
5
-
6
1
  require 'spec_helper'
7
2
 
8
- provider_class = Puppet::Type.type(:service).provider(:debian)
9
-
10
- describe provider_class do
11
-
3
+ describe Puppet::Type.type(:service).provider(:debian) do
12
4
  if Puppet.features.microsoft_windows?
13
5
  # Get a pid for $CHILD_STATUS to latch on to
14
6
  command = "cmd.exe /c \"exit 0\""
@@ -19,7 +11,7 @@ describe provider_class do
19
11
  # Create a mock resource
20
12
  @resource = stub 'resource'
21
13
 
22
- @provider = provider_class.new
14
+ @provider = subject()
23
15
 
24
16
  # A catch all; no parameters set
25
17
  @resource.stubs(:[]).returns(nil)
@@ -43,14 +35,14 @@ describe provider_class do
43
35
  it "should be the default provider on CumulusLinux #{version}" do
44
36
  Facter.expects(:value).with(:operatingsystem).at_least_once.returns('CumulusLinux')
45
37
  Facter.expects(:value).with(:operatingsystemmajrelease).returns(version)
46
- expect(provider_class.default?).to be_truthy
38
+ expect(described_class.default?).to be_truthy
47
39
  end
48
40
  end
49
41
 
50
42
  it "should be the default provider on Debian" do
51
43
  Facter.expects(:value).with(:operatingsystem).at_least_once.returns('Debian')
52
44
  Facter.expects(:value).with(:operatingsystemmajrelease).returns('7')
53
- expect(provider_class.default?).to be_truthy
45
+ expect(described_class.default?).to be_truthy
54
46
  end
55
47
 
56
48
  it "should have an enabled? method" do
@@ -65,14 +57,14 @@ describe provider_class do
65
57
  expect(@provider).to respond_to(:disable)
66
58
  end
67
59
 
68
- describe "when enabling" do
60
+ context "when enabling" do
69
61
  it "should call update-rc.d twice" do
70
62
  @provider.expects(:update_rc).twice
71
63
  @provider.enable
72
64
  end
73
65
  end
74
66
 
75
- describe "when disabling" do
67
+ context "when disabling" do
76
68
  it "should be able to disable services with newer sysv-rc versions" do
77
69
  @provider.stubs(:`).with("dpkg --compare-versions $(dpkg-query -W --showformat '${Version}' sysv-rc) ge 2.88 ; echo $?").returns "0"
78
70
 
@@ -91,7 +83,7 @@ describe provider_class do
91
83
  end
92
84
  end
93
85
 
94
- describe "when checking whether it is enabled" do
86
+ context "when checking whether it is enabled" do
95
87
  it "should call Kernel.system() with the appropriate parameters" do
96
88
  @provider.expects(:system).with("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start").once
97
89
  $CHILD_STATUS.stubs(:exitstatus).returns(0)
@@ -151,7 +143,7 @@ describe provider_class do
151
143
  end
152
144
  end
153
145
 
154
- describe "when checking service status" do
146
+ context "when checking service status" do
155
147
  it "should use the service command" do
156
148
  Facter.stubs(:value).with(:operatingsystem).returns('Debian')
157
149
  Facter.stubs(:value).with(:operatingsystemmajrelease).returns('8')
@@ -1,11 +1,8 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- provider_class = Puppet::Type.type(:service).provider(:freebsd)
5
-
6
- describe provider_class do
3
+ describe Puppet::Type.type(:service).provider(:freebsd) do
7
4
  before :each do
8
- @provider = provider_class.new
5
+ @provider = subject()
9
6
  @provider.stubs(:initscript)
10
7
  Facter.stubs(:value).with(:osfamily).returns 'FreeBSD'
11
8
  end
@@ -1,12 +1,6 @@
1
- #!/usr/bin/env ruby
2
- #
3
- # Unit testing for the OpenBSD service provider
4
-
5
1
  require 'spec_helper'
6
2
 
7
- provider_class = Puppet::Type.type(:service).provider(:openbsd)
8
-
9
- describe provider_class, :unless => Puppet.features.microsoft_windows? do
3
+ describe Puppet::Type.type(:service).provider(:openbsd), :unless => Puppet.features.microsoft_windows? do
10
4
  before :each do
11
5
  Puppet::Type.type(:service).stubs(:defaultprovider).returns described_class
12
6
  Facter.stubs(:value).with(:operatingsystem).returns :openbsd
@@ -15,7 +9,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
15
9
  FileTest.stubs(:executable?).with('/usr/sbin/rcctl').returns true
16
10
  end
17
11
 
18
- describe "#instances" do
12
+ context "#instances" do
19
13
  it "should have an instances method" do
20
14
  expect(described_class).to respond_to :instances
21
15
  end
@@ -28,7 +22,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
28
22
  end
29
23
  end
30
24
 
31
- describe "#start" do
25
+ context "#start" do
32
26
  it "should use the supplied start command if specified" do
33
27
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd', :start => '/bin/foo'))
34
28
  provider.expects(:execute).with(['/bin/foo'], :failonfail => true, :override_locale => false, :squelch => false, :combine => true)
@@ -42,7 +36,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
42
36
  end
43
37
  end
44
38
 
45
- describe "#stop" do
39
+ context "#stop" do
46
40
  it "should use the supplied stop command if specified" do
47
41
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd', :stop => '/bin/foo'))
48
42
  provider.expects(:execute).with(['/bin/foo'], :failonfail => true, :override_locale => false, :squelch => false, :combine => true)
@@ -56,7 +50,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
56
50
  end
57
51
  end
58
52
 
59
- describe "#status" do
53
+ context "#status" do
60
54
  it "should use the status command from the resource" do
61
55
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd', :status => '/bin/foo'))
62
56
  provider.expects(:execute).with(['/usr/sbin/rcctl', :get, 'sshd', :status], :failonfail => true, :override_locale => false, :squelch => false, :combine => true).never
@@ -81,7 +75,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
81
75
  end
82
76
  end
83
77
 
84
- describe "#restart" do
78
+ context "#restart" do
85
79
  it "should use the supplied restart command if specified" do
86
80
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd', :restart => '/bin/foo'))
87
81
  provider.expects(:execute).with(['/usr/sbin/rcctl', '-f', :restart, 'sshd'], :failonfail => true, :override_locale => false, :squelch => false, :combine => true).never
@@ -104,7 +98,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
104
98
  end
105
99
  end
106
100
 
107
- describe "#enabled?" do
101
+ context "#enabled?" do
108
102
  it "should return :true if the service is enabled" do
109
103
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd'))
110
104
  described_class.stubs(:rcctl).with(:get, 'sshd', :status)
@@ -120,7 +114,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
120
114
  end
121
115
  end
122
116
 
123
- describe "#enable" do
117
+ context "#enable" do
124
118
  it "should run rcctl enable to enable the service" do
125
119
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd'))
126
120
  described_class.stubs(:rcctl).with(:enable, 'sshd').returns('')
@@ -138,7 +132,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
138
132
  end
139
133
  end
140
134
 
141
- describe "#disable" do
135
+ context "#disable" do
142
136
  it "should run rcctl disable to disable the service" do
143
137
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd'))
144
138
  described_class.stubs(:rcctl).with(:disable, 'sshd').returns('')
@@ -147,7 +141,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
147
141
  end
148
142
  end
149
143
 
150
- describe "#running?" do
144
+ context "#running?" do
151
145
  it "should run rcctl check to check the service" do
152
146
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd'))
153
147
  described_class.stubs(:rcctl).with(:check, 'sshd').returns('sshd(ok)')
@@ -170,7 +164,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
170
164
  end
171
165
  end
172
166
 
173
- describe "#flags" do
167
+ context "#flags" do
174
168
  it "should return flags when set" do
175
169
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd', :flags => '-6'))
176
170
  described_class.stubs(:rcctl).with('get', 'sshd', 'flags').returns('-6')
@@ -193,7 +187,7 @@ describe provider_class, :unless => Puppet.features.microsoft_windows? do
193
187
  end
194
188
  end
195
189
 
196
- describe "#flags=" do
190
+ context "#flags=" do
197
191
  it "should run rcctl to set flags" do
198
192
  provider = described_class.new(Puppet::Type.type(:service).new(:name => 'sshd'))
199
193
  described_class.stubs(:rcctl).with(:set, 'sshd', :flags, '-4').returns('')
@@ -1,20 +1,16 @@
1
- #!/usr/bin/env ruby
2
-
3
1
  require 'spec_helper'
4
2
 
5
- provider_class = Puppet::Type.type(:service).provider(:rcng)
6
-
7
- describe provider_class, :unless => Puppet.features.microsoft_windows? do
3
+ describe Puppet::Type.type(:service).provider(:rcng), :unless => Puppet.features.microsoft_windows? do
8
4
  before :each do
9
5
  Puppet::Type.type(:service).stubs(:defaultprovider).returns described_class
10
6
  Facter.stubs(:value).with(:operatingsystem).returns :netbsd
11
7
  Facter.stubs(:value).with(:osfamily).returns 'NetBSD'
12
8
  described_class.stubs(:defpath).returns('/etc/rc.d')
13
- @provider = provider_class.new
9
+ @provider = subject()
14
10
  @provider.stubs(:initscript)
15
11
  end
16
12
 
17
- describe "#enable" do
13
+ context "#enable" do
18
14
  it "should have an enable method" do
19
15
  expect(@provider).to respond_to(:enable)
20
16
  end
@@ -1,19 +1,12 @@
1
- #! /usr/bin/env ruby
2
- #
3
- # Unit testing for the RedHat service Provider
4
- #
5
1
  require 'spec_helper'
6
2
 
7
- provider_class = Puppet::Type.type(:service).provider(:redhat)
8
-
9
- describe provider_class, :if => Puppet.features.posix? do
10
-
3
+ describe Puppet::Type.type(:service).provider(:redhat), :if => Puppet.features.posix? do
11
4
  before :each do
12
5
  @class = Puppet::Type.type(:service).provider(:redhat)
13
6
  @resource = stub 'resource'
14
7
  @resource.stubs(:[]).returns(nil)
15
8
  @resource.stubs(:[]).with(:name).returns "myservice"
16
- @provider = provider_class.new
9
+ @provider = subject()
17
10
  @resource.stubs(:provider).returns @provider
18
11
  @provider.resource = @resource
19
12
  @provider.stubs(:get).with(:hasstatus).returns false
@@ -28,7 +21,7 @@ describe provider_class, :if => Puppet.features.posix? do
28
21
  osfamilies.each do |osfamily|
29
22
  it "should be the default provider on #{osfamily}" do
30
23
  Facter.expects(:value).with(:osfamily).returns(osfamily)
31
- expect(provider_class.default?).to be_truthy
24
+ expect(described_class.default?).to be_truthy
32
25
  end
33
26
  end
34
27
 
@@ -40,7 +33,7 @@ describe provider_class, :if => Puppet.features.posix? do
40
33
  end
41
34
 
42
35
  # test self.instances
43
- describe "when getting all service instances" do
36
+ context "when getting all service instances" do
44
37
  before :each do
45
38
  @services = ['one', 'two', 'three', 'four', 'kudzu', 'functions', 'halt', 'killall', 'single', 'linuxconf', 'boot', 'reboot']
46
39
  @not_services = ['functions', 'halt', 'killall', 'single', 'linuxconf', 'reboot', 'boot']
@@ -64,13 +57,13 @@ describe provider_class, :if => Puppet.features.posix? do
64
57
  end
65
58
 
66
59
  it "should use '--add' and 'on' when calling enable" do
67
- provider_class.expects(:chkconfig).with("--add", @resource[:name])
68
- provider_class.expects(:chkconfig).with(@resource[:name], :on)
60
+ described_class.expects(:chkconfig).with("--add", @resource[:name])
61
+ described_class.expects(:chkconfig).with(@resource[:name], :on)
69
62
  @provider.enable
70
63
  end
71
64
 
72
65
  it "(#15797) should explicitly turn off the service in all run levels" do
73
- provider_class.expects(:chkconfig).with("--level", "0123456", @resource[:name], :off)
66
+ described_class.expects(:chkconfig).with("--level", "0123456", @resource[:name], :off)
74
67
  @provider.disable
75
68
  end
76
69
 
@@ -78,28 +71,28 @@ describe provider_class, :if => Puppet.features.posix? do
78
71
  expect(@provider).to respond_to(:enabled?)
79
72
  end
80
73
 
81
- describe "when checking enabled? on Suse" do
74
+ context "when checking enabled? on Suse" do
82
75
  before :each do
83
76
  Facter.expects(:value).with(:osfamily).returns 'Suse'
84
77
  end
85
78
 
86
79
  it "should check for on" do
87
- provider_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} on"
80
+ described_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} on"
88
81
  expect(@provider.enabled?).to eq(:true)
89
82
  end
90
83
 
91
84
  it "should check for B" do
92
- provider_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} B"
85
+ described_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} B"
93
86
  expect(@provider.enabled?).to eq(:true)
94
87
  end
95
88
 
96
89
  it "should check for off" do
97
- provider_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} off"
90
+ described_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]} off"
98
91
  expect(@provider.enabled?).to eq(:false)
99
92
  end
100
93
 
101
94
  it "should check for unknown service" do
102
- provider_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]}: unknown service"
95
+ described_class.stubs(:chkconfig).with(@resource[:name]).returns "#{@resource[:name]}: unknown service"
103
96
  expect(@provider.enabled?).to eq(:false)
104
97
  end
105
98
  end
@@ -132,20 +125,23 @@ describe provider_class, :if => Puppet.features.posix? do
132
125
  end
133
126
  end
134
127
 
135
- describe "when checking status" do
136
- describe "when hasstatus is :true" do
128
+ context "when checking status" do
129
+ context "when hasstatus is :true" do
137
130
  before :each do
138
131
  @resource.stubs(:[]).with(:hasstatus).returns :true
139
132
  end
133
+
140
134
  it "should execute the service script with fail_on_failure false" do
141
135
  @provider.expects(:texecute).with(:status, ['/sbin/service', 'myservice', 'status'], false)
142
136
  @provider.status
143
137
  end
138
+
144
139
  it "should consider the process running if the command returns 0" do
145
140
  @provider.expects(:texecute).with(:status, ['/sbin/service', 'myservice', 'status'], false)
146
141
  $CHILD_STATUS.stubs(:exitstatus).returns(0)
147
142
  expect(@provider.status).to eq(:running)
148
143
  end
144
+
149
145
  [-10,-1,1,10].each { |ec|
150
146
  it "should consider the process stopped if the command returns something non-0" do
151
147
  @provider.expects(:texecute).with(:status, ['/sbin/service', 'myservice', 'status'], false)
@@ -154,11 +150,13 @@ describe provider_class, :if => Puppet.features.posix? do
154
150
  end
155
151
  }
156
152
  end
157
- describe "when hasstatus is not :true" do
153
+
154
+ context "when hasstatus is not :true" do
158
155
  it "should consider the service :running if it has a pid" do
159
156
  @provider.expects(:getpid).returns "1234"
160
157
  expect(@provider.status).to eq(:running)
161
158
  end
159
+
162
160
  it "should consider the service :stopped if it doesn't have a pid" do
163
161
  @provider.expects(:getpid).returns nil
164
162
  expect(@provider.status).to eq(:stopped)
@@ -166,7 +164,7 @@ describe provider_class, :if => Puppet.features.posix? do
166
164
  end
167
165
  end
168
166
 
169
- describe "when restarting and hasrestart is not :true" do
167
+ context "when restarting and hasrestart is not :true" do
170
168
  it "should stop and restart the process with the server script" do
171
169
  @provider.expects(:texecute).with(:stop, ['/sbin/service', 'myservice', 'stop'], true)
172
170
  @provider.expects(:texecute).with(:start, ['/sbin/service', 'myservice', 'start'], true)
@@ -1,20 +1,11 @@
1
- #! /usr/bin/env ruby
2
- #
3
- # Unit testing for the Runit service Provider
4
- #
5
- # author Brice Figureau
6
- #
7
1
  require 'spec_helper'
8
2
 
9
- provider_class = Puppet::Type.type(:service).provider(:runit)
10
-
11
- describe provider_class do
12
-
3
+ describe Puppet::Type.type(:service).provider(:runit) do
13
4
  before(:each) do
14
5
  # Create a mock resource
15
6
  @resource = stub 'resource'
16
7
 
17
- @provider = provider_class.new
8
+ @provider = subject()
18
9
  @servicedir = "/etc/service"
19
10
  @provider.servicedir=@servicedir
20
11
  @daemondir = "/etc/sv"
@@ -63,7 +54,7 @@ describe provider_class do
63
54
  expect(@provider).to respond_to(:disable)
64
55
  end
65
56
 
66
- describe "when starting" do
57
+ context "when starting" do
67
58
  it "should enable the service if it is not enabled" do
68
59
  @provider.stubs(:sv)
69
60
 
@@ -81,21 +72,21 @@ describe provider_class do
81
72
  end
82
73
  end
83
74
 
84
- describe "when stopping" do
75
+ context "when stopping" do
85
76
  it "should execute external command 'sv stop /etc/service/myservice'" do
86
77
  @provider.expects(:sv).with("stop", "/etc/service/myservice")
87
78
  @provider.stop
88
79
  end
89
80
  end
90
81
 
91
- describe "when restarting" do
82
+ context "when restarting" do
92
83
  it "should call 'sv restart /etc/service/myservice'" do
93
84
  @provider.expects(:sv).with("restart","/etc/service/myservice")
94
85
  @provider.restart
95
86
  end
96
87
  end
97
88
 
98
- describe "when enabling" do
89
+ context "when enabling" do
99
90
  it "should create a symlink between daemon dir and service dir", :if => Puppet.features.manages_symlinks? do
100
91
  daemon_path = File.join(@daemondir,"myservice")
101
92
  service_path = File.join(@servicedir,"myservice")
@@ -105,7 +96,7 @@ describe provider_class do
105
96
  end
106
97
  end
107
98
 
108
- describe "when disabling" do
99
+ context "when disabling" do
109
100
  it "should remove the '/etc/service/myservice' symlink" do
110
101
  path = File.join(@servicedir,"myservice")
111
102
  # mocked_file = mock(path, :symlink? => true)
@@ -116,14 +107,14 @@ describe provider_class do
116
107
  end
117
108
  end
118
109
 
119
- describe "when checking status" do
110
+ context "when checking status" do
120
111
  it "should call the external command 'sv status /etc/sv/myservice'" do
121
112
  @provider.expects(:sv).with('status',File.join(@daemondir,"myservice"))
122
113
  @provider.status
123
114
  end
124
115
  end
125
116
 
126
- describe "when checking status" do
117
+ context "when checking status" do
127
118
  it "and sv status fails, properly raise a Puppet::Error" do
128
119
  @provider.expects(:sv).with('status',File.join(@daemondir,"myservice")).raises(Puppet::ExecutionFailure, "fail: /etc/sv/myservice: file not found")
129
120
  expect { @provider.status }.to raise_error(Puppet::Error, 'Could not get status for service Service[myservice]: fail: /etc/sv/myservice: file not found')
@@ -141,5 +132,4 @@ describe provider_class do
141
132
  expect(@provider.status).to eq(:stopped)
142
133
  end
143
134
  end
144
-
145
135
  end
@@ -1,20 +1,11 @@
1
- #! /usr/bin/env ruby
2
- #
3
- # Unit testing for the SMF service Provider
4
- #
5
- # author Dominic Cleal
6
- #
7
1
  require 'spec_helper'
8
2
 
9
- provider_class = Puppet::Type.type(:service).provider(:smf)
10
-
11
- describe provider_class, :if => Puppet.features.posix? do
12
-
3
+ describe Puppet::Type.type(:service).provider(:smf), :if => Puppet.features.posix? do
13
4
  before(:each) do
14
5
  # Create a mock resource
15
6
  @resource = Puppet::Type.type(:service).new(
16
7
  :name => "/system/myservice", :ensure => :running, :enable => :true)
17
- @provider = provider_class.new(@resource)
8
+ @provider = described_class.new(@resource)
18
9
 
19
10
  FileTest.stubs(:file?).with('/usr/sbin/svcadm').returns true
20
11
  FileTest.stubs(:executable?).with('/usr/sbin/svcadm').returns true
@@ -25,14 +16,14 @@ describe provider_class, :if => Puppet.features.posix? do
25
16
  Facter.stubs(:value).with(:operatingsystemrelease).returns '11.2'
26
17
  end
27
18
 
28
- describe ".instances" do
19
+ context ".instances" do
29
20
  it "should have an instances method" do
30
- expect(provider_class).to respond_to :instances
21
+ expect(described_class).to respond_to :instances
31
22
  end
32
23
 
33
24
  it "should get a list of services (excluding legacy)" do
34
- provider_class.expects(:svcs).with('-H', '-o', 'state,fmri').returns File.read(my_fixture('svcs.out'))
35
- instances = provider_class.instances.map { |p| {:name => p.get(:name), :ensure => p.get(:ensure)} }
25
+ described_class.expects(:svcs).with('-H', '-o', 'state,fmri').returns File.read(my_fixture('svcs.out'))
26
+ instances = described_class.instances.map { |p| {:name => p.get(:name), :ensure => p.get(:ensure)} }
36
27
  # we dont manage legacy
37
28
  expect(instances.size).to eq(3)
38
29
  expect(instances[0]).to eq({:name => 'svc:/system/svc/restarter:default', :ensure => :running })
@@ -70,6 +61,10 @@ describe provider_class, :if => Puppet.features.posix? do
70
61
  end
71
62
 
72
63
  describe "when checking status" do
64
+ before(:each) do
65
+ @provider.stubs(:complete_service?).returns(true)
66
+ end
67
+
73
68
  it "should call the external command 'svcs /system/myservice' once" do
74
69
  @provider.expects(:svcs).with('-H', '-o', 'state,nstate', "/system/myservice").returns("online\t-")
75
70
  @provider.status
@@ -78,6 +73,11 @@ describe provider_class, :if => Puppet.features.posix? do
78
73
  @provider.stubs(:svcs).raises(Puppet::ExecutionFailure.new("no svc found"))
79
74
  expect(@provider.status).to eq(:stopped)
80
75
  end
76
+ it "should return stopped for an incomplete service on Solaris 11" do
77
+ Facter.stubs(:value).with(:operatingsystemrelease).returns('11.3')
78
+ @provider.stubs(:complete_service?).returns(false)
79
+ expect(@provider.status).to eq(:stopped)
80
+ end
81
81
  it "should return running if online in svcs output" do
82
82
  @provider.stubs(:svcs).returns("online\t-")
83
83
  expect(@provider.status).to eq(:running)
@@ -104,7 +104,7 @@ describe provider_class, :if => Puppet.features.posix? do
104
104
  end
105
105
  end
106
106
 
107
- describe "when starting" do
107
+ context "when starting" do
108
108
  it "should enable the service if it is not enabled" do
109
109
  @provider.expects(:status).returns :stopped
110
110
  @provider.expects(:texecute).with(:start, ['/usr/sbin/svcadm', :enable, '-rs', '/system/myservice'], true)
@@ -141,14 +141,15 @@ describe provider_class, :if => Puppet.features.posix? do
141
141
  end
142
142
  end
143
143
 
144
- describe "when starting a service with a manifest" do
144
+ context "when starting a service with a manifest" do
145
145
  before(:each) do
146
146
  @resource = Puppet::Type.type(:service).new(:name => "/system/myservice", :ensure => :running, :enable => :true, :manifest => "/tmp/myservice.xml")
147
- @provider = provider_class.new(@resource)
147
+ @provider = described_class.new(@resource)
148
148
  $CHILD_STATUS.stubs(:exitstatus).returns(1)
149
149
  end
150
150
 
151
151
  it "should import the manifest if service is missing" do
152
+ @provider.stubs(:complete_service?).returns(true)
152
153
  @provider.expects(:svcs).with('-l', '/system/myservice').raises(Puppet::ExecutionFailure, "Exited 1")
153
154
  @provider.expects(:svccfg).with(:import, "/tmp/myservice.xml")
154
155
  @provider.expects(:texecute).with(:start, ["/usr/sbin/svcadm", :enable, '-rs', "/system/myservice"], true)
@@ -164,7 +165,7 @@ describe provider_class, :if => Puppet.features.posix? do
164
165
  end
165
166
  end
166
167
 
167
- describe "when stopping" do
168
+ context "when stopping" do
168
169
  it "should execute external command 'svcadm disable /system/myservice'" do
169
170
  @provider.expects(:texecute).with(:stop, ["/usr/sbin/svcadm", :disable, '-s', "/system/myservice"], true)
170
171
  @provider.expects(:wait).with('offline', 'disabled', 'uninitialized')
@@ -178,8 +179,7 @@ describe provider_class, :if => Puppet.features.posix? do
178
179
  end
179
180
  end
180
181
 
181
- describe "when restarting" do
182
-
182
+ context "when restarting" do
183
183
  it "should error if timeout occurs while restarting the service" do
184
184
  @provider.expects(:texecute).with(:restart, ["/usr/sbin/svcadm", :restart, '-s', "/system/myservice"], true)
185
185
  Timeout.expects(:timeout).with(60).raises(Timeout::Error)
@@ -212,6 +212,67 @@ describe provider_class, :if => Puppet.features.posix? do
212
212
  @provider.restart
213
213
  end
214
214
  end
215
+ end
216
+
217
+ describe '#service_fmri' do
218
+ it 'raises a Puppet::Error if the service resource matches multiple FMRIs' do
219
+ @provider.stubs(:svcs).with('-l', @provider.resource[:name]).returns(File.read(my_fixture('svcs_multiple_fmris.out')))
220
+
221
+ expect { @provider.service_fmri }.to raise_error do |error|
222
+ expect(error).to be_a(Puppet::Error)
223
+ expect(error.message).to match(@provider.resource[:name])
224
+ expect(error.message).to match('multiple')
225
+
226
+ matched_fmris = ["svc:/application/tstapp:one", "svc:/application/tstapp:two"]
227
+ expect(error.message).to match(matched_fmris.join(', '))
228
+ end
229
+ end
230
+
231
+ it 'raises a Puppet:ExecutionFailure if svcs fails' do
232
+ @provider.stubs(:svcs).with('-l', @provider.resource[:name]).raises(
233
+ Puppet::ExecutionFailure, 'svcs failed!'
234
+ )
235
+
236
+ expect { @provider.service_fmri }.to raise_error do |error|
237
+ expect(error).to be_a(Puppet::ExecutionFailure)
238
+ expect(error.message).to match('svcs failed!')
239
+ end
240
+ end
241
+
242
+ it "returns the service resource's fmri and memoizes it" do
243
+ @provider.stubs(:svcs).with('-l', @provider.resource[:name]).returns(File.read(my_fixture('svcs_fmri.out')))
244
+
245
+ expected_fmri = 'svc:/application/tstapp:default'
215
246
 
247
+ expect(@provider.service_fmri).to eql(expected_fmri)
248
+ expect(@provider.instance_variable_get(:@fmri)).to eql(expected_fmri)
249
+ end
250
+ end
251
+
252
+ describe '#complete_service?' do
253
+ let(:fmri) { 'service_fmri' }
254
+
255
+ before(:each) do
256
+ @provider.stubs(:service_fmri).returns(fmri)
257
+ end
258
+
259
+ it 'should raise a Puppet::Error if it is called on an older Solaris machine' do
260
+ Facter.stubs(:value).with(:operatingsystemrelease).returns('10.0')
261
+
262
+ expect { @provider.complete_service? }.to raise_error(Puppet::Error)
263
+ end
264
+
265
+ it 'should return false for an incomplete service' do
266
+ @provider.stubs(:svccfg).with('-s', fmri, 'listprop', 'general/complete').returns("")
267
+ expect(@provider.complete_service?).to be false
268
+ end
269
+
270
+ it 'should return true for a complete service' do
271
+ @provider.stubs(:svccfg)
272
+ .with('-s', fmri, 'listprop', 'general/complete')
273
+ .returns("general/complete astring")
274
+
275
+ expect(@provider.complete_service?).to be true
276
+ end
216
277
  end
217
278
  end