microwave 1.0.4 → 11.400.2

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 (249) hide show
  1. data/CONTRIBUTING.md +155 -0
  2. data/README.md +89 -0
  3. data/Rakefile +2 -2
  4. data/bin/chef-apply +25 -0
  5. data/bin/chef-shell +34 -0
  6. data/bin/chef-solo +0 -2
  7. data/bin/shef +6 -5
  8. data/lib/chef.rb +2 -4
  9. data/spec/data/big_json.json +2 -1
  10. data/spec/data/big_json_plus_one.json +2 -1
  11. data/spec/data/cookbooks/chefignore +2 -0
  12. data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
  13. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  14. data/spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle +0 -0
  15. data/spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle +0 -0
  16. data/spec/data/git_bundles/sinatra-test-app.gitbundle +0 -0
  17. data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
  18. data/spec/data/nodes/default.rb +3 -3
  19. data/spec/data/nodes/test.example.com.rb +3 -3
  20. data/spec/data/nodes/test.rb +3 -3
  21. data/spec/data/partial_one.erb +1 -0
  22. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
  23. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
  24. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
  25. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
  26. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
  27. data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
  28. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  29. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
  30. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
  31. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
  32. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
  33. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
  34. data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
  35. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  36. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
  37. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
  38. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
  39. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
  40. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
  41. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
  42. data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
  43. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  44. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
  45. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
  46. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
  47. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
  48. data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
  49. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  50. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
  51. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
  52. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
  53. data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
  54. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  55. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
  56. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
  57. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
  58. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
  59. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
  60. data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
  61. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
  62. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
  63. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
  64. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
  65. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
  66. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
  67. data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
  68. data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
  69. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  70. data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
  71. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  72. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
  73. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
  74. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
  75. data/spec/data/shef-config.rb +10 -0
  76. data/spec/functional/dsl/registry_helper_spec.rb +63 -0
  77. data/spec/functional/knife/cookbook_delete_spec.rb +0 -2
  78. data/spec/functional/knife/exec_spec.rb +4 -6
  79. data/spec/functional/knife/smoke_test.rb +34 -0
  80. data/spec/functional/knife/ssh_spec.rb +64 -3
  81. data/spec/functional/resource/cookbook_file_spec.rb +33 -2
  82. data/spec/functional/resource/deploy_revision_spec.rb +515 -0
  83. data/spec/functional/resource/directory_spec.rb +4 -0
  84. data/spec/functional/resource/file_spec.rb +56 -22
  85. data/spec/functional/resource/link_spec.rb +12 -10
  86. data/spec/functional/resource/registry_spec.rb +572 -0
  87. data/spec/functional/resource/remote_directory_spec.rb +142 -36
  88. data/spec/functional/resource/remote_file_spec.rb +28 -3
  89. data/spec/functional/resource/template_spec.rb +23 -2
  90. data/spec/functional/run_lock_spec.rb +238 -0
  91. data/spec/functional/shell_spec.rb +101 -0
  92. data/spec/functional/tiny_server_spec.rb +5 -4
  93. data/spec/functional/win32/registry_helper_spec.rb +632 -0
  94. data/spec/functional/win32/security_spec.rb +37 -0
  95. data/spec/spec_helper.rb +15 -3
  96. data/spec/stress/win32/security_spec.rb +5 -5
  97. data/spec/support/chef_helpers.rb +14 -3
  98. data/spec/support/lib/chef/resource/cat.rb +3 -5
  99. data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
  100. data/spec/support/lib/chef/resource/zen_master.rb +8 -10
  101. data/spec/support/matchers/leak.rb +1 -1
  102. data/spec/support/platform_helpers.rb +18 -0
  103. data/spec/support/shared/functional/directory_resource.rb +85 -23
  104. data/spec/support/shared/functional/file_resource.rb +198 -53
  105. data/spec/support/shared/functional/securable_resource.rb +140 -105
  106. data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
  107. data/spec/support/shared/unit/file_system_support.rb +110 -0
  108. data/spec/support/shared/unit/platform_introspector.rb +162 -0
  109. data/spec/tiny_server.rb +29 -10
  110. data/spec/unit/api_client/registration_spec.rb +172 -0
  111. data/spec/unit/api_client_spec.rb +156 -103
  112. data/spec/unit/application/apply.rb +84 -0
  113. data/spec/unit/application/knife_spec.rb +5 -0
  114. data/spec/unit/application_spec.rb +57 -2
  115. data/spec/unit/chef_fs/diff_spec.rb +329 -0
  116. data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
  117. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
  118. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
  119. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
  120. data/spec/unit/chef_fs/file_system_spec.rb +136 -0
  121. data/spec/unit/client_spec.rb +188 -16
  122. data/spec/unit/config_spec.rb +54 -4
  123. data/spec/unit/cookbook/chefignore_spec.rb +2 -1
  124. data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
  125. data/spec/unit/cookbook_loader_spec.rb +153 -91
  126. data/spec/unit/cookbook_manifest_spec.rb +81 -81
  127. data/spec/unit/cookbook_spec.rb +3 -20
  128. data/spec/unit/cookbook_version_spec.rb +23 -122
  129. data/spec/unit/digester_spec.rb +50 -0
  130. data/spec/unit/dsl/data_query_spec.rb +66 -0
  131. data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
  132. data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
  133. data/spec/unit/encrypted_data_bag_item_spec.rb +126 -10
  134. data/spec/unit/environment_spec.rb +0 -130
  135. data/spec/unit/exceptions_spec.rb +2 -3
  136. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +23 -3
  137. data/spec/unit/json_compat_spec.rb +69 -0
  138. data/spec/unit/knife/bootstrap_spec.rb +81 -28
  139. data/spec/unit/knife/client_reregister_spec.rb +23 -22
  140. data/spec/unit/knife/configure_spec.rb +29 -26
  141. data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
  142. data/spec/unit/knife/cookbook_site_install_spec.rb +12 -2
  143. data/spec/unit/knife/cookbook_test_spec.rb +1 -0
  144. data/spec/unit/knife/cookbook_upload_spec.rb +41 -2
  145. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -1
  146. data/spec/unit/knife/core/ui_spec.rb +156 -7
  147. data/spec/unit/knife/data_bag_create_spec.rb +14 -0
  148. data/spec/unit/knife/data_bag_edit_spec.rb +14 -4
  149. data/spec/unit/knife/data_bag_from_file_spec.rb +17 -5
  150. data/spec/unit/knife/data_bag_show_spec.rb +11 -4
  151. data/spec/unit/knife/index_rebuild_spec.rb +96 -33
  152. data/spec/unit/knife/knife_help.rb +7 -7
  153. data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
  154. data/spec/unit/knife/ssh_spec.rb +121 -15
  155. data/spec/unit/knife/status_spec.rb +2 -2
  156. data/spec/unit/knife/user_create_spec.rb +86 -0
  157. data/spec/unit/knife/user_delete_spec.rb +39 -0
  158. data/spec/unit/knife/user_edit_spec.rb +42 -0
  159. data/spec/unit/knife/user_list_spec.rb +32 -0
  160. data/spec/unit/knife/user_reregister_spec.rb +53 -0
  161. data/spec/unit/knife/user_show_spec.rb +41 -0
  162. data/spec/unit/knife_spec.rb +53 -0
  163. data/spec/unit/lwrp_spec.rb +59 -17
  164. data/spec/unit/mixin/checksum_spec.rb +2 -2
  165. data/spec/unit/mixin/deep_merge_spec.rb +56 -491
  166. data/spec/unit/mixin/deprecation_spec.rb +23 -0
  167. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
  168. data/spec/unit/mixin/params_validate_spec.rb +4 -2
  169. data/spec/unit/mixin/securable_spec.rb +5 -3
  170. data/spec/unit/mixin/template_spec.rb +119 -0
  171. data/spec/unit/node/attribute_spec.rb +272 -137
  172. data/spec/unit/node/immutable_collections_spec.rb +139 -0
  173. data/spec/unit/node_spec.rb +411 -339
  174. data/spec/unit/platform_spec.rb +8 -8
  175. data/spec/unit/provider/breakpoint_spec.rb +8 -8
  176. data/spec/unit/provider/cookbook_file_spec.rb +4 -8
  177. data/spec/unit/provider/deploy/revision_spec.rb +2 -8
  178. data/spec/unit/provider/deploy_spec.rb +6 -40
  179. data/spec/unit/provider/directory_spec.rb +103 -68
  180. data/spec/unit/provider/erl_call_spec.rb +0 -2
  181. data/spec/unit/provider/file_spec.rb +69 -59
  182. data/spec/unit/provider/git_spec.rb +0 -10
  183. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  184. data/spec/unit/provider/group/usermod_spec.rb +2 -2
  185. data/spec/unit/provider/http_request_spec.rb +28 -69
  186. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  187. data/spec/unit/provider/link_spec.rb +1 -1
  188. data/spec/unit/provider/ohai_spec.rb +4 -4
  189. data/spec/unit/provider/package/apt_spec.rb +0 -1
  190. data/spec/unit/provider/package/ips_spec.rb +0 -1
  191. data/spec/unit/provider/package/rubygems_spec.rb +0 -18
  192. data/spec/unit/provider/package/yum_spec.rb +79 -15
  193. data/spec/unit/provider/package_spec.rb +7 -5
  194. data/spec/unit/provider/registry_key_spec.rb +269 -0
  195. data/spec/unit/provider/remote_directory_spec.rb +24 -7
  196. data/spec/unit/provider/remote_file_spec.rb +36 -0
  197. data/spec/unit/provider/route_spec.rb +3 -6
  198. data/spec/unit/provider/ruby_block_spec.rb +8 -0
  199. data/spec/unit/provider/service/arch_service_spec.rb +4 -4
  200. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  201. data/spec/unit/provider/service/freebsd_service_spec.rb +4 -4
  202. data/spec/unit/provider/service/init_service_spec.rb +26 -3
  203. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  204. data/spec/unit/provider/service/invokercd_service_spec.rb +3 -3
  205. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  206. data/spec/unit/provider/service/simple_service_spec.rb +3 -3
  207. data/spec/unit/provider/service/upstart_service_spec.rb +7 -7
  208. data/spec/unit/provider/service_spec.rb +2 -2
  209. data/spec/unit/provider/subversion_spec.rb +1 -1
  210. data/spec/unit/provider/template_spec.rb +35 -11
  211. data/spec/unit/provider/user/dscl_spec.rb +57 -31
  212. data/spec/unit/provider/user_spec.rb +7 -16
  213. data/spec/unit/provider_spec.rb +4 -3
  214. data/spec/unit/recipe_spec.rb +10 -8
  215. data/spec/unit/registry_helper_spec.rb +376 -0
  216. data/spec/unit/resource/log_spec.rb +9 -0
  217. data/spec/unit/resource/registry_key_spec.rb +171 -0
  218. data/spec/unit/resource/remote_file_spec.rb +21 -23
  219. data/spec/unit/resource/ruby_block_spec.rb +7 -3
  220. data/spec/unit/resource/service_spec.rb +11 -0
  221. data/spec/unit/resource_spec.rb +27 -4
  222. data/spec/unit/rest/auth_credentials_spec.rb +2 -14
  223. data/spec/unit/rest_spec.rb +122 -187
  224. data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
  225. data/spec/unit/run_context_spec.rb +18 -4
  226. data/spec/unit/run_list_spec.rb +0 -209
  227. data/spec/unit/run_lock_spec.rb +37 -0
  228. data/spec/unit/runner_spec.rb +101 -2
  229. data/spec/unit/scan_access_control_spec.rb +4 -4
  230. data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
  231. data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
  232. data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +12 -12
  233. data/spec/unit/shell_out_spec.rb +18 -0
  234. data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
  235. data/spec/unit/user_spec.rb +255 -0
  236. metadata +162 -157
  237. data/README.rdoc +0 -177
  238. data/spec/unit/certificate_spec.rb +0 -76
  239. data/spec/unit/checksum_cache_spec.rb +0 -209
  240. data/spec/unit/checksum_spec.rb +0 -94
  241. data/spec/unit/couchdb_spec.rb +0 -274
  242. data/spec/unit/index_queue_spec.rb +0 -391
  243. data/spec/unit/json_compat_spect.rb +0 -53
  244. data/spec/unit/mixin/language_spec.rb +0 -305
  245. data/spec/unit/openid_registration_spec.rb +0 -153
  246. data/spec/unit/solr_query/query_transform_spec.rb +0 -454
  247. data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
  248. data/spec/unit/solr_query_spec.rb +0 -203
  249. data/spec/unit/webui_user_spec.rb +0 -238
@@ -0,0 +1,37 @@
1
+ #
2
+ # Author:: Daniel DeLeo (<dan@opscode.com>)
3
+ # Copyright:: Copyright (c) 2012 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require File.expand_path('../../spec_helper', __FILE__)
19
+ require 'chef/client'
20
+
21
+ describe Chef::RunLock do
22
+
23
+ describe "when first created" do
24
+ it "locates the lockfile in the file cache path by default" do
25
+ run_lock = Chef::RunLock.new(:file_cache_path => "/var/chef/cache", :lockfile => nil)
26
+ run_lock.runlock_file.should == "/var/chef/cache/chef-client-running.pid"
27
+ end
28
+
29
+ it "locates the lockfile in the user-configured path when set" do
30
+ run_lock = Chef::RunLock.new(:file_cache_path => "/var/chef/cache", :lockfile => "/tmp/chef-client-running.pid")
31
+ run_lock.runlock_file.should == "/tmp/chef-client-running.pid"
32
+ end
33
+ end
34
+
35
+ # See also: spec/functional/run_lock_spec
36
+
37
+ end
@@ -52,13 +52,40 @@ class SnitchyProvider < Chef::Provider
52
52
 
53
53
  end
54
54
 
55
+ class FailureResource < Chef::Resource
56
+
57
+ attr_accessor :action
58
+
59
+ def initialize(*args)
60
+ super
61
+ @action = :fail
62
+ end
63
+
64
+ def provider
65
+ FailureProvider
66
+ end
67
+ end
68
+
69
+ class FailureProvider < Chef::Provider
70
+
71
+ class ChefClientFail < StandardError; end
72
+
73
+ def load_current_resource
74
+ true
75
+ end
76
+
77
+ def action_fail
78
+ raise ChefClientFail, "chef had an error of some sort"
79
+ end
80
+ end
81
+
55
82
  describe Chef::Runner do
56
83
 
57
84
  before(:each) do
58
85
  @node = Chef::Node.new
59
86
  @node.name "latte"
60
- @node.platform "mac_os_x"
61
- @node.platform_version "10.5.1"
87
+ @node.automatic[:platform] = "mac_os_x"
88
+ @node.automatic[:platform_version] = "10.5.1"
62
89
  @events = Chef::EventDispatch::Dispatcher.new
63
90
  @run_context = Chef::RunContext.new(@node, Chef::CookbookCollection.new({}), @events)
64
91
  @first_resource = Chef::Resource::Cat.new("loulou1", @run_context)
@@ -167,6 +194,78 @@ describe Chef::Runner do
167
194
  @first_resource.should be_updated
168
195
  end
169
196
 
197
+ it "should execute delayed notifications when a failure occurs in the chef client run" do
198
+ @first_resource.action = :nothing
199
+ second_resource = Chef::Resource::Cat.new("peanut", @run_context)
200
+ second_resource.action = :purr
201
+
202
+ @run_context.resource_collection << second_resource
203
+ second_resource.notifies(:purr, @first_resource, :delayed)
204
+
205
+ third_resource = FailureResource.new("explode", @run_context)
206
+ @run_context.resource_collection << third_resource
207
+
208
+ lambda {@runner.converge}.should raise_error(FailureProvider::ChefClientFail)
209
+
210
+ @first_resource.should be_updated
211
+ end
212
+
213
+ it "should execute delayed notifications when a failure occurs in a notification" do
214
+ @first_resource.action = :nothing
215
+ second_resource = Chef::Resource::Cat.new("peanut", @run_context)
216
+ second_resource.action = :purr
217
+
218
+ @run_context.resource_collection << second_resource
219
+
220
+ third_resource = FailureResource.new("explode", @run_context)
221
+ third_resource.action = :nothing
222
+ @run_context.resource_collection << third_resource
223
+
224
+ second_resource.notifies(:fail, third_resource, :delayed)
225
+ second_resource.notifies(:purr, @first_resource, :delayed)
226
+
227
+ lambda {@runner.converge}.should raise_error(FailureProvider::ChefClientFail)
228
+
229
+ @first_resource.should be_updated
230
+ end
231
+
232
+ it "should execute delayed notifications when a failure occurs in multiple notifications" do
233
+ @first_resource.action = :nothing
234
+ second_resource = Chef::Resource::Cat.new("peanut", @run_context)
235
+ second_resource.action = :purr
236
+
237
+ @run_context.resource_collection << second_resource
238
+
239
+ third_resource = FailureResource.new("explode", @run_context)
240
+ third_resource.action = :nothing
241
+ @run_context.resource_collection << third_resource
242
+
243
+ fourth_resource = FailureResource.new("explode again", @run_context)
244
+ fourth_resource.action = :nothing
245
+ @run_context.resource_collection << fourth_resource
246
+
247
+ second_resource.notifies(:fail, third_resource, :delayed)
248
+ second_resource.notifies(:fail, fourth_resource, :delayed)
249
+ second_resource.notifies(:purr, @first_resource, :delayed)
250
+
251
+ exception = nil
252
+ begin
253
+ @runner.converge
254
+ rescue => e
255
+ exception = e
256
+ end
257
+ exception.should be_a(Chef::Exceptions::MultipleFailures)
258
+
259
+ expected_message =<<-E
260
+ Multiple failures occurred:
261
+ * FailureProvider::ChefClientFail occurred in delayed notification: [explode] (dynamically defined) had an error: FailureProvider::ChefClientFail: chef had an error of some sort
262
+ * FailureProvider::ChefClientFail occurred in delayed notification: [explode again] (dynamically defined) had an error: FailureProvider::ChefClientFail: chef had an error of some sort
263
+ E
264
+ exception.message.should == expected_message
265
+
266
+ @first_resource.should be_updated
267
+ end
268
+
170
269
  it "does not duplicate delayed notifications" do
171
270
  SnitchyProvider.clear_action_record
172
271
 
@@ -60,7 +60,7 @@ describe Chef::ScanAccessControl do
60
60
  end
61
61
 
62
62
  it "sets the mode of the current resource to the current mode as a String" do
63
- @current_resource.mode.should == "644"
63
+ @current_resource.mode.should == "0644"
64
64
  end
65
65
 
66
66
  context "on unix", :unix_only do
@@ -91,7 +91,7 @@ describe Chef::ScanAccessControl do
91
91
  end
92
92
 
93
93
  it "sets the mode of the current resource to the file's current mode as a string" do
94
- @current_resource.mode.should == "644"
94
+ @current_resource.mode.should == "0644"
95
95
  end
96
96
  end
97
97
 
@@ -101,8 +101,8 @@ describe Chef::ScanAccessControl do
101
101
  @scanner.set_all!
102
102
  end
103
103
 
104
- it "sets the mode of the current resource to the current mode as an integer" do
105
- @current_resource.mode.should == 00644
104
+ it "sets the mode of the current resource to the current mode as a String" do
105
+ @current_resource.mode.should == "0644"
106
106
  end
107
107
 
108
108
  end
@@ -19,16 +19,16 @@
19
19
  require 'spec_helper'
20
20
  require 'ostruct'
21
21
 
22
- describe Shef::ModelWrapper do
22
+ describe Shell::ModelWrapper do
23
23
  before do
24
24
  @model = OpenStruct.new(:name=>"Chef::Node")
25
- @wrapper = Shef::ModelWrapper.new(@model)
25
+ @wrapper = Shell::ModelWrapper.new(@model)
26
26
  end
27
27
 
28
28
  describe "when created with an explicit model_symbol" do
29
29
  before do
30
30
  @model = OpenStruct.new(:name=>"Chef::ApiClient")
31
- @wrapper = Shef::ModelWrapper.new(@model, :client)
31
+ @wrapper = Shell::ModelWrapper.new(@model, :client)
32
32
  end
33
33
 
34
34
  it "uses the explicit model symbol" do
@@ -47,7 +47,7 @@ describe Shef::ModelWrapper do
47
47
  @node_2 = Chef::Node.new
48
48
  @node_2.name("yummy")
49
49
  @server_response = {:node_1 => @node_1, :node_2 => @node_2}
50
- @wrapper = Shef::ModelWrapper.new(Chef::Node)
50
+ @wrapper = Shell::ModelWrapper.new(Chef::Node)
51
51
  Chef::Node.stub(:list).and_return(@server_response)
52
52
  end
53
53
 
@@ -68,7 +68,7 @@ describe Shef::ModelWrapper do
68
68
  @node_2 = Chef::Node.new
69
69
  @node_2.name("yummy")
70
70
  @server_response = {:node_1 => @node_1, :node_2 => @node_2}
71
- @wrapper = Shef::ModelWrapper.new(Chef::Node)
71
+ @wrapper = Shell::ModelWrapper.new(Chef::Node)
72
72
 
73
73
  # Creating a Chef::Search::Query object tries to read the private key...
74
74
  @searcher = mock("Chef::Search::Query #{__FILE__}:#{__LINE__}")
@@ -18,16 +18,16 @@
18
18
 
19
19
  require 'spec_helper'
20
20
 
21
- describe Shef::Extensions do
21
+ describe Shell::Extensions do
22
22
  describe "extending object for top level methods" do
23
23
 
24
24
  before do
25
- @shef_client = TestableShefSession.instance
26
- Shef.stub!(:session).and_return(@shef_client)
25
+ @shell_client = TestableShellSession.instance
26
+ Shell.stub!(:session).and_return(@shell_client)
27
27
  @job_manager = TestJobManager.new
28
28
  @root_context = Object.new
29
29
  @root_context.instance_eval(&ObjectTestHarness)
30
- Shef::Extensions.extend_context_object(@root_context)
30
+ Shell::Extensions.extend_context_object(@root_context)
31
31
  @root_context.conf = mock("irbconf")
32
32
  end
33
33
 
@@ -39,39 +39,39 @@ describe Shef::Extensions do
39
39
  @job_manager.jobs = [[:thread, irb_session]]
40
40
  @root_context.stub!(:jobs).and_return(@job_manager)
41
41
  @root_context.ensure_session_select_defined
42
- @root_context.jobs.select_shef_session(target_context_obj).should == irb_session
43
- @root_context.jobs.select_shef_session(:idontexist).should be_nil
42
+ @root_context.jobs.select_shell_session(target_context_obj).should == irb_session
43
+ @root_context.jobs.select_shell_session(:idontexist).should be_nil
44
44
  end
45
45
 
46
46
  it "finds, then switches to a session" do
47
47
  @job_manager.jobs = []
48
48
  @root_context.stub!(:ensure_session_select_defined)
49
49
  @root_context.stub!(:jobs).and_return(@job_manager)
50
- @job_manager.should_receive(:select_shef_session).and_return(:the_shef_session)
51
- @job_manager.should_receive(:switch).with(:the_shef_session)
50
+ @job_manager.should_receive(:select_shell_session).and_return(:the_shell_session)
51
+ @job_manager.should_receive(:switch).with(:the_shell_session)
52
52
  @root_context.find_or_create_session_for(:foo)
53
53
  end
54
54
 
55
55
  it "creates a new session if an existing one isn't found" do
56
56
  @job_manager.jobs = []
57
57
  @root_context.stub!(:jobs).and_return(@job_manager)
58
- @job_manager.stub!(:select_shef_session).and_return(nil)
58
+ @job_manager.stub!(:select_shell_session).and_return(nil)
59
59
  @root_context.should_receive(:irb).with(:foo)
60
60
  @root_context.find_or_create_session_for(:foo)
61
61
  end
62
62
 
63
63
  it "switches to recipe context" do
64
- @root_context.should respond_to(:recipe)
65
- @shef_client.recipe = :monkeyTime
64
+ @root_context.should respond_to(:recipe_mode)
65
+ @shell_client.recipe = :monkeyTime
66
66
  @root_context.should_receive(:find_or_create_session_for).with(:monkeyTime)
67
- @root_context.recipe
67
+ @root_context.recipe_mode
68
68
  end
69
69
 
70
70
  it "switches to attribute context" do
71
- @root_context.should respond_to(:attributes)
72
- @shef_client.node = "monkeyNodeTime"
71
+ @root_context.should respond_to(:attributes_mode)
72
+ @shell_client.node = "monkeyNodeTime"
73
73
  @root_context.should_receive(:find_or_create_session_for).with("monkeyNodeTime")
74
- @root_context.attributes
74
+ @root_context.attributes_mode
75
75
  end
76
76
 
77
77
  it "has a help command" do
@@ -93,7 +93,7 @@ describe Shef::Extensions do
93
93
 
94
94
  it "prints node attributes" do
95
95
  node = mock("node", :attribute => {:foo => :bar})
96
- @shef_client.node = node
96
+ @shell_client.node = node
97
97
  @root_context.should_receive(:pp).with({:foo => :bar})
98
98
  @root_context.ohai
99
99
  @root_context.should_receive(:pp).with(:bar)
@@ -101,7 +101,7 @@ describe Shef::Extensions do
101
101
  end
102
102
 
103
103
  it "resets the recipe and reloads ohai data" do
104
- @shef_client.should_receive(:reset!)
104
+ @shell_client.should_receive(:reset!)
105
105
  @root_context.reset
106
106
  end
107
107
 
@@ -117,12 +117,12 @@ describe Shef::Extensions do
117
117
  end
118
118
 
119
119
  it "gives access to the stepable iterator" do
120
- Shef::StandAloneSession.instance.stub!(:reset!)
121
- Shef.session.stub!(:rebuild_context)
120
+ Shell::StandAloneSession.instance.stub!(:reset!)
121
+ Shell.session.stub!(:rebuild_context)
122
122
  events = Chef::EventDispatch::Dispatcher.new
123
123
  run_context = Chef::RunContext.new(Chef::Node.new, {}, events)
124
124
  run_context.resource_collection.instance_variable_set(:@iterator, :the_iterator)
125
- Shef.session.run_context = run_context
125
+ Shell.session.run_context = run_context
126
126
  @root_context.chef_run.should == :the_iterator
127
127
  end
128
128
 
@@ -140,7 +140,7 @@ describe Shef::Extensions do
140
140
  @events = Chef::EventDispatch::Dispatcher.new
141
141
  @run_context = Chef::RunContext.new(Chef::Node.new, {}, @events)
142
142
  @recipe_object = Chef::Recipe.new(nil, nil, @run_context)
143
- Shef::Extensions.extend_context_recipe(@recipe_object)
143
+ Shell::Extensions.extend_context_recipe(@recipe_object)
144
144
  end
145
145
 
146
146
  it "gives a list of the resources" do
@@ -19,7 +19,7 @@ require 'spec_helper'
19
19
  require "ostruct"
20
20
 
21
21
 
22
- class TestableShefSession < Shef::ShefSession
22
+ class TestableShellSession < Shell::ShellSession
23
23
 
24
24
  def rebuild_node
25
25
  nil
@@ -39,22 +39,22 @@ class TestableShefSession < Shef::ShefSession
39
39
 
40
40
  end
41
41
 
42
- describe Shef::ShefSession do
42
+ describe Shell::ShellSession do
43
43
 
44
44
  it "is a singleton object" do
45
- Shef::ShefSession.should include(Singleton)
45
+ Shell::ShellSession.should include(Singleton)
46
46
  end
47
47
 
48
48
  end
49
49
 
50
- describe Shef::StandAloneSession do
50
+ describe Shell::StandAloneSession do
51
51
  before do
52
- @session = Shef::StandAloneSession.instance
52
+ @session = Shell::StandAloneSession.instance
53
53
  @node = @session.node = Chef::Node.new
54
54
  @events = Chef::EventDispatch::Dispatcher.new
55
55
  @run_context = @session.run_context = Chef::RunContext.new(@node, {}, @events)
56
56
  @recipe = @session.recipe = Chef::Recipe.new(nil, nil, @run_context)
57
- Shef::Extensions.extend_context_recipe(@recipe)
57
+ Shell::Extensions.extend_context_recipe(@recipe)
58
58
  end
59
59
 
60
60
  it "has a run_context" do
@@ -86,23 +86,23 @@ describe Shef::StandAloneSession do
86
86
 
87
87
  end
88
88
 
89
- describe Shef::SoloSession do
89
+ describe Shell::SoloSession do
90
90
  before do
91
- Chef::Config[:shef_solo] = true
92
- @session = Shef::SoloSession.instance
91
+ Chef::Config[:shell_solo] = true
92
+ @session = Shell::SoloSession.instance
93
93
  @node = Chef::Node.new
94
94
  @events = Chef::EventDispatch::Dispatcher.new
95
95
  @run_context = @session.run_context = Chef::RunContext.new(@node, {}, @events)
96
96
  @session.node = @node
97
97
  @recipe = @session.recipe = Chef::Recipe.new(nil, nil, @run_context)
98
- Shef::Extensions.extend_context_recipe(@recipe)
98
+ Shell::Extensions.extend_context_recipe(@recipe)
99
99
  end
100
100
 
101
101
  after do
102
- Chef::Config[:shef_solo] = nil
102
+ Chef::Config[:shell_solo] = nil
103
103
  end
104
104
 
105
- it "returns a collection based on it's compilation object and the extra recipe provided by shef" do
105
+ it "returns a collection based on it's compilation object and the extra recipe provided by chef-shell" do
106
106
  @session.stub!(:node_built?).and_return(true)
107
107
  kitteh = Chef::Resource::Cat.new("keyboard")
108
108
  @recipe.run_context.resource_collection << kitteh
@@ -0,0 +1,18 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Chef::ShellOut deprecation notices" do
4
+ it "logs a warning when initializing a new Chef::ShellOut object" do
5
+ Chef::Log.should_receive(:warn).with("Chef::ShellOut is deprecated, please use Mixlib::ShellOut")
6
+ Chef::Log.should_receive(:warn).with(/Called from\:/)
7
+ Chef::ShellOut.new("pwd")
8
+ end
9
+ end
10
+
11
+ describe "Chef::Exceptions::ShellCommandFailed deprecation notices" do
12
+
13
+ it "logs a warning when referencing the constant Chef::Exceptions::ShellCommandFailed" do
14
+ Chef::Log.should_receive(:warn).with("Chef::Exceptions::ShellCommandFailed is deprecated, use Mixlib::ShellOut::ShellCommandFailed")
15
+ Chef::Log.should_receive(:warn).with(/Called from\:/)
16
+ Chef::Exceptions::ShellCommandFailed
17
+ end
18
+ end
@@ -19,7 +19,7 @@ require 'spec_helper'
19
19
  require "ostruct"
20
20
 
21
21
  ObjectTestHarness = Proc.new do
22
- extend Shef::Extensions::ObjectCoreExtensions
22
+ extend Shell::Extensions::ObjectCoreExtensions
23
23
 
24
24
  def conf=(new_conf)
25
25
  @conf = new_conf
@@ -38,36 +38,36 @@ class TestJobManager
38
38
  attr_accessor :jobs
39
39
  end
40
40
 
41
- describe Shef do
41
+ describe Shell do
42
42
 
43
43
  before do
44
- Shef.irb_conf = {}
45
- Shef::ShefSession.instance.rspec_reset
46
- Shef::ShefSession.instance.stub!(:reset!)
44
+ Shell.irb_conf = {}
45
+ Shell::ShellSession.instance.rspec_reset
46
+ Shell::ShellSession.instance.stub!(:reset!)
47
47
  end
48
48
 
49
49
  describe "reporting its status" do
50
50
 
51
51
  it "alway says it is running" do
52
- Shef.should be_running
52
+ Shell.should be_running
53
53
  end
54
54
 
55
55
  end
56
56
 
57
57
  describe "configuring IRB" do
58
58
  it "configures irb history" do
59
- Shef.configure_irb
60
- Shef.irb_conf[:HISTORY_FILE].should == "~/.shef_history"
61
- Shef.irb_conf[:SAVE_HISTORY].should == 1000
59
+ Shell.configure_irb
60
+ Shell.irb_conf[:HISTORY_FILE].should == "~/.chef/chef_shell_history"
61
+ Shell.irb_conf[:SAVE_HISTORY].should == 1000
62
62
  end
63
63
 
64
64
  it "has a prompt like ``chef > '' in the default context" do
65
- Shef.configure_irb
65
+ Shell.configure_irb
66
66
 
67
67
  conf = OpenStruct.new
68
68
  conf.main = Object.new
69
69
  conf.main.instance_eval(&ObjectTestHarness)
70
- Shef.irb_conf[:IRB_RC].call(conf)
70
+ Shell.irb_conf[:IRB_RC].call(conf)
71
71
  conf.prompt_c.should == "chef > "
72
72
  conf.return_format.should == " => %s \n"
73
73
  conf.prompt_i.should == "chef > "
@@ -77,12 +77,12 @@ describe Shef do
77
77
  end
78
78
 
79
79
  it "has a prompt like ``chef:recipe > '' in recipe context" do
80
- Shef.configure_irb
80
+ Shell.configure_irb
81
81
 
82
82
  conf = OpenStruct.new
83
83
  events = Chef::EventDispatch::Dispatcher.new
84
84
  conf.main = Chef::Recipe.new(nil,nil,Chef::RunContext.new(Chef::Node.new, {}, events))
85
- Shef.irb_conf[:IRB_RC].call(conf)
85
+ Shell.irb_conf[:IRB_RC].call(conf)
86
86
  conf.prompt_c.should == "chef:recipe > "
87
87
  conf.prompt_i.should == "chef:recipe > "
88
88
  conf.prompt_n.should == "chef:recipe ?> "
@@ -90,11 +90,11 @@ describe Shef do
90
90
  end
91
91
 
92
92
  it "has a prompt like ``chef:attributes > '' in attributes/node context" do
93
- Shef.configure_irb
93
+ Shell.configure_irb
94
94
 
95
95
  conf = OpenStruct.new
96
96
  conf.main = Chef::Node.new
97
- Shef.irb_conf[:IRB_RC].call(conf)
97
+ Shell.irb_conf[:IRB_RC].call(conf)
98
98
  conf.prompt_c.should == "chef:attributes > "
99
99
  conf.prompt_i.should == "chef:attributes > "
100
100
  conf.prompt_n.should == "chef:attributes ?> "
@@ -111,7 +111,7 @@ describe Shef do
111
111
  end
112
112
 
113
113
  it "creates help text for methods with descriptions" do
114
- @chef_object.help_descriptions.should == [Shef::Extensions::Help.new("rspec_method", "rspecin'", nil)]
114
+ @chef_object.help_descriptions.should == [Shell::Extensions::Help.new("rspec_method", "rspecin'", nil)]
115
115
  end
116
116
 
117
117
  it "adds help text when a new method is described then defined" do
@@ -121,8 +121,8 @@ describe Shef do
121
121
  end
122
122
  EVAL
123
123
  @chef_object.instance_eval describe_define
124
- @chef_object.help_descriptions.should == [Shef::Extensions::Help.new("rspec_method", "rspecin'"),
125
- Shef::Extensions::Help.new("baz", "foo2the Bar")]
124
+ @chef_object.help_descriptions.should == [Shell::Extensions::Help.new("rspec_method", "rspecin'"),
125
+ Shell::Extensions::Help.new("baz", "foo2the Bar")]
126
126
  end
127
127
 
128
128
  it "adds help text for subcommands" do
@@ -132,8 +132,8 @@ describe Shef do
132
132
  end
133
133
  EVAL
134
134
  @chef_object.instance_eval describe_define
135
- expected_help_text_fragments = [Shef::Extensions::Help.new("rspec_method", "rspecin'")]
136
- expected_help_text_fragments << Shef::Extensions::Help.new("baz.baz_obj_command", "something you can do with baz.baz_obj_command")
135
+ expected_help_text_fragments = [Shell::Extensions::Help.new("rspec_method", "rspecin'")]
136
+ expected_help_text_fragments << Shell::Extensions::Help.new("baz.baz_obj_command", "something you can do with baz.baz_obj_command")
137
137
  @chef_object.help_descriptions.should == expected_help_text_fragments
138
138
  end
139
139