chef 12.5.1-universal-mingw32 → 12.6.0-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -1
  3. data/README.md +6 -4
  4. data/Rakefile +1 -4
  5. data/chef-windows.gemspec +21 -0
  6. data/chef.gemspec +58 -0
  7. data/lib/chef/api_client/registration.rb +9 -4
  8. data/lib/chef/application.rb +3 -84
  9. data/lib/chef/application/apply.rb +9 -2
  10. data/lib/chef/application/client.rb +8 -3
  11. data/lib/chef/application/solo.rb +7 -1
  12. data/lib/chef/application/windows_service.rb +21 -6
  13. data/lib/chef/application/windows_service_manager.rb +2 -3
  14. data/lib/chef/audit/runner.rb +1 -0
  15. data/lib/chef/chef_class.rb +1 -11
  16. data/lib/chef/chef_fs/chef_fs_data_store.rb +181 -2
  17. data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +5 -0
  18. data/lib/chef/chef_fs/file_system/file_system_entry.rb +11 -7
  19. data/lib/chef/client.rb +28 -1
  20. data/lib/chef/cookbook/cookbook_collection.rb +14 -1
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
  22. data/lib/chef/cookbook/metadata.rb +115 -9
  23. data/lib/chef/cookbook/remote_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook_version.rb +6 -2
  25. data/lib/chef/data_bag.rb +1 -1
  26. data/lib/chef/data_bag_item.rb +1 -1
  27. data/lib/chef/digester.rb +5 -1
  28. data/lib/chef/dsl/chef_provisioning.rb +57 -0
  29. data/lib/chef/dsl/cheffish.rb +64 -0
  30. data/lib/chef/dsl/declare_resource.rb +108 -0
  31. data/lib/chef/dsl/platform_introspection.rb +3 -3
  32. data/lib/chef/dsl/recipe.rb +3 -73
  33. data/lib/chef/dsl/resources.rb +27 -1
  34. data/lib/chef/event_dispatch/base.rb +3 -0
  35. data/lib/chef/event_dispatch/dispatcher.rb +5 -0
  36. data/lib/chef/event_dispatch/events_output_stream.rb +8 -0
  37. data/lib/chef/exceptions.rb +21 -1
  38. data/lib/chef/file_access_control/unix.rb +12 -12
  39. data/lib/chef/file_content_management/deploy/cp.rb +2 -2
  40. data/lib/chef/file_content_management/deploy/mv_unix.rb +4 -4
  41. data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
  42. data/lib/chef/formatters/base.rb +7 -0
  43. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
  44. data/lib/chef/formatters/indentable_output_stream.rb +5 -0
  45. data/lib/chef/http.rb +19 -3
  46. data/lib/chef/http/decompressor.rb +2 -2
  47. data/lib/chef/json_compat.rb +1 -0
  48. data/lib/chef/knife.rb +16 -2
  49. data/lib/chef/knife/bootstrap.rb +55 -10
  50. data/lib/chef/knife/cookbook_site_install.rb +5 -1
  51. data/lib/chef/knife/core/bootstrap_context.rb +2 -1
  52. data/lib/chef/knife/core/node_presenter.rb +1 -1
  53. data/lib/chef/knife/ssh.rb +30 -16
  54. data/lib/chef/knife/ssl_check.rb +4 -2
  55. data/lib/chef/knife/ssl_fetch.rb +3 -2
  56. data/lib/chef/knife/status.rb +14 -1
  57. data/lib/chef/log.rb +14 -0
  58. data/lib/chef/mixin/get_source_from_package.rb +7 -2
  59. data/lib/chef/mixin/properties.rb +302 -0
  60. data/lib/chef/mixin/proxified_socket.rb +38 -0
  61. data/lib/chef/mixin/subclass_directive.rb +37 -0
  62. data/lib/chef/node.rb +13 -5
  63. data/lib/chef/platform/query_helpers.rb +14 -3
  64. data/lib/chef/platform/service_helpers.rb +20 -38
  65. data/lib/chef/policy_builder/expand_node_object.rb +3 -0
  66. data/lib/chef/policy_builder/policyfile.rb +1 -0
  67. data/lib/chef/property.rb +51 -12
  68. data/lib/chef/provider.rb +40 -35
  69. data/lib/chef/provider/deploy.rb +1 -1
  70. data/lib/chef/provider/dsc_resource.rb +54 -20
  71. data/lib/chef/provider/execute.rb +25 -4
  72. data/lib/chef/provider/group.rb +1 -1
  73. data/lib/chef/provider/lwrp_base.rb +1 -0
  74. data/lib/chef/provider/package.rb +76 -30
  75. data/lib/chef/provider/package/dpkg.rb +152 -69
  76. data/lib/chef/provider/package/openbsd.rb +6 -8
  77. data/lib/chef/provider/package/solaris.rb +2 -0
  78. data/lib/chef/provider/package/windows.rb +95 -14
  79. data/lib/chef/provider/package/windows/exe.rb +129 -0
  80. data/lib/chef/provider/package/windows/msi.rb +37 -13
  81. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +89 -0
  82. data/lib/chef/provider/package/yum.rb +13 -3
  83. data/lib/chef/provider/powershell_script.rb +3 -0
  84. data/lib/chef/provider/remote_file/cache_control_data.rb +37 -4
  85. data/lib/chef/provider/remote_file/http.rb +1 -1
  86. data/lib/chef/provider/script.rb +1 -0
  87. data/lib/chef/provider/service.rb +13 -10
  88. data/lib/chef/provider/service/solaris.rb +43 -17
  89. data/lib/chef/provider/service/upstart.rb +3 -3
  90. data/lib/chef/provider/user.rb +1 -1
  91. data/lib/chef/provider/user/dscl.rb +111 -100
  92. data/lib/chef/provider/user/windows.rb +5 -3
  93. data/lib/chef/recipe.rb +3 -5
  94. data/lib/chef/resource.rb +77 -320
  95. data/lib/chef/resource/action_class.rb +4 -0
  96. data/lib/chef/resource/dpkg_package.rb +4 -3
  97. data/lib/chef/resource/dsc_resource.rb +40 -2
  98. data/lib/chef/resource/execute.rb +9 -1
  99. data/lib/chef/resource/ksh.rb +32 -0
  100. data/lib/chef/resource/lwrp_base.rb +6 -10
  101. data/lib/chef/resource/package.rb +8 -9
  102. data/lib/chef/resource/registry_key.rb +1 -1
  103. data/lib/chef/resource/resource_notification.rb +14 -1
  104. data/lib/chef/resource/script.rb +1 -1
  105. data/lib/chef/resource/windows_package.rb +1 -1
  106. data/lib/chef/resource_builder.rb +14 -7
  107. data/lib/chef/resource_reporter.rb +6 -0
  108. data/lib/chef/resources.rb +1 -7
  109. data/lib/chef/rest.rb +1 -1
  110. data/lib/chef/run_context.rb +45 -2
  111. data/lib/chef/run_list/run_list_expansion.rb +47 -0
  112. data/lib/chef/runner.rb +25 -0
  113. data/lib/chef/search/query.rb +16 -2
  114. data/lib/chef/util/diff.rb +2 -2
  115. data/lib/chef/util/powershell/ps_credential.rb +2 -3
  116. data/lib/chef/version.rb +1 -1
  117. data/lib/chef/win32/api/file.rb +51 -1
  118. data/lib/chef/win32/file.rb +5 -0
  119. data/lib/chef/win32/file/version_info.rb +93 -0
  120. data/lib/chef/win32/mutex.rb +1 -1
  121. data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -0
  122. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -0
  123. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -0
  124. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -0
  125. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -0
  126. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -0
  127. data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -0
  128. data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -0
  129. data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -0
  130. data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -0
  131. data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -0
  132. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -0
  133. data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -0
  134. data/spec/data/apt/chef-integration-test2_1.0-1.debian.tar.gz +0 -0
  135. data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -0
  136. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -0
  137. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -0
  138. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.deb +0 -0
  139. data/spec/data/apt/chef-integration-test2_1.0.orig.tar.gz +0 -0
  140. data/spec/functional/application_spec.rb +1 -1
  141. data/spec/functional/audit/runner_spec.rb +4 -0
  142. data/spec/functional/knife/ssh_spec.rb +5 -5
  143. data/spec/functional/notifications_spec.rb +74 -4
  144. data/spec/functional/resource/aix_service_spec.rb +2 -2
  145. data/spec/functional/resource/dpkg_package_spec.rb +339 -0
  146. data/spec/functional/resource/ifconfig_spec.rb +3 -1
  147. data/spec/functional/resource/mount_spec.rb +5 -2
  148. data/spec/functional/resource/package_spec.rb +1 -1
  149. data/spec/functional/resource/user/windows_spec.rb +8 -0
  150. data/spec/functional/resource/windows_package_spec.rb +177 -0
  151. data/spec/functional/win32/version_info_spec.rb +50 -0
  152. data/spec/integration/client/client_spec.rb +80 -0
  153. data/spec/integration/knife/download_spec.rb +9 -0
  154. data/spec/integration/knife/upload_spec.rb +28 -1
  155. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +93 -23
  156. data/spec/integration/recipes/resource_action_spec.rb +211 -116
  157. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +72 -0
  158. data/spec/integration/solo/solo_spec.rb +34 -0
  159. data/spec/spec_helper.rb +11 -1
  160. data/spec/support/platform_helpers.rb +8 -0
  161. data/spec/support/shared/integration/integration_helper.rb +6 -0
  162. data/spec/support/shared/unit/execute_resource.rb +5 -0
  163. data/spec/support/shared/unit/platform_introspector.rb +7 -0
  164. data/spec/tiny_server.rb +6 -2
  165. data/spec/unit/api_client/registration_spec.rb +5 -4
  166. data/spec/unit/application_spec.rb +1 -181
  167. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -0
  168. data/spec/unit/cookbook/metadata_spec.rb +122 -2
  169. data/spec/unit/http_spec.rb +102 -0
  170. data/spec/unit/knife/bootstrap_spec.rb +55 -13
  171. data/spec/unit/knife/core/bootstrap_context_spec.rb +10 -3
  172. data/spec/unit/knife/ssl_check_spec.rb +7 -3
  173. data/spec/unit/knife/ssl_fetch_spec.rb +2 -2
  174. data/spec/unit/knife/status_spec.rb +13 -13
  175. data/spec/unit/knife_spec.rb +26 -2
  176. data/spec/unit/lwrp_spec.rb +1 -1
  177. data/spec/unit/mixin/properties_spec.rb +97 -0
  178. data/spec/unit/mixin/proxified_socket_spec.rb +94 -0
  179. data/spec/unit/mixin/subclass_directive_spec.rb +45 -0
  180. data/spec/unit/node_spec.rb +9 -1
  181. data/spec/unit/policy_builder/policyfile_spec.rb +2 -0
  182. data/spec/unit/property/validation_spec.rb +14 -12
  183. data/spec/unit/property_spec.rb +56 -0
  184. data/spec/unit/provider/deploy_spec.rb +1 -1
  185. data/spec/unit/provider/dsc_resource_spec.rb +63 -24
  186. data/spec/unit/provider/execute_spec.rb +95 -28
  187. data/spec/unit/provider/package/dpkg_spec.rb +185 -96
  188. data/spec/unit/provider/package/windows/exe_spec.rb +251 -0
  189. data/spec/unit/provider/package/windows/msi_spec.rb +94 -10
  190. data/spec/unit/provider/package/windows_spec.rb +227 -26
  191. data/spec/unit/provider/package/yum_spec.rb +6 -0
  192. data/spec/unit/provider/package_spec.rb +495 -366
  193. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +62 -36
  194. data/spec/unit/provider/script_spec.rb +2 -2
  195. data/spec/unit/provider/service/solaris_smf_service_spec.rb +110 -39
  196. data/spec/unit/provider/service/upstart_service_spec.rb +19 -0
  197. data/spec/unit/provider/user/dscl_spec.rb +14 -0
  198. data/spec/unit/provider/user/windows_spec.rb +2 -2
  199. data/spec/unit/provider/user_spec.rb +9 -0
  200. data/spec/unit/provider_resolver_spec.rb +6 -30
  201. data/spec/unit/recipe_spec.rb +46 -20
  202. data/spec/unit/resource/chef_gem_spec.rb +1 -1
  203. data/spec/unit/resource/dsc_resource_spec.rb +14 -3
  204. data/spec/unit/resource/ksh_spec.rb +40 -0
  205. data/spec/unit/resource/registry_key_spec.rb +2 -2
  206. data/spec/unit/resource/resource_notification_spec.rb +44 -45
  207. data/spec/unit/resource_reporter_spec.rb +7 -0
  208. data/spec/unit/resource_spec.rb +268 -253
  209. data/spec/unit/rest_spec.rb +2 -2
  210. data/spec/unit/run_list/run_list_expansion_spec.rb +18 -3
  211. data/spec/unit/search/query_spec.rb +19 -1
  212. data/spec/unit/util/powershell/ps_credential_spec.rb +8 -1
  213. data/spec/unit/windows_service_spec.rb +83 -38
  214. data/tasks/external_tests.rb +19 -9
  215. data/tasks/rspec.rb +1 -1
  216. metadata +70 -21
  217. data/spec/support/pedant/Gemfile +0 -3
  218. data/spec/support/pedant/pedant_config.rb +0 -129
  219. data/spec/support/pedant/run_pedant.rb +0 -63
  220. data/spec/support/pedant/stickywicket.pem +0 -27
  221. data/spec/unit/provider/package_spec.rbe +0 -0
@@ -69,8 +69,8 @@ describe Chef::REST do
69
69
  rest
70
70
  end
71
71
 
72
- let(:standard_read_headers) {{"Accept"=>"application/json", "Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "X-REMOTE-REQUEST-ID"=>request_id, 'X-Ops-Server-API-Version' => Chef::HTTP::Authenticator::DEFAULT_SERVER_API_VERSION}}
73
- let(:standard_write_headers) {{"Accept"=>"application/json", "Content-Type"=>"application/json", "Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "X-REMOTE-REQUEST-ID"=>request_id, 'X-Ops-Server-API-Version' => Chef::HTTP::Authenticator::DEFAULT_SERVER_API_VERSION}}
72
+ let(:standard_read_headers) {{"Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "X-REMOTE-REQUEST-ID"=>request_id, 'X-Ops-Server-API-Version' => Chef::HTTP::Authenticator::DEFAULT_SERVER_API_VERSION}}
73
+ let(:standard_write_headers) {{"Accept"=>"application/json", "Content-Type"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "X-REMOTE-REQUEST-ID"=>request_id, 'X-Ops-Server-API-Version' => Chef::HTTP::Authenticator::DEFAULT_SERVER_API_VERSION}}
74
74
 
75
75
  before(:each) do
76
76
  Chef::Log.init(log_stringio)
@@ -21,7 +21,7 @@ require 'spec_helper'
21
21
  describe Chef::RunList::RunListExpansion do
22
22
  before do
23
23
  @run_list = Chef::RunList.new
24
- @run_list << 'recipe[lobster]' << 'role[rage]' << 'recipe[fist]'
24
+ @run_list << 'recipe[lobster::mastercookbook@0.1.0]' << 'role[rage]' << 'recipe[fist@0.1]'
25
25
  @expansion = Chef::RunList::RunListExpansion.new("_default", @run_list.run_list_items)
26
26
  end
27
27
 
@@ -59,7 +59,7 @@ describe Chef::RunList::RunListExpansion do
59
59
  end
60
60
 
61
61
  it "has the correct list of recipes for the given environment" do
62
- expect(@expansion.recipes).to eq(["lobster", "prod-only", "fist"])
62
+ expect(@expansion.recipes).to eq(["lobster::mastercookbook", "prod-only", "fist"])
63
63
  end
64
64
 
65
65
  end
@@ -82,19 +82,34 @@ describe Chef::RunList::RunListExpansion do
82
82
  describe "after expanding a run list" do
83
83
  before do
84
84
  @first_role = Chef::Role.new
85
+ @first_role.name('rage')
85
86
  @first_role.run_list('role[mollusk]')
86
87
  @first_role.default_attributes({'foo' => 'bar'})
87
88
  @first_role.override_attributes({'baz' => 'qux'})
88
89
  @second_role = Chef::Role.new
90
+ @second_role.name('rage')
89
91
  @second_role.run_list('recipe[crabrevenge]')
90
92
  @second_role.default_attributes({'foo' => 'boo'})
91
93
  @second_role.override_attributes({'baz' => 'bux'})
92
94
  allow(@expansion).to receive(:fetch_role).and_return(@first_role, @second_role)
93
95
  @expansion.expand
96
+ @json = '{"id":"_default","run_list":[{"type":"recipe","name":"lobster::mastercookbook","version":"0.1.0",'
97
+ .concat(
98
+ '"skipped":false},{"type":"role","name":"rage","children":[{"type":"role","name":"mollusk","children":[],"missing":null,'
99
+ .concat(
100
+ '"error":null,"skipped":null},{"type":"recipe","name":"crabrevenge","version":null,"skipped":false}],"missing":null,'
101
+ .concat(
102
+ '"error":null,"skipped":null},{"type":"recipe","name":"fist","version":"0.1","skipped":false}]}')))
103
+
104
+ end
105
+
106
+ it "produces json tree upon tracing expansion" do
107
+ jsonRunList = @expansion.to_json
108
+ expect(jsonRunList).to eq(@json)
94
109
  end
95
110
 
96
111
  it "has the ordered list of recipes" do
97
- expect(@expansion.recipes).to eq(['lobster', 'crabrevenge', 'fist'])
112
+ expect(@expansion.recipes).to eq(['lobster::mastercookbook', 'crabrevenge', 'fist'])
98
113
  end
99
114
 
100
115
  it "has the merged attributes from the roles with outer roles overriding inner" do
@@ -83,6 +83,8 @@ describe Chef::Search::Query do
83
83
  describe "search" do
84
84
  let(:query_string) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0" }
85
85
  let(:query_string_continue) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=4" }
86
+ let(:query_string_with_rows) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0&rows=4" }
87
+ let(:query_string_continue_with_rows) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=4&rows=4" }
86
88
 
87
89
  let(:response) { {
88
90
  "rows" => [
@@ -149,6 +151,14 @@ describe Chef::Search::Query do
149
151
  r
150
152
  }
151
153
 
154
+ let(:big_response_empty) {
155
+ {
156
+ "start" => 0,
157
+ "total" => 8,
158
+ "rows" => []
159
+ }
160
+ }
161
+
152
162
  let(:big_response_end) {
153
163
  r = response.dup
154
164
  r["start"] = 4
@@ -208,7 +218,7 @@ describe Chef::Search::Query do
208
218
  it "pages through the responses" do
209
219
  @call_me = double("blocky")
210
220
  response["rows"].each { |r| expect(@call_me).to receive(:do).with(r) }
211
- query.search(:node, "*:*", sort: nil, start: 0, rows: 1) { |r| @call_me.do(r) }
221
+ query.search(:node, "*:*", sort: nil, start: 0, rows: 4) { |r| @call_me.do(r) }
212
222
  end
213
223
 
214
224
  it "sends multiple API requests when the server indicates there is more data" do
@@ -219,6 +229,14 @@ describe Chef::Search::Query do
219
229
  end
220
230
  end
221
231
 
232
+ it "paginates correctly in the face of filtered nodes" do
233
+ expect(rest).to receive(:get_rest).with(query_string_with_rows).and_return(big_response_empty)
234
+ expect(rest).to receive(:get_rest).with(query_string_continue_with_rows).and_return(big_response_end)
235
+ query.search(:node, "platform:rhel", rows: 4) do |r|
236
+ nil
237
+ end
238
+ end
239
+
222
240
  context "when :filter_result is provided as a result" do
223
241
  include_context "filtered search" do
224
242
  let(:filter_key) { :filter_result }
@@ -21,7 +21,7 @@ require 'chef/util/powershell/ps_credential'
21
21
 
22
22
  describe Chef::Util::Powershell::PSCredential do
23
23
  let (:username) { 'foo' }
24
- let (:password) { 'password' }
24
+ let (:password) { 'ThIsIsThEpAsSwOrD' }
25
25
 
26
26
  context 'when username and password are provided' do
27
27
  let(:ps_credential) { Chef::Util::Powershell::PSCredential.new(username, password)}
@@ -33,5 +33,12 @@ describe Chef::Util::Powershell::PSCredential do
33
33
  "'#{username}',('encrypted' | ConvertTo-SecureString))")
34
34
  end
35
35
  end
36
+
37
+ context 'when to_text is called' do
38
+ it 'should not contain the password' do
39
+ allow(ps_credential).to receive(:encrypt).with(password).and_return('encrypted')
40
+ expect(ps_credential.to_text).not_to match(/#{password}/)
41
+ end
42
+ end
36
43
  end
37
44
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Mukta Aphale (<mukta.aphale@clogeny.com>)
3
- # Copyright:: Copyright (c) 2013 Opscode, Inc.
3
+ # Copyright:: Copyright (c) 2013-2015 Chef Software, Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,51 +21,96 @@ if Chef::Platform.windows?
21
21
  end
22
22
 
23
23
  describe "Chef::Application::WindowsService", :windows_only do
24
- let (:instance) {Chef::Application::WindowsService.new}
25
- let (:shell_out_result) {Object.new}
26
- let (:tempfile) {Tempfile.new "log_file"}
24
+ let(:shell_out_result) { double('shellout', stdout: nil, stderr: nil) }
25
+ let(:config_options) do
26
+ {
27
+ log_location: STDOUT,
28
+ config_file: "test_config_file",
29
+ log_level: :info
30
+ }
31
+ end
32
+ let(:timeout) { 7200 }
33
+ let(:shellout_options) do
34
+ {
35
+ :timeout => timeout,
36
+ :logger => Chef::Log
37
+ }
38
+ end
39
+
27
40
  before do
28
- allow(instance).to receive(:parse_options)
29
- allow(shell_out_result).to receive(:stdout)
30
- allow(shell_out_result).to receive(:stderr)
41
+ Chef::Config.merge!(config_options)
42
+ allow(subject).to receive(:configure_chef)
43
+ allow(subject).to receive(:parse_options)
44
+ allow(MonoLogger).to receive(:new)
45
+ allow(subject).to receive(:running?).and_return(true, false)
46
+ allow(subject).to receive(:state).and_return(4)
47
+ subject.service_init
31
48
  end
32
- it "runs chef-client in new process" do
33
- expect(instance).to receive(:configure_chef).twice
34
- instance.service_init
35
- expect(instance).to receive(:run_chef_client).and_call_original
36
- expect(instance).to receive(:shell_out).and_return(shell_out_result)
37
- allow(instance).to receive(:running?).and_return(true, false)
38
- allow(instance.instance_variable_get(:@service_signal)).to receive(:wait)
39
- allow(instance).to receive(:state).and_return(4)
40
- instance.service_main
49
+
50
+ subject { Chef::Application::WindowsService.new }
51
+
52
+ it "passes DEFAULT_LOG_LOCATION to chef-client instead of STDOUT" do
53
+ expect(subject).to receive(:shell_out).with(
54
+ "chef-client --no-fork -c test_config_file -L #{Chef::Application::WindowsService::DEFAULT_LOG_LOCATION}",
55
+ shellout_options
56
+ ).and_return(shell_out_result)
57
+ subject.service_main
41
58
  end
42
59
 
43
- context 'when running chef-client' do
44
- it "passes config params to new process with a default timeout of 2 hours (7200 seconds)" do
45
- Chef::Config.merge!({:log_location => tempfile.path, :config_file => "test_config_file", :log_level => :info})
46
- expect(instance).to receive(:configure_chef).twice
47
- instance.service_init
48
- allow(instance).to receive(:running?).and_return(true, false)
49
- allow(instance.instance_variable_get(:@service_signal)).to receive(:wait)
50
- allow(instance).to receive(:state).and_return(4)
51
- expect(instance).to receive(:run_chef_client).and_call_original
52
- expect(instance).to receive(:shell_out).with("chef-client --no-fork -c test_config_file -L #{tempfile.path}", {:timeout => 7200}).and_return(shell_out_result)
53
- instance.service_main
60
+ context 'has a log location configured' do
61
+ let(:tempfile) { Tempfile.new 'log_file' }
62
+ let(:config_options) do
63
+ {
64
+ log_location: tempfile.path,
65
+ config_file: "test_config_file",
66
+ log_level: :info
67
+ }
68
+ end
69
+
70
+ after do
54
71
  tempfile.unlink
55
72
  end
56
73
 
57
- it "passes config params to new process with a the timeout specified in the config" do
58
- Chef::Config.merge!({:log_location => tempfile.path, :config_file => "test_config_file", :log_level => :info})
74
+ it "uses the configured log location" do
75
+ expect(subject).to receive(:shell_out).with(
76
+ "chef-client --no-fork -c test_config_file -L #{tempfile.path}",
77
+ shellout_options
78
+ ).and_return(shell_out_result)
79
+ subject.service_main
80
+ end
81
+
82
+ context 'configured to Event Logger' do
83
+ let(:config_options) do
84
+ {
85
+ log_location: Chef::Log::WinEvt.new,
86
+ config_file: "test_config_file",
87
+ log_level: :info
88
+ }
89
+ end
90
+
91
+ it "does not pass log location to new process" do
92
+ expect(subject).to receive(:shell_out).with(
93
+ "chef-client --no-fork -c test_config_file",
94
+ shellout_options
95
+ ).and_return(shell_out_result)
96
+ subject.service_main
97
+ end
98
+ end
99
+ end
100
+
101
+ context 'configueres a watchdog timeout' do
102
+ let(:timeout) { 10 }
103
+
104
+ before do
59
105
  Chef::Config[:windows_service][:watchdog_timeout] = 10
60
- expect(instance).to receive(:configure_chef).twice
61
- instance.service_init
62
- allow(instance).to receive(:running?).and_return(true, false)
63
- allow(instance.instance_variable_get(:@service_signal)).to receive(:wait)
64
- allow(instance).to receive(:state).and_return(4)
65
- expect(instance).to receive(:run_chef_client).and_call_original
66
- expect(instance).to receive(:shell_out).with("chef-client --no-fork -c test_config_file -L #{tempfile.path}", {:timeout => 10}).and_return(shell_out_result)
67
- instance.service_main
68
- tempfile.unlink
106
+ end
107
+
108
+ it "passes watchdog timeout to new process" do
109
+ expect(subject).to receive(:shell_out).with(
110
+ "chef-client --no-fork -c test_config_file -L #{Chef::Application::WindowsService::DEFAULT_LOG_LOCATION}",
111
+ shellout_options
112
+ ).and_return(shell_out_result)
113
+ subject.service_main
69
114
  end
70
115
  end
71
116
  end
@@ -1,38 +1,48 @@
1
1
  require 'tempfile'
2
+ require 'bundler'
3
+
4
+ CURRENT_GEM_NAME = 'chef'
5
+ CURRENT_GEM_PATH = File.expand_path('../..', __FILE__)
2
6
 
3
7
  def bundle_exec_with_chef(test_gem, commands)
4
8
  gem_path = Bundler.environment.specs[test_gem].first.full_gem_path
5
- gemfile_path = File.join(gem_path, 'Gemfile.chef-external-test')
9
+ gemfile_path = File.join(gem_path, "Gemfile.#{CURRENT_GEM_NAME}-external-test")
6
10
  gemfile = File.open(gemfile_path, "w")
7
11
  begin
8
12
  IO.read(File.join(gem_path, 'Gemfile')).each_line do |line|
9
13
  if line =~ /^\s*gemspec/
10
14
  next
11
- elsif line =~ /^\s*gem 'chef'|\s*gem "chef"/
15
+ elsif line =~ /^\s*gem '#{CURRENT_GEM_NAME}'|\s*gem "#{CURRENT_GEM_NAME}"/
12
16
  next
13
17
  elsif line =~ /^\s*dev_gem\s*['"](.+)['"]\s*$/
14
18
  line = "gem '#{$1}', github: 'poise/#{$1}'"
15
- elsif line =~ /\s*gem\s*['"]#{test_gem}['"]/ # foodcritic
19
+ elsif line =~ /\s*gem\s*['"]#{test_gem}['"]/ # foodcritic end
16
20
  next
17
21
  end
18
22
  gemfile.puts(line)
19
23
  end
20
- gemfile.puts("gem 'chef', path: #{File.expand_path('../..', __FILE__).inspect}")
24
+ gemfile.puts("gem #{CURRENT_GEM_NAME.inspect}, path: #{CURRENT_GEM_PATH.inspect}")
21
25
  gemfile.puts("gemspec path: #{gem_path.inspect}")
22
26
  gemfile.close
23
27
  Dir.chdir(gem_path) do
24
- system({ 'BUNDLE_GEMFILE' => gemfile.path, 'RUBYOPT' => nil }, "bundle install")
25
- Array(commands).each do |command|
26
- system({ 'BUNDLE_GEMFILE' => gemfile.path, 'RUBYOPT' => nil }, "bundle exec #{command}")
28
+ Bundler.with_clean_env do
29
+ unless system({ 'RUBYOPT' => nil, 'GEMFILE_MOD' => nil }, "bundle install --gemfile #{gemfile_path}")
30
+ raise "Error running bundle install --gemfile #{gemfile_path} in #{gem_path}: #{$?.exitstatus}\nGemfile:\n#{IO.read(gemfile_path)}"
31
+ end
32
+ Array(commands).each do |command|
33
+ unless system({ 'BUNDLE_GEMFILE' => gemfile_path, 'RUBYOPT' => nil, 'GEMFILE_MOD' => nil }, "bundle exec #{command}")
34
+ raise "Error running bundle exec #{command} in #{gem_path} with BUNDLE_GEMFILE=#{gemfile_path}: #{$?.exitstatus}\nGemfile:\n#{IO.read(gemfile_path)}"
35
+ end
36
+ end
27
37
  end
28
38
  end
29
39
  ensure
30
- File.delete(gemfile_path)
40
+ File.delete(gemfile_path) if File.exist?(gemfile_path)
31
41
  end
32
42
  end
33
43
 
34
44
  EXTERNAL_PROJECTS = {
35
- "chef-zero" => [ "rake spec", "rake pedant" ],
45
+ "chef-zero" => [ "rake spec", "rake cheffs" ],
36
46
  "cheffish" => "rake spec",
37
47
  "chef-provisioning" => "rake spec",
38
48
  "chef-provisioning-aws" => "rake spec",
@@ -30,7 +30,7 @@ begin
30
30
  task :component_specs do
31
31
  Dir.chdir("chef-config") do
32
32
  Bundler.with_clean_env do
33
- sh("bundle install --local")
33
+ sh("bundle install")
34
34
  sh("bundle exec rake spec")
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.5.1
4
+ version: 12.6.0
5
5
  platform: universal-mingw32
6
6
  authors:
7
7
  - Adam Jacob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-08 00:00:00.000000000 Z
11
+ date: 2015-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chef-config
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 12.5.1
19
+ version: 12.6.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 12.5.1
26
+ version: 12.6.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mixlib-cli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -250,42 +250,42 @@ dependencies:
250
250
  requirements:
251
251
  - - "~>"
252
252
  - !ruby/object:Gem::Version
253
- version: '3.2'
253
+ version: '3.4'
254
254
  type: :runtime
255
255
  prerelease: false
256
256
  version_requirements: !ruby/object:Gem::Requirement
257
257
  requirements:
258
258
  - - "~>"
259
259
  - !ruby/object:Gem::Version
260
- version: '3.2'
260
+ version: '3.4'
261
261
  - !ruby/object:Gem::Dependency
262
262
  name: rspec-expectations
263
263
  requirement: !ruby/object:Gem::Requirement
264
264
  requirements:
265
265
  - - "~>"
266
266
  - !ruby/object:Gem::Version
267
- version: '3.2'
267
+ version: '3.4'
268
268
  type: :runtime
269
269
  prerelease: false
270
270
  version_requirements: !ruby/object:Gem::Requirement
271
271
  requirements:
272
272
  - - "~>"
273
273
  - !ruby/object:Gem::Version
274
- version: '3.2'
274
+ version: '3.4'
275
275
  - !ruby/object:Gem::Dependency
276
276
  name: rspec-mocks
277
277
  requirement: !ruby/object:Gem::Requirement
278
278
  requirements:
279
279
  - - "~>"
280
280
  - !ruby/object:Gem::Version
281
- version: '3.2'
281
+ version: '3.4'
282
282
  type: :runtime
283
283
  prerelease: false
284
284
  version_requirements: !ruby/object:Gem::Requirement
285
285
  requirements:
286
286
  - - "~>"
287
287
  - !ruby/object:Gem::Version
288
- version: '3.2'
288
+ version: '3.4'
289
289
  - !ruby/object:Gem::Dependency
290
290
  name: rspec_junit_formatter
291
291
  requirement: !ruby/object:Gem::Requirement
@@ -342,6 +342,20 @@ dependencies:
342
342
  - - "~>"
343
343
  - !ruby/object:Gem::Version
344
344
  version: '1.6'
345
+ - !ruby/object:Gem::Dependency
346
+ name: proxifier
347
+ requirement: !ruby/object:Gem::Requirement
348
+ requirements:
349
+ - - "~>"
350
+ - !ruby/object:Gem::Version
351
+ version: '1.0'
352
+ type: :runtime
353
+ prerelease: false
354
+ version_requirements: !ruby/object:Gem::Requirement
355
+ requirements:
356
+ - - "~>"
357
+ - !ruby/object:Gem::Version
358
+ version: '1.0'
345
359
  - !ruby/object:Gem::Dependency
346
360
  name: rack
347
361
  requirement: !ruby/object:Gem::Requirement
@@ -444,16 +458,16 @@ dependencies:
444
458
  name: win32-eventlog
445
459
  requirement: !ruby/object:Gem::Requirement
446
460
  requirements:
447
- - - "~>"
461
+ - - '='
448
462
  - !ruby/object:Gem::Version
449
- version: 0.6.2
463
+ version: 0.6.3
450
464
  type: :runtime
451
465
  prerelease: false
452
466
  version_requirements: !ruby/object:Gem::Requirement
453
467
  requirements:
454
- - - "~>"
468
+ - - '='
455
469
  - !ruby/object:Gem::Version
456
- version: 0.6.2
470
+ version: 0.6.3
457
471
  - !ruby/object:Gem::Dependency
458
472
  name: win32-mmap
459
473
  requirement: !ruby/object:Gem::Requirement
@@ -488,14 +502,14 @@ dependencies:
488
502
  requirements:
489
503
  - - "~>"
490
504
  - !ruby/object:Gem::Version
491
- version: 0.7.5
505
+ version: 0.8.2
492
506
  type: :runtime
493
507
  prerelease: false
494
508
  version_requirements: !ruby/object:Gem::Requirement
495
509
  requirements:
496
510
  - - "~>"
497
511
  - !ruby/object:Gem::Version
498
- version: 0.7.5
512
+ version: 0.8.2
499
513
  - !ruby/object:Gem::Dependency
500
514
  name: win32-service
501
515
  requirement: !ruby/object:Gem::Requirement
@@ -568,6 +582,8 @@ files:
568
582
  - bin/chef-solo
569
583
  - bin/chef-windows-service
570
584
  - bin/knife
585
+ - chef-windows.gemspec
586
+ - chef.gemspec
571
587
  - distro/common/html/_sources/ctl_chef_client.txt
572
588
  - distro/common/html/_sources/ctl_chef_server.txt
573
589
  - distro/common/html/_sources/ctl_chef_shell.txt
@@ -854,7 +870,10 @@ files:
854
870
  - lib/chef/digester.rb
855
871
  - lib/chef/dsl.rb
856
872
  - lib/chef/dsl/audit.rb
873
+ - lib/chef/dsl/chef_provisioning.rb
874
+ - lib/chef/dsl/cheffish.rb
857
875
  - lib/chef/dsl/data_query.rb
876
+ - lib/chef/dsl/declare_resource.rb
858
877
  - lib/chef/dsl/definitions.rb
859
878
  - lib/chef/dsl/include_attribute.rb
860
879
  - lib/chef/dsl/include_recipe.rb
@@ -1103,10 +1122,13 @@ files:
1103
1122
  - lib/chef/mixin/path_sanity.rb
1104
1123
  - lib/chef/mixin/powershell_out.rb
1105
1124
  - lib/chef/mixin/powershell_type_coercions.rb
1125
+ - lib/chef/mixin/properties.rb
1106
1126
  - lib/chef/mixin/provides.rb
1127
+ - lib/chef/mixin/proxified_socket.rb
1107
1128
  - lib/chef/mixin/recipe_definition_dsl_core.rb
1108
1129
  - lib/chef/mixin/securable.rb
1109
1130
  - lib/chef/mixin/shell_out.rb
1131
+ - lib/chef/mixin/subclass_directive.rb
1110
1132
  - lib/chef/mixin/template.rb
1111
1133
  - lib/chef/mixin/unformatter.rb
1112
1134
  - lib/chef/mixin/uris.rb
@@ -1214,7 +1236,9 @@ files:
1214
1236
  - lib/chef/provider/package/smartos.rb
1215
1237
  - lib/chef/provider/package/solaris.rb
1216
1238
  - lib/chef/provider/package/windows.rb
1239
+ - lib/chef/provider/package/windows/exe.rb
1217
1240
  - lib/chef/provider/package/windows/msi.rb
1241
+ - lib/chef/provider/package/windows/registry_uninstall_entry.rb
1218
1242
  - lib/chef/provider/package/yum-dump.py
1219
1243
  - lib/chef/provider/package/yum.rb
1220
1244
  - lib/chef/provider/package/zypper.rb
@@ -1303,6 +1327,7 @@ files:
1303
1327
  - lib/chef/resource/http_request.rb
1304
1328
  - lib/chef/resource/ifconfig.rb
1305
1329
  - lib/chef/resource/ips_package.rb
1330
+ - lib/chef/resource/ksh.rb
1306
1331
  - lib/chef/resource/link.rb
1307
1332
  - lib/chef/resource/log.rb
1308
1333
  - lib/chef/resource/lwrp_base.rb
@@ -1423,6 +1448,7 @@ files:
1423
1448
  - lib/chef/win32/eventlog.rb
1424
1449
  - lib/chef/win32/file.rb
1425
1450
  - lib/chef/win32/file/info.rb
1451
+ - lib/chef/win32/file/version_info.rb
1426
1452
  - lib/chef/win32/handle.rb
1427
1453
  - lib/chef/win32/memory.rb
1428
1454
  - lib/chef/win32/mutex.rb
@@ -1454,6 +1480,25 @@ files:
1454
1480
  - spec/data/apt/chef-integration-test-1.1/debian/files
1455
1481
  - spec/data/apt/chef-integration-test-1.1/debian/rules
1456
1482
  - spec/data/apt/chef-integration-test-1.1/debian/source/format
1483
+ - spec/data/apt/chef-integration-test2-1.0/debian/changelog
1484
+ - spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log
1485
+ - spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars
1486
+ - spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles
1487
+ - spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control
1488
+ - spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums
1489
+ - spec/data/apt/chef-integration-test2-1.0/debian/compat
1490
+ - spec/data/apt/chef-integration-test2-1.0/debian/conffiles
1491
+ - spec/data/apt/chef-integration-test2-1.0/debian/control
1492
+ - spec/data/apt/chef-integration-test2-1.0/debian/copyright
1493
+ - spec/data/apt/chef-integration-test2-1.0/debian/files
1494
+ - spec/data/apt/chef-integration-test2-1.0/debian/rules
1495
+ - spec/data/apt/chef-integration-test2-1.0/debian/source/format
1496
+ - spec/data/apt/chef-integration-test2_1.0-1.debian.tar.gz
1497
+ - spec/data/apt/chef-integration-test2_1.0-1.dsc
1498
+ - spec/data/apt/chef-integration-test2_1.0-1_amd64.build
1499
+ - spec/data/apt/chef-integration-test2_1.0-1_amd64.changes
1500
+ - spec/data/apt/chef-integration-test2_1.0-1_amd64.deb
1501
+ - spec/data/apt/chef-integration-test2_1.0.orig.tar.gz
1457
1502
  - spec/data/apt/chef-integration-test_1.0-1_amd64.changes
1458
1503
  - spec/data/apt/chef-integration-test_1.0-1_amd64.deb
1459
1504
  - spec/data/apt/chef-integration-test_1.0.orig.tar.gz
@@ -1758,6 +1803,7 @@ files:
1758
1803
  - spec/functional/resource/cron_spec.rb
1759
1804
  - spec/functional/resource/deploy_revision_spec.rb
1760
1805
  - spec/functional/resource/directory_spec.rb
1806
+ - spec/functional/resource/dpkg_package_spec.rb
1761
1807
  - spec/functional/resource/dsc_resource_spec.rb
1762
1808
  - spec/functional/resource/dsc_script_spec.rb
1763
1809
  - spec/functional/resource/env_spec.rb
@@ -1780,6 +1826,7 @@ files:
1780
1826
  - spec/functional/resource/user/dscl_spec.rb
1781
1827
  - spec/functional/resource/user/useradd_spec.rb
1782
1828
  - spec/functional/resource/user/windows_spec.rb
1829
+ - spec/functional/resource/windows_package_spec.rb
1783
1830
  - spec/functional/resource/windows_service_spec.rb
1784
1831
  - spec/functional/rest_spec.rb
1785
1832
  - spec/functional/run_lock_spec.rb
@@ -1793,6 +1840,7 @@ files:
1793
1840
  - spec/functional/win32/security_spec.rb
1794
1841
  - spec/functional/win32/service_manager_spec.rb
1795
1842
  - spec/functional/win32/sid_spec.rb
1843
+ - spec/functional/win32/version_info_spec.rb
1796
1844
  - spec/functional/win32/versions_spec.rb
1797
1845
  - spec/integration/client/client_spec.rb
1798
1846
  - spec/integration/client/ipv6_spec.rb
@@ -1842,10 +1890,6 @@ files:
1842
1890
  - spec/support/matchers/leak.rb
1843
1891
  - spec/support/mock/constant.rb
1844
1892
  - spec/support/mock/platform.rb
1845
- - spec/support/pedant/Gemfile
1846
- - spec/support/pedant/pedant_config.rb
1847
- - spec/support/pedant/run_pedant.rb
1848
- - spec/support/pedant/stickywicket.pem
1849
1893
  - spec/support/platform_helpers.rb
1850
1894
  - spec/support/platforms/prof/gc.rb
1851
1895
  - spec/support/platforms/prof/win32.rb
@@ -1904,6 +1948,7 @@ files:
1904
1948
  - spec/unit/chef_fs/data_handler/group_handler_spec.rb
1905
1949
  - spec/unit/chef_fs/diff_spec.rb
1906
1950
  - spec/unit/chef_fs/file_pattern_spec.rb
1951
+ - spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb
1907
1952
  - spec/unit/chef_fs/file_system/operation_failed_error_spec.rb
1908
1953
  - spec/unit/chef_fs/file_system_spec.rb
1909
1954
  - spec/unit/chef_fs/parallelizer.rb
@@ -2092,8 +2137,11 @@ files:
2092
2137
  - spec/unit/mixin/path_sanity_spec.rb
2093
2138
  - spec/unit/mixin/powershell_out_spec.rb
2094
2139
  - spec/unit/mixin/powershell_type_coercions_spec.rb
2140
+ - spec/unit/mixin/properties_spec.rb
2141
+ - spec/unit/mixin/proxified_socket_spec.rb
2095
2142
  - spec/unit/mixin/securable_spec.rb
2096
2143
  - spec/unit/mixin/shell_out_spec.rb
2144
+ - spec/unit/mixin/subclass_directive_spec.rb
2097
2145
  - spec/unit/mixin/template_spec.rb
2098
2146
  - spec/unit/mixin/unformatter_spec.rb
2099
2147
  - spec/unit/mixin/uris_spec.rb
@@ -2173,12 +2221,12 @@ files:
2173
2221
  - spec/unit/provider/package/rubygems_spec.rb
2174
2222
  - spec/unit/provider/package/smartos_spec.rb
2175
2223
  - spec/unit/provider/package/solaris_spec.rb
2224
+ - spec/unit/provider/package/windows/exe_spec.rb
2176
2225
  - spec/unit/provider/package/windows/msi_spec.rb
2177
2226
  - spec/unit/provider/package/windows_spec.rb
2178
2227
  - spec/unit/provider/package/yum_spec.rb
2179
2228
  - spec/unit/provider/package/zypper_spec.rb
2180
2229
  - spec/unit/provider/package_spec.rb
2181
- - spec/unit/provider/package_spec.rbe
2182
2230
  - spec/unit/provider/powershell_script_spec.rb
2183
2231
  - spec/unit/provider/registry_key_spec.rb
2184
2232
  - spec/unit/provider/remote_directory_spec.rb
@@ -2255,6 +2303,7 @@ files:
2255
2303
  - spec/unit/resource/http_request_spec.rb
2256
2304
  - spec/unit/resource/ifconfig_spec.rb
2257
2305
  - spec/unit/resource/ips_package_spec.rb
2306
+ - spec/unit/resource/ksh_spec.rb
2258
2307
  - spec/unit/resource/link_spec.rb
2259
2308
  - spec/unit/resource/log_spec.rb
2260
2309
  - spec/unit/resource/macports_package_spec.rb