chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (628) hide show
  1. data/CONTRIBUTING.md +9 -0
  2. data/README.md +1 -1
  3. data/Rakefile +12 -0
  4. data/bin/chef-service-manager +1 -1
  5. data/bin/chef-windows-service +35 -0
  6. data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
  7. data/distro/common/html/ctl_chef_client.html +3 -7
  8. data/distro/common/html/ctl_chef_server.html +609 -41
  9. data/distro/common/html/ctl_chef_shell.html +2 -2
  10. data/distro/common/html/ctl_chef_solo.html +1 -1
  11. data/distro/common/html/index.html +13 -13
  12. data/distro/common/html/knife.html +10 -10
  13. data/distro/common/html/knife_bootstrap.html +8 -8
  14. data/distro/common/html/knife_client.html +12 -12
  15. data/distro/common/html/knife_common_options.html +7 -7
  16. data/distro/common/html/knife_configure.html +3 -3
  17. data/distro/common/html/knife_cookbook.html +19 -19
  18. data/distro/common/html/knife_cookbook_site.html +28 -28
  19. data/distro/common/html/knife_data_bag.html +28 -13
  20. data/distro/common/html/knife_delete.html +2 -2
  21. data/distro/common/html/knife_deps.html +3 -3
  22. data/distro/common/html/knife_diff.html +4 -4
  23. data/distro/common/html/knife_download.html +3 -3
  24. data/distro/common/html/knife_edit.html +2 -2
  25. data/distro/common/html/knife_environment.html +14 -14
  26. data/distro/common/html/knife_exec.html +11 -11
  27. data/distro/common/html/knife_index_rebuild.html +2 -2
  28. data/distro/common/html/knife_list.html +3 -3
  29. data/distro/common/html/knife_node.html +23 -23
  30. data/distro/common/html/knife_raw.html +4 -4
  31. data/distro/common/html/knife_recipe_list.html +3 -3
  32. data/distro/common/html/knife_role.html +11 -11
  33. data/distro/common/html/knife_search.html +4 -4
  34. data/distro/common/html/knife_serve.html +3 -3
  35. data/distro/common/html/knife_show.html +3 -3
  36. data/distro/common/html/knife_ssh.html +7 -7
  37. data/distro/common/html/knife_ssl_check.html +7 -7
  38. data/distro/common/html/knife_ssl_fetch.html +9 -9
  39. data/distro/common/html/knife_status.html +3 -3
  40. data/distro/common/html/knife_tag.html +9 -9
  41. data/distro/common/html/knife_upload.html +3 -3
  42. data/distro/common/html/knife_user.html +9 -9
  43. data/distro/common/html/knife_using.html +11 -11
  44. data/distro/common/html/knife_xargs.html +14 -5
  45. data/distro/common/html/search.html +2 -2
  46. data/distro/common/html/searchindex.js +1 -1
  47. data/distro/common/man/man1/chef-shell.1 +2 -2
  48. data/distro/common/man/man1/knife-bootstrap.1 +7 -7
  49. data/distro/common/man/man1/knife-client.1 +10 -10
  50. data/distro/common/man/man1/knife-configure.1 +5 -5
  51. data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
  52. data/distro/common/man/man1/knife-cookbook.1 +12 -12
  53. data/distro/common/man/man1/knife-data-bag.1 +34 -10
  54. data/distro/common/man/man1/knife-delete.1 +5 -5
  55. data/distro/common/man/man1/knife-deps.1 +5 -5
  56. data/distro/common/man/man1/knife-diff.1 +7 -7
  57. data/distro/common/man/man1/knife-download.1 +5 -5
  58. data/distro/common/man/man1/knife-edit.1 +5 -5
  59. data/distro/common/man/man1/knife-environment.1 +11 -11
  60. data/distro/common/man/man1/knife-exec.1 +11 -11
  61. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  62. data/distro/common/man/man1/knife-list.1 +5 -5
  63. data/distro/common/man/man1/knife-node.1 +16 -16
  64. data/distro/common/man/man1/knife-raw.1 +6 -6
  65. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  66. data/distro/common/man/man1/knife-role.1 +7 -7
  67. data/distro/common/man/man1/knife-search.1 +6 -6
  68. data/distro/common/man/man1/knife-serve.1 +6 -6
  69. data/distro/common/man/man1/knife-show.1 +5 -5
  70. data/distro/common/man/man1/knife-ssh.1 +9 -9
  71. data/distro/common/man/man1/knife-ssl-check.1 +7 -7
  72. data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
  73. data/distro/common/man/man1/knife-status.1 +5 -5
  74. data/distro/common/man/man1/knife-tag.1 +8 -8
  75. data/distro/common/man/man1/knife-upload.1 +5 -5
  76. data/distro/common/man/man1/knife-user.1 +8 -8
  77. data/distro/common/man/man1/knife-xargs.1 +36 -10
  78. data/distro/common/man/man1/knife.1 +14 -14
  79. data/distro/common/man/man8/chef-client.8 +3 -10
  80. data/distro/common/man/man8/chef-solo.8 +1 -1
  81. data/ext/win32-eventlog/Rakefile +50 -0
  82. data/ext/win32-eventlog/chef-log.man +26 -0
  83. data/lib/chef/application.rb +313 -241
  84. data/lib/chef/application/apply.rb +10 -8
  85. data/lib/chef/application/client.rb +58 -33
  86. data/lib/chef/application/solo.rb +33 -12
  87. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  88. data/lib/chef/chef_fs/command_line.rb +1 -1
  89. data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
  90. data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
  91. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
  92. data/lib/chef/client.rb +18 -48
  93. data/lib/chef/config.rb +43 -11
  94. data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
  95. data/lib/chef/cookbook/metadata.rb +81 -38
  96. data/lib/chef/cookbook/syntax_check.rb +18 -52
  97. data/lib/chef/cookbook_loader.rb +1 -1
  98. data/lib/chef/cookbook_version.rb +58 -39
  99. data/lib/chef/data_bag.rb +2 -2
  100. data/lib/chef/deprecation/provider/file.rb +2 -1
  101. data/lib/chef/dsl/data_query.rb +2 -29
  102. data/lib/chef/dsl/recipe.rb +8 -22
  103. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  104. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
  105. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
  106. data/lib/chef/event_loggers/base.rb +62 -0
  107. data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
  108. data/lib/chef/exceptions.rb +18 -1
  109. data/lib/chef/file_cache.rb +3 -2
  110. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
  111. data/lib/chef/http.rb +20 -13
  112. data/lib/chef/http/ssl_policies.rb +2 -1
  113. data/lib/chef/json_compat.rb +9 -3
  114. data/lib/chef/knife.rb +2 -1
  115. data/lib/chef/knife/bootstrap.rb +12 -18
  116. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  117. data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
  118. data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
  119. data/lib/chef/knife/cookbook_create.rb +1 -1
  120. data/lib/chef/knife/cookbook_site_share.rb +43 -8
  121. data/lib/chef/knife/core/bootstrap_context.rb +6 -11
  122. data/lib/chef/knife/core/object_loader.rb +5 -5
  123. data/lib/chef/knife/core/status_presenter.rb +156 -0
  124. data/lib/chef/knife/core/subcommand_loader.rb +6 -5
  125. data/lib/chef/knife/core/ui.rb +4 -4
  126. data/lib/chef/knife/data_bag_create.rb +7 -32
  127. data/lib/chef/knife/data_bag_edit.rb +24 -43
  128. data/lib/chef/knife/data_bag_from_file.rb +6 -31
  129. data/lib/chef/knife/data_bag_secret_options.rb +142 -0
  130. data/lib/chef/knife/data_bag_show.rb +19 -33
  131. data/lib/chef/knife/node_from_file.rb +9 -8
  132. data/lib/chef/knife/ssh.rb +0 -7
  133. data/lib/chef/knife/ssl_check.rb +70 -6
  134. data/lib/chef/knife/status.rb +11 -58
  135. data/lib/chef/mixin/command/unix.rb +2 -2
  136. data/lib/chef/mixin/convert_to_class_name.rb +54 -0
  137. data/lib/chef/mixin/descendants_tracker.rb +82 -0
  138. data/lib/chef/mixin/homebrew_user.rb +68 -0
  139. data/lib/chef/mixin/shell_out.rb +0 -4
  140. data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
  141. data/lib/chef/mixin/windows_env_helper.rb +56 -0
  142. data/lib/chef/node.rb +2 -2
  143. data/lib/chef/node_map.rb +146 -0
  144. data/lib/chef/platform/provider_mapping.rb +11 -39
  145. data/lib/chef/platform/provider_priority_map.rb +80 -0
  146. data/lib/chef/platform/query_helpers.rb +5 -1
  147. data/lib/chef/platform/service_helpers.rb +113 -0
  148. data/lib/chef/provider.rb +24 -0
  149. data/lib/chef/provider/breakpoint.rb +2 -0
  150. data/lib/chef/provider/cookbook_file.rb +2 -0
  151. data/lib/chef/provider/cron.rb +1 -1
  152. data/lib/chef/provider/cron/unix.rb +13 -9
  153. data/lib/chef/provider/deploy.rb +3 -2
  154. data/lib/chef/provider/deploy/revision.rb +4 -2
  155. data/lib/chef/provider/deploy/timestamped.rb +2 -0
  156. data/lib/chef/provider/directory.rb +2 -0
  157. data/lib/chef/provider/dsc_script.rb +179 -0
  158. data/lib/chef/provider/env.rb +25 -10
  159. data/lib/chef/provider/env/windows.rb +9 -16
  160. data/lib/chef/provider/erl_call.rb +2 -0
  161. data/lib/chef/provider/execute.rb +5 -2
  162. data/lib/chef/provider/file.rb +2 -0
  163. data/lib/chef/provider/git.rb +51 -23
  164. data/lib/chef/provider/group/dscl.rb +2 -2
  165. data/lib/chef/provider/group/pw.rb +9 -13
  166. data/lib/chef/provider/http_request.rb +2 -0
  167. data/lib/chef/provider/link.rb +3 -0
  168. data/lib/chef/provider/log.rb +2 -0
  169. data/lib/chef/provider/lwrp_base.rb +11 -9
  170. data/lib/chef/provider/mount/mount.rb +1 -1
  171. data/lib/chef/provider/package/aix.rb +2 -0
  172. data/lib/chef/provider/package/apt.rb +2 -0
  173. data/lib/chef/provider/package/dpkg.rb +2 -0
  174. data/lib/chef/provider/package/easy_install.rb +2 -0
  175. data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
  176. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  177. data/lib/chef/provider/package/freebsd/port.rb +1 -9
  178. data/lib/chef/provider/package/homebrew.rb +127 -0
  179. data/lib/chef/provider/package/ips.rb +2 -0
  180. data/lib/chef/provider/package/macports.rb +3 -0
  181. data/lib/chef/provider/package/pacman.rb +5 -4
  182. data/lib/chef/provider/package/paludis.rb +4 -2
  183. data/lib/chef/provider/package/portage.rb +4 -1
  184. data/lib/chef/provider/package/rpm.rb +2 -0
  185. data/lib/chef/provider/package/rubygems.rb +4 -0
  186. data/lib/chef/provider/package/smartos.rb +2 -0
  187. data/lib/chef/provider/package/solaris.rb +2 -0
  188. data/lib/chef/provider/package/windows.rb +5 -2
  189. data/lib/chef/provider/package/yum.rb +2 -0
  190. data/lib/chef/provider/powershell_script.rb +3 -1
  191. data/lib/chef/provider/remote_directory.rb +25 -10
  192. data/lib/chef/provider/route.rb +2 -0
  193. data/lib/chef/provider/ruby_block.rb +2 -0
  194. data/lib/chef/provider/script.rb +6 -0
  195. data/lib/chef/provider/service/aix.rb +128 -0
  196. data/lib/chef/provider/service/aixinit.rb +117 -0
  197. data/lib/chef/provider/service/arch.rb +6 -0
  198. data/lib/chef/provider/service/debian.rb +35 -29
  199. data/lib/chef/provider/service/freebsd.rb +7 -1
  200. data/lib/chef/provider/service/gentoo.rb +5 -1
  201. data/lib/chef/provider/service/init.rb +2 -0
  202. data/lib/chef/provider/service/insserv.rb +15 -8
  203. data/lib/chef/provider/service/invokercd.rb +6 -0
  204. data/lib/chef/provider/service/macosx.rb +4 -1
  205. data/lib/chef/provider/service/redhat.rb +9 -3
  206. data/lib/chef/provider/service/simple.rb +2 -0
  207. data/lib/chef/provider/service/solaris.rb +2 -0
  208. data/lib/chef/provider/service/systemd.rb +7 -0
  209. data/lib/chef/provider/service/upstart.rb +7 -0
  210. data/lib/chef/provider/service/windows.rb +5 -0
  211. data/lib/chef/provider/subversion.rb +2 -0
  212. data/lib/chef/provider/template.rb +1 -0
  213. data/lib/chef/provider/user/dscl.rb +3 -2
  214. data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
  215. data/lib/chef/provider_resolver.rb +103 -0
  216. data/lib/chef/providers.rb +6 -2
  217. data/lib/chef/recipe.rb +2 -0
  218. data/lib/chef/resource.rb +69 -78
  219. data/lib/chef/resource/apt_package.rb +3 -1
  220. data/lib/chef/resource/bash.rb +1 -0
  221. data/lib/chef/resource/bff_package.rb +0 -1
  222. data/lib/chef/resource/breakpoint.rb +1 -1
  223. data/lib/chef/resource/chef_gem.rb +1 -2
  224. data/lib/chef/resource/conditional.rb +26 -6
  225. data/lib/chef/resource/cookbook_file.rb +2 -3
  226. data/lib/chef/resource/csh.rb +1 -0
  227. data/lib/chef/resource/deploy.rb +0 -1
  228. data/lib/chef/resource/deploy_revision.rb +6 -1
  229. data/lib/chef/resource/directory.rb +1 -2
  230. data/lib/chef/resource/dpkg_package.rb +2 -1
  231. data/lib/chef/resource/dsc_script.rb +125 -0
  232. data/lib/chef/resource/easy_install_package.rb +2 -1
  233. data/lib/chef/resource/erl_call.rb +1 -0
  234. data/lib/chef/resource/execute.rb +26 -9
  235. data/lib/chef/resource/file.rb +1 -3
  236. data/lib/chef/resource/freebsd_package.rb +10 -23
  237. data/lib/chef/resource/gem_package.rb +2 -1
  238. data/lib/chef/resource/git.rb +2 -1
  239. data/lib/chef/resource/homebrew_package.rb +46 -0
  240. data/lib/chef/resource/http_request.rb +1 -0
  241. data/lib/chef/resource/ips_package.rb +3 -1
  242. data/lib/chef/resource/link.rb +1 -2
  243. data/lib/chef/resource/log.rb +4 -0
  244. data/lib/chef/resource/lwrp_base.rb +24 -15
  245. data/lib/chef/resource/macports_package.rb +3 -1
  246. data/lib/chef/resource/pacman_package.rb +2 -1
  247. data/lib/chef/resource/paludis_package.rb +3 -1
  248. data/lib/chef/resource/perl.rb +1 -0
  249. data/lib/chef/resource/powershell_script.rb +0 -2
  250. data/lib/chef/resource/python.rb +1 -1
  251. data/lib/chef/resource/remote_directory.rb +1 -2
  252. data/lib/chef/resource/remote_file.rb +1 -1
  253. data/lib/chef/resource/rpm_package.rb +2 -1
  254. data/lib/chef/resource/ruby.rb +1 -0
  255. data/lib/chef/resource/ruby_block.rb +3 -0
  256. data/lib/chef/resource/script.rb +2 -25
  257. data/lib/chef/resource/service.rb +0 -4
  258. data/lib/chef/resource/smartos_package.rb +3 -4
  259. data/lib/chef/resource/solaris_package.rb +7 -1
  260. data/lib/chef/resource/subversion.rb +0 -1
  261. data/lib/chef/resource/template.rb +2 -3
  262. data/lib/chef/resource/timestamped_deploy.rb +1 -2
  263. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  264. data/lib/chef/resource/windows_package.rb +3 -4
  265. data/lib/chef/resource/windows_script.rb +3 -0
  266. data/lib/chef/resource/windows_service.rb +2 -2
  267. data/lib/chef/resource/yum_package.rb +3 -1
  268. data/lib/chef/resource_collection.rb +50 -227
  269. data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
  270. data/lib/chef/resource_collection/resource_list.rb +89 -0
  271. data/lib/chef/resource_collection/resource_set.rb +170 -0
  272. data/lib/chef/resources.rb +2 -0
  273. data/lib/chef/role.rb +1 -1
  274. data/lib/chef/run_context.rb +5 -1
  275. data/lib/chef/shell/ext.rb +1 -1
  276. data/lib/chef/util/backup.rb +3 -2
  277. data/lib/chef/util/dsc/configuration_generator.rb +115 -0
  278. data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
  279. data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
  280. data/lib/chef/util/dsc/resource_info.rb +26 -0
  281. data/lib/chef/util/path_helper.rb +12 -0
  282. data/lib/chef/util/powershell/cmdlet.rb +136 -0
  283. data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
  284. data/lib/chef/version.rb +1 -1
  285. data/lib/chef/win32/api/system.rb +9 -0
  286. data/lib/chef/win32/version.rb +2 -0
  287. data/spec/.DS_Store +0 -0
  288. data/spec/data/.DS_Store +0 -0
  289. data/spec/data/bootstrap/test-hints.erb +1 -1
  290. data/spec/data/bootstrap/test.erb +1 -1
  291. data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
  292. data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
  293. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
  294. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
  295. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
  296. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
  297. data/spec/data/lwrp/.DS_Store +0 -0
  298. data/spec/data/lwrp/providers/.DS_Store +0 -0
  299. data/spec/data/lwrp/providers/buck_passer.rb +9 -2
  300. data/spec/data/lwrp/resources/.DS_Store +0 -0
  301. data/spec/data/lwrp/resources/foo.rb +3 -2
  302. data/spec/data/lwrp_override/.DS_Store +0 -0
  303. data/spec/data/lwrp_override/providers/.DS_Store +0 -0
  304. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
  305. data/spec/data/lwrp_override/resources/.DS_Store +0 -0
  306. data/spec/data/lwrp_override/resources/foo.rb +4 -3
  307. data/spec/functional/assets/chefinittest +34 -0
  308. data/spec/functional/assets/testchefsubsys +11 -0
  309. data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
  310. data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
  311. data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
  312. data/spec/functional/knife/exec_spec.rb +1 -1
  313. data/spec/functional/resource/aix_service_spec.rb +136 -0
  314. data/spec/functional/resource/aixinit_service_spec.rb +211 -0
  315. data/spec/functional/resource/base.rb +1 -0
  316. data/spec/functional/resource/batch_spec.rb +4 -11
  317. data/spec/functional/resource/cron_spec.rb +7 -1
  318. data/spec/functional/resource/dsc_script_spec.rb +382 -0
  319. data/spec/functional/resource/env_spec.rb +54 -0
  320. data/spec/functional/resource/execute_spec.rb +113 -0
  321. data/spec/functional/resource/file_spec.rb +2 -0
  322. data/spec/functional/resource/group_spec.rb +7 -4
  323. data/spec/functional/resource/powershell_spec.rb +198 -185
  324. data/spec/functional/resource/rpm_spec.rb +5 -4
  325. data/spec/functional/resource/user/dscl_spec.rb +2 -1
  326. data/spec/functional/util/path_helper_spec.rb +37 -0
  327. data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
  328. data/spec/integration/client/client_spec.rb +1 -1
  329. data/spec/integration/client/ipv6_spec.rb +1 -1
  330. data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
  331. data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
  332. data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
  333. data/spec/integration/knife/chefignore_spec.rb +1 -1
  334. data/spec/integration/knife/common_options_spec.rb +1 -1
  335. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  336. data/spec/integration/knife/delete_spec.rb +1 -1
  337. data/spec/integration/knife/deps_spec.rb +1 -1
  338. data/spec/integration/knife/diff_spec.rb +1 -1
  339. data/spec/integration/knife/download_spec.rb +1 -1
  340. data/spec/integration/knife/list_spec.rb +1 -1
  341. data/spec/integration/knife/raw_spec.rb +1 -1
  342. data/spec/integration/knife/redirection_spec.rb +1 -1
  343. data/spec/integration/knife/serve_spec.rb +1 -1
  344. data/spec/integration/knife/show_spec.rb +1 -1
  345. data/spec/integration/knife/upload_spec.rb +4 -3
  346. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  347. data/spec/spec_helper.rb +15 -0
  348. data/spec/support/chef_helpers.rb +1 -0
  349. data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
  350. data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
  351. data/spec/support/platform_helpers.rb +28 -0
  352. data/spec/support/shared/functional/file_resource.rb +6 -0
  353. data/spec/support/shared/functional/windows_script.rb +118 -0
  354. data/spec/support/shared/integration/integration_helper.rb +5 -2
  355. data/spec/support/shared/matchers/exit_with_code.rb +28 -0
  356. data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
  357. data/spec/support/shared/shared_examples.rb +14 -0
  358. data/spec/support/shared/unit/execute_resource.rb +0 -7
  359. data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
  360. data/spec/support/shared/unit/script_resource.rb +1 -1
  361. data/spec/support/shared/unit/windows_script_resource.rb +35 -2
  362. data/spec/tiny_server.rb +1 -2
  363. data/spec/unit/api_client_spec.rb +5 -1
  364. data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
  365. data/spec/unit/application/client_spec.rb +106 -13
  366. data/spec/unit/application/solo_spec.rb +25 -1
  367. data/spec/unit/client_spec.rb +1 -26
  368. data/spec/unit/config_fetcher_spec.rb +2 -1
  369. data/spec/unit/config_spec.rb +91 -2
  370. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
  371. data/spec/unit/cookbook/metadata_spec.rb +43 -6
  372. data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
  373. data/spec/unit/cookbook_loader_spec.rb +4 -2
  374. data/spec/unit/cookbook_version_spec.rb +83 -2
  375. data/spec/unit/data_bag_item_spec.rb +5 -1
  376. data/spec/unit/data_bag_spec.rb +6 -1
  377. data/spec/unit/dsl/data_query_spec.rb +8 -110
  378. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
  379. data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
  380. data/spec/unit/environment_spec.rb +6 -2
  381. data/spec/unit/exceptions_spec.rb +6 -0
  382. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
  383. data/spec/unit/json_compat_spec.rb +12 -2
  384. data/spec/unit/knife/bootstrap_spec.rb +16 -63
  385. data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
  386. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
  387. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  388. data/spec/unit/knife/core/ui_spec.rb +28 -0
  389. data/spec/unit/knife/data_bag_create_spec.rb +63 -71
  390. data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
  391. data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
  392. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
  393. data/spec/unit/knife/data_bag_show_spec.rb +74 -72
  394. data/spec/unit/knife/environment_from_file_spec.rb +3 -2
  395. data/spec/unit/knife/ssl_check_spec.rb +46 -1
  396. data/spec/unit/knife/status_spec.rb +1 -2
  397. data/spec/unit/knife_spec.rb +18 -1
  398. data/spec/unit/lwrp_spec.rb +29 -8
  399. data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
  400. data/spec/unit/node_map_spec.rb +155 -0
  401. data/spec/unit/node_spec.rb +11 -0
  402. data/spec/unit/platform/query_helpers_spec.rb +23 -0
  403. data/spec/unit/platform_spec.rb +23 -0
  404. data/spec/unit/provider/breakpoint_spec.rb +9 -9
  405. data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
  406. data/spec/unit/provider/cookbook_file_spec.rb +1 -1
  407. data/spec/unit/provider/cron/unix_spec.rb +78 -60
  408. data/spec/unit/provider/cron_spec.rb +175 -175
  409. data/spec/unit/provider/deploy/revision_spec.rb +22 -21
  410. data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
  411. data/spec/unit/provider/deploy_spec.rb +231 -230
  412. data/spec/unit/provider/directory_spec.rb +55 -55
  413. data/spec/unit/provider/dsc_script_spec.rb +174 -0
  414. data/spec/unit/provider/env/windows_spec.rb +70 -34
  415. data/spec/unit/provider/env_spec.rb +95 -49
  416. data/spec/unit/provider/erl_call_spec.rb +9 -9
  417. data/spec/unit/provider/execute_spec.rb +43 -27
  418. data/spec/unit/provider/file/content_spec.rb +9 -9
  419. data/spec/unit/provider/file_spec.rb +1 -1
  420. data/spec/unit/provider/git_spec.rb +221 -159
  421. data/spec/unit/provider/group/dscl_spec.rb +64 -63
  422. data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
  423. data/spec/unit/provider/group/groupadd_spec.rb +33 -33
  424. data/spec/unit/provider/group/groupmod_spec.rb +23 -23
  425. data/spec/unit/provider/group/pw_spec.rb +21 -21
  426. data/spec/unit/provider/group/usermod_spec.rb +20 -20
  427. data/spec/unit/provider/group/windows_spec.rb +15 -15
  428. data/spec/unit/provider/group_spec.rb +76 -76
  429. data/spec/unit/provider/http_request_spec.rb +30 -30
  430. data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
  431. data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
  432. data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
  433. data/spec/unit/provider/ifconfig_spec.rb +43 -43
  434. data/spec/unit/provider/link_spec.rb +60 -60
  435. data/spec/unit/provider/log_spec.rb +0 -4
  436. data/spec/unit/provider/mdadm_spec.rb +23 -23
  437. data/spec/unit/provider/mount/aix_spec.rb +17 -17
  438. data/spec/unit/provider/mount/mount_spec.rb +115 -119
  439. data/spec/unit/provider/mount/solaris_spec.rb +72 -72
  440. data/spec/unit/provider/mount/windows_spec.rb +24 -24
  441. data/spec/unit/provider/ohai_spec.rb +11 -11
  442. data/spec/unit/provider/package/aix_spec.rb +34 -34
  443. data/spec/unit/provider/package/apt_spec.rb +36 -36
  444. data/spec/unit/provider/package/dpkg_spec.rb +27 -27
  445. data/spec/unit/provider/package/easy_install_spec.rb +16 -16
  446. data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
  447. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
  448. data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
  449. data/spec/unit/provider/package/homebrew_spec.rb +266 -0
  450. data/spec/unit/provider/package/ips_spec.rb +34 -34
  451. data/spec/unit/provider/package/macports_spec.rb +49 -49
  452. data/spec/unit/provider/package/pacman_spec.rb +35 -39
  453. data/spec/unit/provider/package/paludis_spec.rb +20 -20
  454. data/spec/unit/provider/package/portage_spec.rb +38 -38
  455. data/spec/unit/provider/package/rpm_spec.rb +29 -29
  456. data/spec/unit/provider/package/rubygems_spec.rb +284 -270
  457. data/spec/unit/provider/package/smartos_spec.rb +15 -15
  458. data/spec/unit/provider/package/solaris_spec.rb +35 -35
  459. data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
  460. data/spec/unit/provider/package/windows_spec.rb +6 -6
  461. data/spec/unit/provider/package/yum_spec.rb +416 -416
  462. data/spec/unit/provider/package/zypper_spec.rb +47 -47
  463. data/spec/unit/provider/package_spec.rb +107 -107
  464. data/spec/unit/provider/powershell_spec.rb +1 -1
  465. data/spec/unit/provider/registry_key_spec.rb +61 -61
  466. data/spec/unit/provider/remote_directory_spec.rb +36 -36
  467. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
  468. data/spec/unit/provider/remote_file/content_spec.rb +45 -45
  469. data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
  470. data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
  471. data/spec/unit/provider/remote_file/http_spec.rb +44 -44
  472. data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
  473. data/spec/unit/provider/remote_file_spec.rb +3 -3
  474. data/spec/unit/provider/route_spec.rb +63 -63
  475. data/spec/unit/provider/ruby_block_spec.rb +4 -4
  476. data/spec/unit/provider/script_spec.rb +12 -12
  477. data/spec/unit/provider/service/aix_service_spec.rb +181 -0
  478. data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
  479. data/spec/unit/provider/service/arch_service_spec.rb +48 -48
  480. data/spec/unit/provider/service/debian_service_spec.rb +40 -40
  481. data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
  482. data/spec/unit/provider/service/init_service_spec.rb +39 -39
  483. data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
  484. data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
  485. data/spec/unit/provider/service/macosx_spec.rb +49 -49
  486. data/spec/unit/provider/service/redhat_spec.rb +27 -27
  487. data/spec/unit/provider/service/simple_service_spec.rb +28 -28
  488. data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
  489. data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
  490. data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
  491. data/spec/unit/provider/service/windows_spec.rb +92 -92
  492. data/spec/unit/provider/service_spec.rb +40 -40
  493. data/spec/unit/provider/subversion_spec.rb +80 -80
  494. data/spec/unit/provider/template/content_spec.rb +9 -9
  495. data/spec/unit/provider/template_spec.rb +6 -6
  496. data/spec/unit/provider/user/dscl_spec.rb +170 -167
  497. data/spec/unit/provider/user/pw_spec.rb +48 -48
  498. data/spec/unit/provider/user/solaris_spec.rb +8 -8
  499. data/spec/unit/provider/user/useradd_spec.rb +1 -1
  500. data/spec/unit/provider/user/windows_spec.rb +26 -26
  501. data/spec/unit/provider/user_spec.rb +72 -72
  502. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
  503. data/spec/unit/provider_resolver_spec.rb +387 -0
  504. data/spec/unit/recipe_spec.rb +33 -12
  505. data/spec/unit/resource/apt_package_spec.rb +10 -13
  506. data/spec/unit/resource/bash_spec.rb +4 -4
  507. data/spec/unit/resource/batch_spec.rb +1 -1
  508. data/spec/unit/resource/breakpoint_spec.rb +11 -7
  509. data/spec/unit/resource/chef_gem_spec.rb +8 -15
  510. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  511. data/spec/unit/resource/conditional_spec.rb +35 -16
  512. data/spec/unit/resource/cookbook_file_spec.rb +13 -13
  513. data/spec/unit/resource/cron_spec.rb +37 -37
  514. data/spec/unit/resource/csh_spec.rb +4 -4
  515. data/spec/unit/resource/deploy_revision_spec.rb +13 -18
  516. data/spec/unit/resource/deploy_spec.rb +60 -55
  517. data/spec/unit/resource/directory_spec.rb +18 -18
  518. data/spec/unit/resource/dpkg_package_spec.rb +8 -14
  519. data/spec/unit/resource/dsc_script_spec.rb +98 -0
  520. data/spec/unit/resource/easy_install_package_spec.rb +9 -18
  521. data/spec/unit/resource/env_spec.rb +12 -12
  522. data/spec/unit/resource/erl_call_spec.rb +11 -11
  523. data/spec/unit/resource/execute_spec.rb +5 -0
  524. data/spec/unit/resource/file_spec.rb +29 -29
  525. data/spec/unit/resource/freebsd_package_spec.rb +11 -12
  526. data/spec/unit/resource/gem_package_spec.rb +8 -15
  527. data/spec/unit/resource/git_spec.rb +12 -8
  528. data/spec/unit/resource/group_spec.rb +27 -27
  529. data/spec/unit/resource/homebrew_package_spec.rb +50 -0
  530. data/spec/unit/resource/http_request_spec.rb +6 -6
  531. data/spec/unit/resource/ifconfig_spec.rb +8 -8
  532. data/spec/unit/resource/ips_package_spec.rb +10 -13
  533. data/spec/unit/resource/link_spec.rb +25 -25
  534. data/spec/unit/resource/log_spec.rb +9 -9
  535. data/spec/unit/resource/macports_package_spec.rb +8 -13
  536. data/spec/unit/resource/mdadm_spec.rb +18 -18
  537. data/spec/unit/resource/mount_spec.rb +45 -45
  538. data/spec/unit/resource/ohai_spec.rb +7 -7
  539. data/spec/unit/resource/package_spec.rb +12 -12
  540. data/spec/unit/resource/pacman_package_spec.rb +8 -14
  541. data/spec/unit/resource/perl_spec.rb +4 -4
  542. data/spec/unit/resource/portage_package_spec.rb +3 -3
  543. data/spec/unit/resource/powershell_spec.rb +7 -7
  544. data/spec/unit/resource/python_spec.rb +4 -4
  545. data/spec/unit/resource/registry_key_spec.rb +32 -32
  546. data/spec/unit/resource/remote_directory_spec.rb +17 -17
  547. data/spec/unit/resource/remote_file_spec.rb +41 -41
  548. data/spec/unit/resource/route_spec.rb +19 -19
  549. data/spec/unit/resource/rpm_package_spec.rb +9 -13
  550. data/spec/unit/resource/ruby_block_spec.rb +8 -8
  551. data/spec/unit/resource/ruby_spec.rb +4 -4
  552. data/spec/unit/resource/scm_spec.rb +40 -40
  553. data/spec/unit/resource/script_spec.rb +2 -2
  554. data/spec/unit/resource/service_spec.rb +37 -47
  555. data/spec/unit/resource/smartos_package_spec.rb +10 -15
  556. data/spec/unit/resource/solaris_package_spec.rb +13 -28
  557. data/spec/unit/resource/subversion_spec.rb +16 -12
  558. data/spec/unit/resource/template_spec.rb +35 -35
  559. data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
  560. data/spec/unit/resource/user_spec.rb +23 -23
  561. data/spec/unit/resource/windows_package_spec.rb +17 -10
  562. data/spec/unit/resource/windows_service_spec.rb +9 -6
  563. data/spec/unit/resource/yum_package_spec.rb +16 -21
  564. data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
  565. data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
  566. data/spec/unit/resource_collection_spec.rb +73 -92
  567. data/spec/unit/resource_definition_spec.rb +38 -40
  568. data/spec/unit/resource_reporter_spec.rb +3 -3
  569. data/spec/unit/resource_spec.rb +68 -33
  570. data/spec/unit/rest_spec.rb +83 -76
  571. data/spec/unit/role_spec.rb +5 -0
  572. data/spec/unit/run_list_spec.rb +5 -1
  573. data/spec/unit/runner_spec.rb +245 -238
  574. data/spec/unit/shell/shell_ext_spec.rb +1 -1
  575. data/spec/unit/user_spec.rb +5 -1
  576. data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
  577. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
  578. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
  579. data/spec/unit/util/path_helper_spec.rb +23 -1
  580. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
  581. data/spec/unit/workstation_config_loader_spec.rb +1 -1
  582. metadata +303 -196
  583. checksums.yaml +0 -7
  584. data/distro/README +0 -2
  585. data/distro/arch/etc/conf.d/chef-client.conf +0 -5
  586. data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
  587. data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
  588. data/distro/arch/etc/conf.d/chef-server.conf +0 -10
  589. data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
  590. data/distro/arch/etc/rc.d/chef-client +0 -90
  591. data/distro/arch/etc/rc.d/chef-expander +0 -78
  592. data/distro/arch/etc/rc.d/chef-server +0 -78
  593. data/distro/arch/etc/rc.d/chef-server-webui +0 -78
  594. data/distro/arch/etc/rc.d/chef-solr +0 -78
  595. data/distro/debian/etc/default/chef-client +0 -4
  596. data/distro/debian/etc/default/chef-expander +0 -8
  597. data/distro/debian/etc/default/chef-server +0 -9
  598. data/distro/debian/etc/default/chef-server-webui +0 -9
  599. data/distro/debian/etc/default/chef-solr +0 -8
  600. data/distro/debian/etc/init.d/chef-client +0 -212
  601. data/distro/debian/etc/init.d/chef-expander +0 -176
  602. data/distro/debian/etc/init.d/chef-server +0 -122
  603. data/distro/debian/etc/init.d/chef-server-webui +0 -123
  604. data/distro/debian/etc/init.d/chef-solr +0 -176
  605. data/distro/debian/etc/init/chef-client.conf +0 -17
  606. data/distro/debian/etc/init/chef-expander.conf +0 -17
  607. data/distro/debian/etc/init/chef-server-webui.conf +0 -17
  608. data/distro/debian/etc/init/chef-server.conf +0 -17
  609. data/distro/debian/etc/init/chef-solr.conf +0 -17
  610. data/distro/redhat/etc/init.d/chef-client +0 -121
  611. data/distro/redhat/etc/init.d/chef-expander +0 -104
  612. data/distro/redhat/etc/init.d/chef-server +0 -112
  613. data/distro/redhat/etc/init.d/chef-server-webui +0 -112
  614. data/distro/redhat/etc/init.d/chef-solr +0 -104
  615. data/distro/redhat/etc/logrotate.d/chef-client +0 -8
  616. data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
  617. data/distro/redhat/etc/logrotate.d/chef-server +0 -8
  618. data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
  619. data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
  620. data/distro/redhat/etc/sysconfig/chef-client +0 -15
  621. data/distro/redhat/etc/sysconfig/chef-expander +0 -7
  622. data/distro/redhat/etc/sysconfig/chef-server +0 -14
  623. data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
  624. data/distro/redhat/etc/sysconfig/chef-solr +0 -8
  625. data/distro/windows/service_manager.rb +0 -20
  626. data/lib/chef/resource_platform_map.rb +0 -151
  627. data/spec/support/shared/matchers.rb +0 -17
  628. data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -21,6 +21,7 @@ require 'spec_helper'
21
21
  describe Chef::Provider::Deploy::Revision do
22
22
 
23
23
  before do
24
+ allow(Chef::Platform).to receive(:windows?) { false }
24
25
  @temp_dir = Dir.mktmpdir
25
26
  Chef::Config[:file_cache_path] = @temp_dir
26
27
  @resource = Chef::Resource::Deploy.new("/my/deploy/dir")
@@ -31,7 +32,7 @@ describe Chef::Provider::Deploy::Revision do
31
32
  @provider = Chef::Provider::Deploy::Revision.new(@resource, @run_context)
32
33
  @provider.load_current_resource
33
34
  @runner = double("runnah")
34
- Chef::Runner.stub(:new).and_return(@runner)
35
+ allow(Chef::Runner).to receive(:new).and_return(@runner)
35
36
  @expected_release_dir = "/my/deploy/dir/releases/8a3195bf3efa246f743c5dfa83683201880f935c"
36
37
  end
37
38
 
@@ -42,41 +43,41 @@ describe Chef::Provider::Deploy::Revision do
42
43
 
43
44
 
44
45
  it "uses the resolved revision from the SCM as the release slug" do
45
- @provider.scm_provider.stub(:revision_slug).and_return("uglySlugly")
46
- @provider.send(:release_slug).should == "uglySlugly"
46
+ allow(@provider.scm_provider).to receive(:revision_slug).and_return("uglySlugly")
47
+ expect(@provider.send(:release_slug)).to eq("uglySlugly")
47
48
  end
48
49
 
49
50
  it "deploys to a dir named after the revision" do
50
- @provider.release_path.should == @expected_release_dir
51
+ expect(@provider.release_path).to eq(@expected_release_dir)
51
52
  end
52
53
 
53
54
  it "stores the release dir in the file cache in the cleanup step" do
54
- FileUtils.stub(:mkdir_p)
55
- FileUtils.stub(:cp_r)
55
+ allow(FileUtils).to receive(:mkdir_p)
56
+ allow(FileUtils).to receive(:cp_r)
56
57
  @provider.cleanup!
57
- @provider.stub(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
58
+ allow(@provider).to receive(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
58
59
  @provider.load_current_resource
59
60
  @provider.cleanup!
60
61
  second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
61
62
 
62
- @provider.all_releases.should == [@expected_release_dir,second_release]
63
+ expect(@provider.all_releases).to eq([@expected_release_dir,second_release])
63
64
  end
64
65
 
65
66
  it "removes a release from the file cache when it's used again in another release and append it to the end" do
66
- FileUtils.stub(:mkdir_p)
67
- FileUtils.stub(:cp_r)
67
+ allow(FileUtils).to receive(:mkdir_p)
68
+ allow(FileUtils).to receive(:cp_r)
68
69
  @provider.cleanup!
69
- @provider.stub(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
70
+ allow(@provider).to receive(:release_slug).and_return("73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2")
70
71
  @provider.load_current_resource
71
72
  @provider.cleanup!
72
73
  second_release = "/my/deploy/dir/releases/73219b87e977d9c7ba1aa57e9ad1d88fa91a0ec2"
73
- @provider.all_releases.should == [@expected_release_dir,second_release]
74
+ expect(@provider.all_releases).to eq([@expected_release_dir,second_release])
74
75
  @provider.cleanup!
75
76
 
76
- @provider.stub(:release_slug).and_return("8a3195bf3efa246f743c5dfa83683201880f935c")
77
+ allow(@provider).to receive(:release_slug).and_return("8a3195bf3efa246f743c5dfa83683201880f935c")
77
78
  @provider.load_current_resource
78
79
  @provider.cleanup!
79
- @provider.all_releases.should == [second_release, @expected_release_dir]
80
+ expect(@provider.all_releases).to eq([second_release, @expected_release_dir])
80
81
  end
81
82
 
82
83
  it "removes a release from the file cache when it's deleted by :cleanup!" do
@@ -86,25 +87,25 @@ describe Chef::Provider::Deploy::Revision do
86
87
  release_paths.each do |release_path|
87
88
  @provider.send(:release_created, release_path)
88
89
  end
89
- @provider.all_releases.should == release_paths
90
+ expect(@provider.all_releases).to eq(release_paths)
90
91
 
91
- FileUtils.stub(:rm_rf)
92
+ allow(FileUtils).to receive(:rm_rf)
92
93
  @provider.cleanup!
93
94
 
94
95
  expected_release_paths = (%w{second third fourth fifth} << @resource.revision).map do |release_name|
95
96
  "/my/deploy/dir/releases/#{release_name}"
96
97
  end
97
98
 
98
- @provider.all_releases.should == expected_release_paths
99
+ expect(@provider.all_releases).to eq(expected_release_paths)
99
100
  end
100
101
 
101
102
  it "regenerates the file cache if it's not available" do
102
103
  oldest = "/my/deploy/dir/releases/oldest"
103
104
  latest = "/my/deploy/dir/releases/latest"
104
- Dir.should_receive(:glob).with("/my/deploy/dir/releases/*").and_return([latest, oldest])
105
- ::File.should_receive(:ctime).with(oldest).and_return(Time.now - 10)
106
- ::File.should_receive(:ctime).with(latest).and_return(Time.now - 1)
107
- @provider.all_releases.should == [oldest, latest]
105
+ expect(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return([latest, oldest])
106
+ expect(::File).to receive(:ctime).with(oldest).and_return(Time.now - 10)
107
+ expect(::File).to receive(:ctime).with(latest).and_return(Time.now - 1)
108
+ expect(@provider.all_releases).to eq([oldest, latest])
108
109
  end
109
110
 
110
111
  end
@@ -22,7 +22,7 @@ describe Chef::Provider::Deploy::Timestamped do
22
22
 
23
23
  before do
24
24
  @release_time = Time.utc( 2004, 8, 15, 16, 23, 42)
25
- Time.stub(:now).and_return(@release_time)
25
+ allow(Time).to receive(:now).and_return(@release_time)
26
26
  @expected_release_dir = "/my/deploy/dir/releases/20040815162342"
27
27
  @resource = Chef::Resource::Deploy.new("/my/deploy/dir")
28
28
  @node = Chef::Node.new
@@ -30,11 +30,11 @@ describe Chef::Provider::Deploy::Timestamped do
30
30
  @run_context = Chef::RunContext.new(@node, {}, @events)
31
31
  @timestamped_deploy = Chef::Provider::Deploy::Timestamped.new(@resource, @run_context)
32
32
  @runner = double("runnah")
33
- Chef::Runner.stub(:new).and_return(@runner)
33
+ allow(Chef::Runner).to receive(:new).and_return(@runner)
34
34
  end
35
35
 
36
36
  it "gives a timestamp for release_slug" do
37
- @timestamped_deploy.send(:release_slug).should == "20040815162342"
37
+ expect(@timestamped_deploy.send(:release_slug)).to eq("20040815162342")
38
38
  end
39
39
 
40
40
  end
@@ -21,204 +21,205 @@ require 'spec_helper'
21
21
  describe Chef::Provider::Deploy do
22
22
 
23
23
  before do
24
+ allow(Chef::Platform).to receive(:windows?) { false }
24
25
  @release_time = Time.utc( 2004, 8, 15, 16, 23, 42)
25
- Time.stub(:now).and_return(@release_time)
26
+ allow(Time).to receive(:now).and_return(@release_time)
26
27
  @expected_release_dir = "/my/deploy/dir/releases/20040815162342"
27
28
  @resource = Chef::Resource::Deploy.new("/my/deploy/dir")
28
29
  @node = Chef::Node.new
29
30
  @events = Chef::EventDispatch::Dispatcher.new
30
31
  @run_context = Chef::RunContext.new(@node, {}, @events)
31
32
  @provider = Chef::Provider::Deploy.new(@resource, @run_context)
32
- @provider.stub(:release_slug)
33
- @provider.stub(:release_path).and_return(@expected_release_dir)
33
+ allow(@provider).to receive(:release_slug)
34
+ allow(@provider).to receive(:release_path).and_return(@expected_release_dir)
34
35
  end
35
36
 
36
37
  it "loads scm resource" do
37
- @provider.scm_provider.should_receive(:load_current_resource)
38
+ expect(@provider.scm_provider).to receive(:load_current_resource)
38
39
  @provider.load_current_resource
39
40
  end
40
41
 
41
42
  it "supports :deploy and :rollback actions" do
42
- @provider.should respond_to(:action_deploy)
43
- @provider.should respond_to(:action_rollback)
43
+ expect(@provider).to respond_to(:action_deploy)
44
+ expect(@provider).to respond_to(:action_rollback)
44
45
  end
45
46
 
46
47
  context "when the deploy resource has a timeout attribute" do
47
48
  let(:ten_seconds) { 10 }
48
49
  before { @resource.timeout(ten_seconds) }
49
50
  it "relays the timeout to the scm resource" do
50
- @provider.scm_provider.new_resource.timeout.should == ten_seconds
51
+ expect(@provider.scm_provider.new_resource.timeout).to eq(ten_seconds)
51
52
  end
52
53
  end
53
54
 
54
55
  context "when the deploy resource has no timeout attribute" do
55
56
  it "should not set a timeout on the scm resource" do
56
- @provider.scm_provider.new_resource.timeout.should be_nil
57
+ expect(@provider.scm_provider.new_resource.timeout).to be_nil
57
58
  end
58
59
  end
59
60
 
60
61
  context "when the deploy_to dir does not exist yet" do
61
62
  before do
62
- FileUtils.should_receive(:mkdir_p).with(@resource.deploy_to).ordered
63
- FileUtils.should_receive(:mkdir_p).with(@resource.shared_path).ordered
64
- ::File.stub(:directory?).and_return(false)
65
- @provider.stub(:symlink)
66
- @provider.stub(:migrate)
67
- @provider.stub(:copy_cached_repo)
63
+ expect(FileUtils).to receive(:mkdir_p).with(@resource.deploy_to).ordered
64
+ expect(FileUtils).to receive(:mkdir_p).with(@resource.shared_path).ordered
65
+ allow(::File).to receive(:directory?).and_return(false)
66
+ allow(@provider).to receive(:symlink)
67
+ allow(@provider).to receive(:migrate)
68
+ allow(@provider).to receive(:copy_cached_repo)
68
69
  end
69
70
 
70
71
  it "creates deploy_to dir" do
71
- ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
72
- @provider.should_receive(:enforce_ownership).twice
73
- @provider.stub(:update_cached_repo)
72
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).exactly(4).times
73
+ expect(@provider).to receive(:enforce_ownership).twice
74
+ allow(@provider).to receive(:update_cached_repo)
74
75
  @provider.deploy
75
76
  end
76
77
 
77
78
  end
78
79
 
79
80
  it "does not create deploy_to dir if it exists" do
80
- ::File.stub(:directory?).and_return(true)
81
- ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
82
- FileUtils.should_not_receive(:mkdir_p).with(@resource.deploy_to)
83
- FileUtils.should_not_receive(:mkdir_p).with(@resource.shared_path)
84
- @provider.should_receive(:enforce_ownership).twice
85
- @provider.stub(:copy_cached_repo)
86
- @provider.stub(:update_cached_repo)
87
- @provider.stub(:symlink)
88
- @provider.stub(:migrate)
81
+ allow(::File).to receive(:directory?).and_return(true)
82
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).exactly(4).times
83
+ expect(FileUtils).not_to receive(:mkdir_p).with(@resource.deploy_to)
84
+ expect(FileUtils).not_to receive(:mkdir_p).with(@resource.shared_path)
85
+ expect(@provider).to receive(:enforce_ownership).twice
86
+ allow(@provider).to receive(:copy_cached_repo)
87
+ allow(@provider).to receive(:update_cached_repo)
88
+ allow(@provider).to receive(:symlink)
89
+ allow(@provider).to receive(:migrate)
89
90
  @provider.deploy
90
91
  end
91
92
 
92
93
  it "ensures the deploy_to dir ownership after the verfication that it exists" do
93
- ::Dir.should_receive(:chdir).with(@expected_release_dir).exactly(4).times
94
- @provider.should_receive(:verify_directories_exist).ordered
95
- @provider.should_receive(:enforce_ownership).ordered
96
- @provider.stub(:copy_cached_repo)
97
- @provider.stub(:update_cached_repo)
98
- @provider.stub(:install_gems)
99
- @provider.should_receive(:enforce_ownership).ordered
100
- @provider.stub(:enforce_ownership)
101
- @provider.stub(:symlink)
102
- @provider.stub(:migrate)
94
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).exactly(4).times
95
+ expect(@provider).to receive(:verify_directories_exist).ordered
96
+ expect(@provider).to receive(:enforce_ownership).ordered
97
+ allow(@provider).to receive(:copy_cached_repo)
98
+ allow(@provider).to receive(:update_cached_repo)
99
+ allow(@provider).to receive(:install_gems)
100
+ expect(@provider).to receive(:enforce_ownership).ordered
101
+ allow(@provider).to receive(:enforce_ownership)
102
+ allow(@provider).to receive(:symlink)
103
+ allow(@provider).to receive(:migrate)
103
104
  @provider.deploy
104
105
  end
105
106
 
106
107
  it "updates and copies the repo, then does a migrate, symlink, restart, restart, cleanup on deploy" do
107
- FileUtils.stub(:mkdir_p).with("/my/deploy/dir")
108
- FileUtils.stub(:mkdir_p).with("/my/deploy/dir/shared")
109
- @provider.should_receive(:enforce_ownership).twice
110
- @provider.should_receive(:update_cached_repo)
111
- @provider.should_receive(:copy_cached_repo)
112
- @provider.should_receive(:install_gems)
113
- @provider.should_receive(:callback).with(:before_migrate, nil)
114
- @provider.should_receive(:migrate)
115
- @provider.should_receive(:callback).with(:before_symlink, nil)
116
- @provider.should_receive(:symlink)
117
- @provider.should_receive(:callback).with(:before_restart, nil)
118
- @provider.should_receive(:restart)
119
- @provider.should_receive(:callback).with(:after_restart, nil)
120
- @provider.should_receive(:cleanup!)
108
+ allow(FileUtils).to receive(:mkdir_p).with("/my/deploy/dir")
109
+ allow(FileUtils).to receive(:mkdir_p).with("/my/deploy/dir/shared")
110
+ expect(@provider).to receive(:enforce_ownership).twice
111
+ expect(@provider).to receive(:update_cached_repo)
112
+ expect(@provider).to receive(:copy_cached_repo)
113
+ expect(@provider).to receive(:install_gems)
114
+ expect(@provider).to receive(:callback).with(:before_migrate, nil)
115
+ expect(@provider).to receive(:migrate)
116
+ expect(@provider).to receive(:callback).with(:before_symlink, nil)
117
+ expect(@provider).to receive(:symlink)
118
+ expect(@provider).to receive(:callback).with(:before_restart, nil)
119
+ expect(@provider).to receive(:restart)
120
+ expect(@provider).to receive(:callback).with(:after_restart, nil)
121
+ expect(@provider).to receive(:cleanup!)
121
122
  @provider.deploy
122
123
  end
123
124
 
124
125
  it "should not deploy if there is already a deploy at release_path, and it is the current release" do
125
- @provider.stub(:all_releases).and_return([@expected_release_dir])
126
- @provider.stub(:current_release?).with(@expected_release_dir).and_return(true)
127
- @provider.should_not_receive(:deploy)
126
+ allow(@provider).to receive(:all_releases).and_return([@expected_release_dir])
127
+ allow(@provider).to receive(:current_release?).with(@expected_release_dir).and_return(true)
128
+ expect(@provider).not_to receive(:deploy)
128
129
  @provider.run_action(:deploy)
129
130
  end
130
131
 
131
132
  it "should call action_rollback if there is already a deploy of this revision at release_path, and it is not the current release" do
132
- @provider.stub(:all_releases).and_return([@expected_release_dir, "102021"])
133
- @provider.stub(:current_release?).with(@expected_release_dir).and_return(false)
134
- @provider.should_receive(:rollback_to).with(@expected_release_dir)
135
- @provider.should_receive(:current_release?)
133
+ allow(@provider).to receive(:all_releases).and_return([@expected_release_dir, "102021"])
134
+ allow(@provider).to receive(:current_release?).with(@expected_release_dir).and_return(false)
135
+ expect(@provider).to receive(:rollback_to).with(@expected_release_dir)
136
+ expect(@provider).to receive(:current_release?)
136
137
  @provider.run_action(:deploy)
137
138
  end
138
139
 
139
140
  it "calls deploy when deploying a new release" do
140
- @provider.stub(:all_releases).and_return([])
141
- @provider.should_receive(:deploy)
141
+ allow(@provider).to receive(:all_releases).and_return([])
142
+ expect(@provider).to receive(:deploy)
142
143
  @provider.run_action(:deploy)
143
144
  end
144
145
 
145
146
  it "runs action svn_force_export when new_resource.svn_force_export is true" do
146
147
  @resource.svn_force_export true
147
- @provider.scm_provider.should_receive(:run_action).with(:force_export)
148
+ expect(@provider.scm_provider).to receive(:run_action).with(:force_export)
148
149
  @provider.update_cached_repo
149
150
  end
150
151
 
151
152
  it "Removes the old release before deploying when force deploying over it" do
152
- @provider.stub(:all_releases).and_return([@expected_release_dir])
153
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir)
154
- @provider.should_receive(:deploy)
153
+ allow(@provider).to receive(:all_releases).and_return([@expected_release_dir])
154
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir)
155
+ expect(@provider).to receive(:deploy)
155
156
  @provider.run_action(:force_deploy)
156
157
  end
157
158
 
158
159
  it "deploys as normal when force deploying and there's no prior release at the same path" do
159
- @provider.stub(:all_releases).and_return([])
160
- @provider.should_receive(:deploy)
160
+ allow(@provider).to receive(:all_releases).and_return([])
161
+ expect(@provider).to receive(:deploy)
161
162
  @provider.run_action(:force_deploy)
162
163
  end
163
164
 
164
165
  it "dont care by default if error happens on deploy" do
165
- @provider.stub(:all_releases).and_return(['previous_release'])
166
- @provider.stub(:deploy).and_return{ raise "Unexpected error" }
167
- @provider.stub(:previous_release_path).and_return('previous_release')
168
- @provider.should_not_receive(:rollback)
169
- lambda {
166
+ allow(@provider).to receive(:all_releases).and_return(['previous_release'])
167
+ allow(@provider).to receive(:deploy){ raise "Unexpected error" }
168
+ allow(@provider).to receive(:previous_release_path).and_return('previous_release')
169
+ expect(@provider).not_to receive(:rollback)
170
+ expect {
170
171
  @provider.run_action(:deploy)
171
- }.should raise_exception(RuntimeError, "Unexpected error")
172
+ }.to raise_exception(RuntimeError, "Unexpected error")
172
173
  end
173
174
 
174
175
  it "rollbacks to previous release if error happens on deploy" do
175
176
  @resource.rollback_on_error true
176
- @provider.stub(:all_releases).and_return(['previous_release'])
177
- @provider.stub(:deploy).and_return{ raise "Unexpected error" }
178
- @provider.stub(:previous_release_path).and_return('previous_release')
179
- @provider.should_receive(:rollback)
180
- lambda {
177
+ allow(@provider).to receive(:all_releases).and_return(['previous_release'])
178
+ allow(@provider).to receive(:deploy){ raise "Unexpected error" }
179
+ allow(@provider).to receive(:previous_release_path).and_return('previous_release')
180
+ expect(@provider).to receive(:rollback)
181
+ expect {
181
182
  @provider.run_action(:deploy)
182
- }.should raise_exception(RuntimeError, "Unexpected error")
183
+ }.to raise_exception(RuntimeError, "Unexpected error")
183
184
  end
184
185
 
185
186
  describe "on systems without broken Dir.glob results" do
186
187
  it "sets the release path to the penultimate release when one is not specified, symlinks, and rm's the last release on rollback" do
187
- @provider.stub(:release_path).and_return("/my/deploy/dir/releases/3")
188
+ allow(@provider).to receive(:release_path).and_return("/my/deploy/dir/releases/3")
188
189
  all_releases = ["/my/deploy/dir/releases/1", "/my/deploy/dir/releases/2", "/my/deploy/dir/releases/3", "/my/deploy/dir/releases/4", "/my/deploy/dir/releases/5"]
189
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
190
- @provider.should_receive(:symlink)
191
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/4")
192
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/5")
190
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
191
+ expect(@provider).to receive(:symlink)
192
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/releases/4")
193
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/releases/5")
193
194
  @provider.run_action(:rollback)
194
- @provider.release_path.should eql("/my/deploy/dir/releases/3")
195
- @provider.shared_path.should eql("/my/deploy/dir/shared")
195
+ expect(@provider.release_path).to eql("/my/deploy/dir/releases/3")
196
+ expect(@provider.shared_path).to eql("/my/deploy/dir/shared")
196
197
  end
197
198
 
198
199
  it "sets the release path to the specified release, symlinks, and rm's any newer releases on rollback" do
199
- @provider.unstub(:release_path)
200
+ allow(@provider).to receive(:release_path).and_call_original
200
201
  all_releases = ["/my/deploy/dir/releases/20040815162342", "/my/deploy/dir/releases/20040700000000",
201
202
  "/my/deploy/dir/releases/20040600000000", "/my/deploy/dir/releases/20040500000000"].sort!
202
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
203
- @provider.should_receive(:symlink)
204
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
203
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
204
+ expect(@provider).to receive(:symlink)
205
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
205
206
  @provider.run_action(:rollback)
206
- @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
207
- @provider.shared_path.should eql("/my/deploy/dir/shared")
207
+ expect(@provider.release_path).to eql("/my/deploy/dir/releases/20040700000000")
208
+ expect(@provider.shared_path).to eql("/my/deploy/dir/shared")
208
209
  end
209
210
 
210
211
  it "sets the release path to the penultimate release, symlinks, and rm's the last release on rollback" do
211
- @provider.unstub(:release_path)
212
+ allow(@provider).to receive(:release_path).and_call_original
212
213
  all_releases = [ "/my/deploy/dir/releases/20040815162342",
213
214
  "/my/deploy/dir/releases/20040700000000",
214
215
  "/my/deploy/dir/releases/20040600000000",
215
216
  "/my/deploy/dir/releases/20040500000000"]
216
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
217
- @provider.should_receive(:symlink)
218
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
217
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
218
+ expect(@provider).to receive(:symlink)
219
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
219
220
  @provider.run_action(:rollback)
220
- @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
221
- @provider.shared_path.should eql("/my/deploy/dir/shared")
221
+ expect(@provider.release_path).to eql("/my/deploy/dir/releases/20040700000000")
222
+ expect(@provider.shared_path).to eql("/my/deploy/dir/shared")
222
223
  end
223
224
 
224
225
  describe "if there are no releases to fallback to" do
@@ -226,143 +227,143 @@ describe Chef::Provider::Deploy do
226
227
  it "an exception is raised when there is only 1 release" do
227
228
  #@provider.unstub(:release_path) -- unstub the release path on top to feed our own release path
228
229
  all_releases = [ "/my/deploy/dir/releases/20040815162342"]
229
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
230
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
230
231
  #@provider.should_receive(:symlink)
231
232
  #FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
232
233
  #@provider.run_action(:rollback)
233
234
  #@provider.release_path.should eql(NIL) -- no check needed since assertions will fail
234
- lambda {
235
+ expect {
235
236
  @provider.run_action(:rollback)
236
- }.should raise_exception(RuntimeError, "There is no release to rollback to!")
237
+ }.to raise_exception(RuntimeError, "There is no release to rollback to!")
237
238
  end
238
239
 
239
240
  it "an exception is raised when there are no releases" do
240
241
  all_releases = []
241
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
242
- lambda {
242
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
243
+ expect {
243
244
  @provider.run_action(:rollback)
244
- }.should raise_exception(RuntimeError, "There is no release to rollback to!")
245
+ }.to raise_exception(RuntimeError, "There is no release to rollback to!")
245
246
  end
246
247
  end
247
248
  end
248
249
 
249
250
  describe "CHEF-628: on systems with broken Dir.glob results" do
250
251
  it "sets the release path to the penultimate release, symlinks, and rm's the last release on rollback" do
251
- @provider.unstub(:release_path)
252
+ allow(@provider).to receive(:release_path).and_call_original
252
253
  all_releases = [ "/my/deploy/dir/releases/20040500000000",
253
254
  "/my/deploy/dir/releases/20040600000000",
254
255
  "/my/deploy/dir/releases/20040700000000",
255
256
  "/my/deploy/dir/releases/20040815162342" ]
256
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
257
- @provider.should_receive(:symlink)
258
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
257
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
258
+ expect(@provider).to receive(:symlink)
259
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/releases/20040815162342")
259
260
  @provider.run_action(:rollback)
260
- @provider.release_path.should eql("/my/deploy/dir/releases/20040700000000")
261
- @provider.shared_path.should eql("/my/deploy/dir/shared")
261
+ expect(@provider.release_path).to eql("/my/deploy/dir/releases/20040700000000")
262
+ expect(@provider.shared_path).to eql("/my/deploy/dir/shared")
262
263
  end
263
264
  end
264
265
 
265
266
  it "raises a runtime error when there's no release to rollback to" do
266
267
  all_releases = []
267
- Dir.stub(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
268
- lambda {@provider.run_action(:rollback)}.should raise_error(RuntimeError)
268
+ allow(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
269
+ expect {@provider.run_action(:rollback)}.to raise_error(RuntimeError)
269
270
  end
270
271
 
271
272
  it "runs the new resource collection in the runner during a callback" do
272
273
  @runner = double("Runner")
273
- Chef::Runner.stub(:new).and_return(@runner)
274
- @runner.should_receive(:converge)
274
+ allow(Chef::Runner).to receive(:new).and_return(@runner)
275
+ expect(@runner).to receive(:converge)
275
276
  callback_code = Proc.new { :noop }
276
277
  @provider.callback(:whatevs, callback_code)
277
278
  end
278
279
 
279
280
  it "loads callback files from the release/ dir if the file exists" do
280
281
  foo_callback = @expected_release_dir + "/deploy/foo.rb"
281
- ::File.should_receive(:exist?).with(foo_callback).once.and_return(true)
282
- ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
283
- @provider.should_receive(:from_file).with(foo_callback)
282
+ expect(::File).to receive(:exist?).with(foo_callback).once.and_return(true)
283
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).and_yield
284
+ expect(@provider).to receive(:from_file).with(foo_callback)
284
285
  @provider.callback(:foo, "deploy/foo.rb")
285
286
  end
286
287
 
287
288
  it "raises a runtime error if a callback file is explicitly specified but does not exist" do
288
289
  baz_callback = "/deploy/baz.rb"
289
- ::File.should_receive(:exist?).with("#{@expected_release_dir}/#{baz_callback}").and_return(false)
290
+ expect(::File).to receive(:exist?).with("#{@expected_release_dir}/#{baz_callback}").and_return(false)
290
291
  @resource.before_migrate baz_callback
291
292
  @provider.define_resource_requirements
292
293
  @provider.action = :deploy
293
- lambda {@provider.process_resource_requirements}.should raise_error(RuntimeError)
294
+ expect {@provider.process_resource_requirements}.to raise_error(RuntimeError)
294
295
  end
295
296
 
296
297
  it "runs a default callback if the callback code is nil" do
297
298
  bar_callback = @expected_release_dir + "/deploy/bar.rb"
298
- ::File.should_receive(:exist?).with(bar_callback).and_return(true)
299
- ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
300
- @provider.should_receive(:from_file).with(bar_callback)
299
+ expect(::File).to receive(:exist?).with(bar_callback).and_return(true)
300
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).and_yield
301
+ expect(@provider).to receive(:from_file).with(bar_callback)
301
302
  @provider.callback(:bar, nil)
302
303
  end
303
304
 
304
305
  it "skips an eval callback if the file doesn't exist" do
305
306
  barbaz_callback = @expected_release_dir + "/deploy/barbaz.rb"
306
- ::File.should_receive(:exist?).with(barbaz_callback).and_return(false)
307
- ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
308
- @provider.should_not_receive(:from_file)
307
+ expect(::File).to receive(:exist?).with(barbaz_callback).and_return(false)
308
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).and_yield
309
+ expect(@provider).not_to receive(:from_file)
309
310
  @provider.callback(:barbaz, nil)
310
311
  end
311
312
 
312
313
  # CHEF-3449 #converge_by is called in #recipe_eval and must happen in sequence
313
314
  # with the other calls to #converge_by to keep the train on the tracks
314
315
  it "evaluates a callback file before the corresponding step" do
315
- @provider.should_receive(:verify_directories_exist)
316
- @provider.should_receive(:update_cached_repo)
317
- @provider.should_receive(:enforce_ownership)
318
- @provider.should_receive(:copy_cached_repo)
319
- @provider.should_receive(:install_gems)
320
- @provider.should_receive(:enforce_ownership)
321
- @provider.should_receive(:converge_by).ordered # before_migrate
322
- @provider.should_receive(:migrate).ordered
323
- @provider.should_receive(:converge_by).ordered # before_symlink
324
- @provider.should_receive(:symlink).ordered
325
- @provider.should_receive(:converge_by).ordered # before_restart
326
- @provider.should_receive(:restart).ordered
327
- @provider.should_receive(:converge_by).ordered # after_restart
328
- @provider.should_receive(:cleanup!)
316
+ expect(@provider).to receive(:verify_directories_exist)
317
+ expect(@provider).to receive(:update_cached_repo)
318
+ expect(@provider).to receive(:enforce_ownership)
319
+ expect(@provider).to receive(:copy_cached_repo)
320
+ expect(@provider).to receive(:install_gems)
321
+ expect(@provider).to receive(:enforce_ownership)
322
+ expect(@provider).to receive(:converge_by).ordered # before_migrate
323
+ expect(@provider).to receive(:migrate).ordered
324
+ expect(@provider).to receive(:converge_by).ordered # before_symlink
325
+ expect(@provider).to receive(:symlink).ordered
326
+ expect(@provider).to receive(:converge_by).ordered # before_restart
327
+ expect(@provider).to receive(:restart).ordered
328
+ expect(@provider).to receive(:converge_by).ordered # after_restart
329
+ expect(@provider).to receive(:cleanup!)
329
330
  @provider.deploy
330
331
  end
331
332
 
332
333
  it "gets a SCM provider as specified by its resource" do
333
- @provider.scm_provider.should be_an_instance_of(Chef::Provider::Git)
334
- @provider.scm_provider.new_resource.destination.should eql("/my/deploy/dir/shared/cached-copy")
334
+ expect(@provider.scm_provider).to be_an_instance_of(Chef::Provider::Git)
335
+ expect(@provider.scm_provider.new_resource.destination).to eql("/my/deploy/dir/shared/cached-copy")
335
336
  end
336
337
 
337
338
  it "syncs the cached copy of the repo" do
338
- @provider.scm_provider.should_receive(:run_action).with(:sync)
339
+ expect(@provider.scm_provider).to receive(:run_action).with(:sync)
339
340
  @provider.update_cached_repo
340
341
  end
341
342
 
342
343
  it "makes a copy of the cached repo in releases dir" do
343
- FileUtils.should_receive(:mkdir_p).with("/my/deploy/dir/releases")
344
- FileUtils.should_receive(:cp_r).with("/my/deploy/dir/shared/cached-copy/.", @expected_release_dir, :preserve => true)
344
+ expect(FileUtils).to receive(:mkdir_p).with("/my/deploy/dir/releases")
345
+ expect(FileUtils).to receive(:cp_r).with("/my/deploy/dir/shared/cached-copy/.", @expected_release_dir, :preserve => true)
345
346
  @provider.copy_cached_repo
346
347
  end
347
348
 
348
349
  it "calls the internal callback :release_created when cleaning up the releases" do
349
- FileUtils.stub(:mkdir_p)
350
- FileUtils.stub(:cp_r)
351
- @provider.should_receive(:release_created)
350
+ allow(FileUtils).to receive(:mkdir_p)
351
+ allow(FileUtils).to receive(:cp_r)
352
+ expect(@provider).to receive(:release_created)
352
353
  @provider.cleanup!
353
354
  end
354
355
 
355
356
  it "chowns the whole release dir to user and group specified in the resource" do
356
357
  @resource.user "foo"
357
358
  @resource.group "bar"
358
- FileUtils.should_receive(:chown_R).with("foo", "bar", "/my/deploy/dir")
359
+ expect(FileUtils).to receive(:chown_R).with("foo", "bar", "/my/deploy/dir")
359
360
  @provider.enforce_ownership
360
361
  end
361
362
 
362
363
  it "skips the migration when resource.migrate => false but runs symlinks before migration" do
363
364
  @resource.migrate false
364
- @provider.should_not_receive :run_command
365
- @provider.should_receive :run_symlinks_before_migrate
365
+ expect(@provider).not_to receive :run_command
366
+ expect(@provider).to receive :run_symlinks_before_migrate
366
367
  @provider.migrate
367
368
  end
368
369
 
@@ -372,12 +373,12 @@ describe Chef::Provider::Deploy do
372
373
  @resource.user "deployNinja"
373
374
  @resource.group "deployNinjas"
374
375
  @resource.environment "RAILS_ENV" => "production"
375
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
376
- @provider.should_receive(:enforce_ownership)
376
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
377
+ expect(@provider).to receive(:enforce_ownership)
377
378
 
378
- STDOUT.stub(:tty?).and_return(true)
379
- Chef::Log.stub(:info?).and_return(true)
380
- @provider.should_receive(:run_command).with(:command => "migration_foo", :cwd => @expected_release_dir,
379
+ allow(STDOUT).to receive(:tty?).and_return(true)
380
+ allow(Chef::Log).to receive(:info?).and_return(true)
381
+ expect(@provider).to receive(:run_command).with(:command => "migration_foo", :cwd => @expected_release_dir,
381
382
  :user => "deployNinja", :group => "deployNinjas",
382
383
  :log_level => :info, :live_stream => STDOUT,
383
384
  :log_tag => "deploy[/my/deploy/dir]",
@@ -386,31 +387,31 @@ describe Chef::Provider::Deploy do
386
387
  end
387
388
 
388
389
  it "purges the current release's /log /tmp/pids/ and /public/system directories" do
389
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/log")
390
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/tmp/pids")
391
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/public/system")
390
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir + "/log")
391
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir + "/tmp/pids")
392
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir + "/public/system")
392
393
  @provider.purge_tempfiles_from_current_release
393
394
  end
394
395
 
395
396
  it "symlinks temporary files and logs from the shared dir into the current release" do
396
- FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/system")
397
- FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/pids")
398
- FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/log")
399
- FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/tmp")
400
- FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/public")
401
- FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/config")
402
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/system", @expected_release_dir + "/public/system")
403
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/pids", @expected_release_dir + "/tmp/pids")
404
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/log", @expected_release_dir + "/log")
405
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
406
- @provider.should_receive(:enforce_ownership)
397
+ allow(FileUtils).to receive(:mkdir_p).with(@resource.shared_path + "/system")
398
+ allow(FileUtils).to receive(:mkdir_p).with(@resource.shared_path + "/pids")
399
+ allow(FileUtils).to receive(:mkdir_p).with(@resource.shared_path + "/log")
400
+ expect(FileUtils).to receive(:mkdir_p).with(@expected_release_dir + "/tmp")
401
+ expect(FileUtils).to receive(:mkdir_p).with(@expected_release_dir + "/public")
402
+ expect(FileUtils).to receive(:mkdir_p).with(@expected_release_dir + "/config")
403
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/system", @expected_release_dir + "/public/system")
404
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/pids", @expected_release_dir + "/tmp/pids")
405
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/log", @expected_release_dir + "/log")
406
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/config/database.yml", @expected_release_dir + "/config/database.yml")
407
+ expect(@provider).to receive(:enforce_ownership)
407
408
  @provider.link_tempfiles_to_current_release
408
409
  end
409
410
 
410
411
  it "symlinks the current release dir into production" do
411
- FileUtils.should_receive(:rm_f).with("/my/deploy/dir/current")
412
- FileUtils.should_receive(:ln_sf).with(@expected_release_dir, "/my/deploy/dir/current")
413
- @provider.should_receive(:enforce_ownership)
412
+ expect(FileUtils).to receive(:rm_f).with("/my/deploy/dir/current")
413
+ expect(FileUtils).to receive(:ln_sf).with(@expected_release_dir, "/my/deploy/dir/current")
414
+ expect(@provider).to receive(:enforce_ownership)
414
415
  @provider.link_current_release_to_production
415
416
  end
416
417
 
@@ -424,41 +425,41 @@ describe Chef::Provider::Deploy do
424
425
  end
425
426
 
426
427
  it "purges the purge_before_symlink directories" do
427
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/foo")
428
- FileUtils.should_receive(:rm_rf).with(@expected_release_dir + "/bar")
428
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir + "/foo")
429
+ expect(FileUtils).to receive(:rm_rf).with(@expected_release_dir + "/bar")
429
430
  @provider.purge_tempfiles_from_current_release
430
431
  end
431
432
 
432
433
  it "symlinks files from the shared directory to the current release directory" do
433
- FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/baz")
434
- FileUtils.should_receive(:mkdir_p).with(@expected_release_dir + "/qux")
435
- FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/foo/bar")
436
- FileUtils.stub(:mkdir_p).with(@resource.shared_path + "/baz")
437
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/foo/bar", @expected_release_dir + "/foo/bar")
438
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/baz", @expected_release_dir + "/qux/baz")
439
- FileUtils.should_receive(:ln_sf).with("/my/deploy/dir/shared/radiohead/in_rainbows.yml", @expected_release_dir + "/awesome")
440
- @provider.should_receive(:enforce_ownership)
434
+ expect(FileUtils).to receive(:mkdir_p).with(@expected_release_dir + "/baz")
435
+ expect(FileUtils).to receive(:mkdir_p).with(@expected_release_dir + "/qux")
436
+ allow(FileUtils).to receive(:mkdir_p).with(@resource.shared_path + "/foo/bar")
437
+ allow(FileUtils).to receive(:mkdir_p).with(@resource.shared_path + "/baz")
438
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/foo/bar", @expected_release_dir + "/foo/bar")
439
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/baz", @expected_release_dir + "/qux/baz")
440
+ expect(FileUtils).to receive(:ln_sf).with("/my/deploy/dir/shared/radiohead/in_rainbows.yml", @expected_release_dir + "/awesome")
441
+ expect(@provider).to receive(:enforce_ownership)
441
442
  @provider.link_tempfiles_to_current_release
442
443
  end
443
444
 
444
445
  end
445
446
 
446
447
  it "does nothing for restart if restart_command is empty" do
447
- @provider.should_not_receive(:run_command)
448
+ expect(@provider).not_to receive(:run_command)
448
449
  @provider.restart
449
450
  end
450
451
 
451
452
  it "runs the restart command in the current application dir when the resource has a restart_command" do
452
453
  @resource.restart_command "restartcmd"
453
- @provider.should_receive(:run_command).with(:command => "restartcmd", :cwd => "/my/deploy/dir/current", :log_tag => "deploy[/my/deploy/dir]", :log_level => :debug)
454
+ expect(@provider).to receive(:run_command).with(:command => "restartcmd", :cwd => "/my/deploy/dir/current", :log_tag => "deploy[/my/deploy/dir]", :log_level => :debug)
454
455
  @provider.restart
455
456
  end
456
457
 
457
458
  it "lists all available releases" do
458
459
  all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
459
460
  "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000"].sort!
460
- Dir.should_receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
461
- @provider.all_releases.should eql(all_releases)
461
+ expect(Dir).to receive(:glob).with("/my/deploy/dir/releases/*").and_return(all_releases)
462
+ expect(@provider.all_releases).to eql(all_releases)
462
463
  end
463
464
 
464
465
  it "removes all but the 5 newest releases" do
@@ -466,10 +467,10 @@ describe Chef::Provider::Deploy do
466
467
  "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
467
468
  "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000",
468
469
  "/my/deploy/dir/20040200000000", "/my/deploy/dir/20040100000000"].sort!
469
- @provider.stub(:all_releases).and_return(all_releases)
470
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040100000000")
471
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040200000000")
472
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040300000000")
470
+ allow(@provider).to receive(:all_releases).and_return(all_releases)
471
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/20040100000000")
472
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/20040200000000")
473
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/20040300000000")
473
474
  @provider.cleanup!
474
475
  end
475
476
 
@@ -479,8 +480,8 @@ describe Chef::Provider::Deploy do
479
480
  "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
480
481
  "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000",
481
482
  "/my/deploy/dir/20040200000000", "/my/deploy/dir/20040100000000"].sort!
482
- @provider.stub(:all_releases).and_return(all_releases)
483
- FileUtils.should_receive(:rm_rf).with("/my/deploy/dir/20040100000000")
483
+ allow(@provider).to receive(:all_releases).and_return(all_releases)
484
+ expect(FileUtils).to receive(:rm_rf).with("/my/deploy/dir/20040100000000")
484
485
  @provider.cleanup!
485
486
  end
486
487
 
@@ -488,27 +489,27 @@ describe Chef::Provider::Deploy do
488
489
  all_releases = ["/my/deploy/dir/20040815162342", "/my/deploy/dir/20040700000000",
489
490
  "/my/deploy/dir/20040600000000", "/my/deploy/dir/20040500000000",
490
491
  "/my/deploy/dir/20040400000000", "/my/deploy/dir/20040300000000"].sort!
491
- @provider.stub(:all_releases).and_return(all_releases)
492
- FileUtils.stub(:rm_rf)
493
- @provider.should_receive(:release_deleted).with("/my/deploy/dir/20040300000000")
492
+ allow(@provider).to receive(:all_releases).and_return(all_releases)
493
+ allow(FileUtils).to receive(:rm_rf)
494
+ expect(@provider).to receive(:release_deleted).with("/my/deploy/dir/20040300000000")
494
495
  @provider.cleanup!
495
496
  end
496
497
 
497
498
  it "puts resource.to_hash in @configuration for backwards compat with capistano-esque deploy hooks" do
498
- @provider.instance_variable_get(:@configuration).should == @resource.to_hash
499
+ expect(@provider.instance_variable_get(:@configuration)).to eq(@resource.to_hash)
499
500
  end
500
501
 
501
502
  it "sets @configuration[:environment] to the value of RAILS_ENV for backwards compat reasons" do
502
503
  resource = Chef::Resource::Deploy.new("/my/deploy/dir")
503
504
  resource.environment "production"
504
505
  provider = Chef::Provider::Deploy.new(resource, @run_context)
505
- provider.instance_variable_get(:@configuration)[:environment].should eql("production")
506
+ expect(provider.instance_variable_get(:@configuration)[:environment]).to eql("production")
506
507
  end
507
508
 
508
509
  it "shouldn't give a no method error on migrate if the environment is nil" do
509
- @provider.stub(:enforce_ownership)
510
- @provider.stub(:run_symlinks_before_migrate)
511
- @provider.stub(:run_command)
510
+ allow(@provider).to receive(:enforce_ownership)
511
+ allow(@provider).to receive(:run_symlinks_before_migrate)
512
+ allow(@provider).to receive(:run_command)
512
513
  @provider.migrate
513
514
 
514
515
  end
@@ -520,13 +521,13 @@ describe Chef::Provider::Deploy do
520
521
  recipe_code = Proc.new {snitch = 42}
521
522
  #@provider.should_receive(:instance_eval).with(&recipe_code)
522
523
  @provider.callback(:whateverz, recipe_code)
523
- snitch.should == 42
524
+ expect(snitch).to eq(42)
524
525
  end
525
526
 
526
527
  it "loads a recipe file from the specified path and from_file evals it" do
527
- ::File.should_receive(:exist?).with(@expected_release_dir + "/chefz/foobar_callback.rb").once.and_return(true)
528
- ::Dir.should_receive(:chdir).with(@expected_release_dir).and_yield
529
- @provider.should_receive(:from_file).with(@expected_release_dir + "/chefz/foobar_callback.rb")
528
+ expect(::File).to receive(:exist?).with(@expected_release_dir + "/chefz/foobar_callback.rb").once.and_return(true)
529
+ expect(::Dir).to receive(:chdir).with(@expected_release_dir).and_yield
530
+ expect(@provider).to receive(:from_file).with(@expected_release_dir + "/chefz/foobar_callback.rb")
530
531
  @provider.callback(:whateverz, "chefz/foobar_callback.rb")
531
532
  end
532
533
 
@@ -535,40 +536,40 @@ describe Chef::Provider::Deploy do
535
536
  restart_cmd = Proc.new {snitch = 42}
536
537
  @resource.restart(&restart_cmd)
537
538
  @provider.restart
538
- snitch.should == 42
539
+ expect(snitch).to eq(42)
539
540
  end
540
541
 
541
542
  end
542
543
 
543
544
  describe "API bridge to capistrano" do
544
545
  it "defines sudo as a forwarder to execute" do
545
- @provider.should_receive(:execute).with("the moon, fool")
546
+ expect(@provider).to receive(:execute).with("the moon, fool")
546
547
  @provider.sudo("the moon, fool")
547
548
  end
548
549
 
549
550
  it "defines run as a forwarder to execute, setting the user, group, cwd and environment to new_resource.user" do
550
551
  mock_execution = double("Resource::Execute")
551
- @provider.should_receive(:execute).with("iGoToHell4this").and_return(mock_execution)
552
+ expect(@provider).to receive(:execute).with("iGoToHell4this").and_return(mock_execution)
552
553
  @resource.user("notCoolMan")
553
554
  @resource.group("Ggroup")
554
555
  @resource.environment("APP_ENV" => 'staging')
555
556
  @resource.deploy_to("/my/app")
556
- mock_execution.should_receive(:user).with("notCoolMan")
557
- mock_execution.should_receive(:group).with("Ggroup")
558
- mock_execution.should_receive(:cwd){|*args|
557
+ expect(mock_execution).to receive(:user).with("notCoolMan")
558
+ expect(mock_execution).to receive(:group).with("Ggroup")
559
+ expect(mock_execution).to receive(:cwd){|*args|
559
560
  if args.empty?
560
561
  nil
561
562
  else
562
- args.size.should == 1
563
- args.first.should == @provider.release_path
563
+ expect(args.size).to eq(1)
564
+ expect(args.first).to eq(@provider.release_path)
564
565
  end
565
566
  }.twice
566
- mock_execution.should_receive(:environment){ |*args|
567
+ expect(mock_execution).to receive(:environment){ |*args|
567
568
  if args.empty?
568
569
  nil
569
570
  else
570
- args.size.should == 1
571
- args.first.should == {"APP_ENV" => "staging"}
571
+ expect(args.size).to eq(1)
572
+ expect(args.first).to eq({"APP_ENV" => "staging"})
572
573
  end
573
574
  }.twice
574
575
  @provider.run("iGoToHell4this")
@@ -577,18 +578,18 @@ describe Chef::Provider::Deploy do
577
578
 
578
579
  it "defines run as a forwarder to execute, setting cwd and environment but not override" do
579
580
  mock_execution = double("Resource::Execute")
580
- @provider.should_receive(:execute).with("iGoToHell4this").and_return(mock_execution)
581
+ expect(@provider).to receive(:execute).with("iGoToHell4this").and_return(mock_execution)
581
582
  @resource.user("notCoolMan")
582
- mock_execution.should_receive(:user).with("notCoolMan")
583
- mock_execution.should_receive(:cwd).with(no_args()).and_return("/some/value")
584
- mock_execution.should_receive(:environment).with(no_args()).and_return({})
583
+ expect(mock_execution).to receive(:user).with("notCoolMan")
584
+ expect(mock_execution).to receive(:cwd).with(no_args()).and_return("/some/value")
585
+ expect(mock_execution).to receive(:environment).with(no_args()).and_return({})
585
586
  @provider.run("iGoToHell4this")
586
587
  end
587
588
 
588
589
 
589
590
  it "converts sudo and run to exec resources in hooks" do
590
591
  runner = double("tehRunner")
591
- Chef::Runner.stub(:new).and_return(runner)
592
+ allow(Chef::Runner).to receive(:new).and_return(runner)
592
593
 
593
594
  snitch = nil
594
595
  @resource.user("tehCat")
@@ -600,40 +601,40 @@ describe Chef::Provider::Deploy do
600
601
  snitch = temp_collection.lookup("execute[tehMice]")
601
602
  end
602
603
 
603
- runner.should_receive(:converge)
604
+ expect(runner).to receive(:converge)
604
605
  #
605
606
  @provider.callback(:phony, callback_code)
606
- snitch.should be_an_instance_of(Chef::Resource::Execute)
607
- snitch.user.should == "tehCat"
607
+ expect(snitch).to be_an_instance_of(Chef::Resource::Execute)
608
+ expect(snitch.user).to eq("tehCat")
608
609
  end
609
610
  end
610
611
 
611
612
  describe "installing gems from a gems.yml" do
612
613
 
613
614
  before do
614
- ::File.stub(:exist?).with("#{@expected_release_dir}/gems.yml").and_return(true)
615
+ allow(::File).to receive(:exist?).with("#{@expected_release_dir}/gems.yml").and_return(true)
615
616
  @gem_list = [{:name=>"eventmachine", :version=>"0.12.9"}]
616
617
  end
617
618
 
618
619
  it "reads a gems.yml file, creating gem providers for each with action :upgrade" do
619
- IO.should_receive(:read).with("#{@expected_release_dir}/gems.yml").and_return("cookie")
620
- YAML.should_receive(:load).with("cookie").and_return(@gem_list)
620
+ expect(IO).to receive(:read).with("#{@expected_release_dir}/gems.yml").and_return("cookie")
621
+ expect(YAML).to receive(:load).with("cookie").and_return(@gem_list)
621
622
 
622
623
  gems = @provider.send(:gem_packages)
623
624
 
624
- gems.map { |g| g.action }.should == [[:install]]
625
- gems.map { |g| g.name }.should == %w{eventmachine}
626
- gems.map { |g| g.version }.should == %w{0.12.9}
625
+ expect(gems.map { |g| g.action }).to eq([[:install]])
626
+ expect(gems.map { |g| g.name }).to eq(%w{eventmachine})
627
+ expect(gems.map { |g| g.version }).to eq(%w{0.12.9})
627
628
  end
628
629
 
629
630
  it "takes a list of gem providers converges them" do
630
- IO.stub(:read)
631
- YAML.stub(:load).and_return(@gem_list)
631
+ allow(IO).to receive(:read)
632
+ allow(YAML).to receive(:load).and_return(@gem_list)
632
633
  expected_gem_resources = @provider.send(:gem_packages).map { |r| [r.name, r.version] }
633
634
  gem_runner = @provider.send(:gem_resource_collection_runner)
634
635
  # no one has heard of defining == to be meaningful so I have use this monstrosity
635
636
  actual = gem_runner.run_context.resource_collection.all_resources.map { |r| [r.name, r.version] }
636
- actual.should == expected_gem_resources
637
+ expect(actual).to eq(expected_gem_resources)
637
638
  end
638
639
 
639
640
  end