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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -30,7 +30,7 @@ describe Chef::Provider::Env do
30
30
  end
31
31
 
32
32
  it "assumes the key_name exists by default" do
33
- @provider.key_exists.should be_true
33
+ expect(@provider.key_exists).to be_true
34
34
  end
35
35
 
36
36
  describe "when loading the current status" do
@@ -38,73 +38,73 @@ describe Chef::Provider::Env do
38
38
  #@current_resource = @new_resource.clone
39
39
  #Chef::Resource::Env.stub(:new).and_return(@current_resource)
40
40
  @provider.current_resource = @current_resource
41
- @provider.stub(:env_value).with("FOO").and_return("bar")
42
- @provider.stub(:env_key_exists).and_return(true)
41
+ allow(@provider).to receive(:env_value).with("FOO").and_return("bar")
42
+ allow(@provider).to receive(:env_key_exists).and_return(true)
43
43
  end
44
44
 
45
45
  it "should create a current resource with the same name as the new resource" do
46
46
  @provider.load_current_resource
47
- @provider.new_resource.name.should == "FOO"
47
+ expect(@provider.new_resource.name).to eq("FOO")
48
48
  end
49
49
 
50
50
  it "should set the key_name to the key name of the new resource" do
51
51
  @provider.load_current_resource
52
- @provider.current_resource.key_name.should == "FOO"
52
+ expect(@provider.current_resource.key_name).to eq("FOO")
53
53
  end
54
54
 
55
55
  it "should check if the key_name exists" do
56
- @provider.should_receive(:env_key_exists).with("FOO").and_return(true)
56
+ expect(@provider).to receive(:env_key_exists).with("FOO").and_return(true)
57
57
  @provider.load_current_resource
58
- @provider.key_exists.should be_true
58
+ expect(@provider.key_exists).to be_true
59
59
  end
60
60
 
61
61
  it "should flip the value of exists if the key does not exist" do
62
- @provider.should_receive(:env_key_exists).with("FOO").and_return(false)
62
+ expect(@provider).to receive(:env_key_exists).with("FOO").and_return(false)
63
63
  @provider.load_current_resource
64
- @provider.key_exists.should be_false
64
+ expect(@provider.key_exists).to be_false
65
65
  end
66
66
 
67
67
  it "should return the current resource" do
68
- @provider.load_current_resource.should be_a_kind_of(Chef::Resource::Env)
68
+ expect(@provider.load_current_resource).to be_a_kind_of(Chef::Resource::Env)
69
69
  end
70
70
  end
71
71
 
72
72
  describe "action_create" do
73
73
  before do
74
74
  @provider.key_exists = false
75
- @provider.stub(:create_env).and_return(true)
76
- @provider.stub(:modify_env).and_return(true)
75
+ allow(@provider).to receive(:create_env).and_return(true)
76
+ allow(@provider).to receive(:modify_env).and_return(true)
77
77
  end
78
78
 
79
79
  it "should call create_env if the key does not exist" do
80
- @provider.should_receive(:create_env).and_return(true)
80
+ expect(@provider).to receive(:create_env).and_return(true)
81
81
  @provider.action_create
82
82
  end
83
83
 
84
84
  it "should set the new_resources updated flag when it creates the key" do
85
85
  @provider.action_create
86
- @new_resource.should be_updated
86
+ expect(@new_resource).to be_updated
87
87
  end
88
88
 
89
89
  it "should check to see if the values are the same if the key exists" do
90
90
  @provider.key_exists = true
91
- @provider.should_receive(:compare_value).and_return(false)
91
+ expect(@provider).to receive(:requires_modify_or_create?).and_return(false)
92
92
  @provider.action_create
93
93
  end
94
94
 
95
95
  it "should call modify_env if the key exists and values are not equal" do
96
96
  @provider.key_exists = true
97
- @provider.stub(:compare_value).and_return(true)
98
- @provider.should_receive(:modify_env).and_return(true)
97
+ allow(@provider).to receive(:requires_modify_or_create?).and_return(true)
98
+ expect(@provider).to receive(:modify_env).and_return(true)
99
99
  @provider.action_create
100
100
  end
101
101
 
102
102
  it "should set the new_resources updated flag when it updates an existing value" do
103
103
  @provider.key_exists = true
104
- @provider.stub(:compare_value).and_return(true)
105
- @provider.stub(:modify_env).and_return(true)
104
+ allow(@provider).to receive(:requires_modify_or_create?).and_return(true)
105
+ allow(@provider).to receive(:modify_env).and_return(true)
106
106
  @provider.action_create
107
- @new_resource.should be_updated
107
+ expect(@new_resource).to be_updated
108
108
  end
109
109
  end
110
110
 
@@ -112,30 +112,30 @@ describe Chef::Provider::Env do
112
112
  before(:each) do
113
113
  @provider.current_resource = @current_resource
114
114
  @provider.key_exists = false
115
- @provider.stub(:delete_element).and_return(false)
116
- @provider.stub(:delete_env).and_return(true)
115
+ allow(@provider).to receive(:delete_element).and_return(false)
116
+ allow(@provider).to receive(:delete_env).and_return(true)
117
117
  end
118
118
 
119
119
  it "should not call delete_env if the key does not exist" do
120
- @provider.should_not_receive(:delete_env)
120
+ expect(@provider).not_to receive(:delete_env)
121
121
  @provider.action_delete
122
122
  end
123
123
 
124
124
  it "should not call delete_element if the key does not exist" do
125
- @provider.should_not_receive(:delete_element)
125
+ expect(@provider).not_to receive(:delete_element)
126
126
  @provider.action_delete
127
127
  end
128
128
 
129
129
  it "should call delete_env if the key exists" do
130
130
  @provider.key_exists = true
131
- @provider.should_receive(:delete_env)
131
+ expect(@provider).to receive(:delete_env)
132
132
  @provider.action_delete
133
133
  end
134
134
 
135
135
  it "should set the new_resources updated flag to true if the key is deleted" do
136
136
  @provider.key_exists = true
137
137
  @provider.action_delete
138
- @new_resource.should be_updated
138
+ expect(@new_resource).to be_updated
139
139
  end
140
140
  end
141
141
 
@@ -143,31 +143,31 @@ describe Chef::Provider::Env do
143
143
  before(:each) do
144
144
  @provider.current_resource = @current_resource
145
145
  @provider.key_exists = true
146
- @provider.stub(:modify_env).and_return(true)
146
+ allow(@provider).to receive(:modify_env).and_return(true)
147
147
  end
148
148
 
149
149
  it "should call modify_group if the key exists and values are not equal" do
150
- @provider.should_receive(:compare_value).and_return(true)
151
- @provider.should_receive(:modify_env).and_return(true)
150
+ expect(@provider).to receive(:requires_modify_or_create?).and_return(true)
151
+ expect(@provider).to receive(:modify_env).and_return(true)
152
152
  @provider.action_modify
153
153
  end
154
154
 
155
155
  it "should set the new resources updated flag to true if modify_env is called" do
156
- @provider.stub(:compare_value).and_return(true)
157
- @provider.stub(:modify_env).and_return(true)
156
+ allow(@provider).to receive(:requires_modify_or_create?).and_return(true)
157
+ allow(@provider).to receive(:modify_env).and_return(true)
158
158
  @provider.action_modify
159
- @new_resource.should be_updated
159
+ expect(@new_resource).to be_updated
160
160
  end
161
161
 
162
162
  it "should not call modify_env if the key exists but the values are equal" do
163
- @provider.should_receive(:compare_value).and_return(false)
164
- @provider.should_not_receive(:modify_env)
163
+ expect(@provider).to receive(:requires_modify_or_create?).and_return(false)
164
+ expect(@provider).not_to receive(:modify_env)
165
165
  @provider.action_modify
166
166
  end
167
167
 
168
168
  it "should raise a Chef::Exceptions::Env if the key doesn't exist" do
169
169
  @provider.key_exists = false
170
- lambda { @provider.action_modify }.should raise_error(Chef::Exceptions::Env)
170
+ expect { @provider.action_modify }.to raise_error(Chef::Exceptions::Env)
171
171
  end
172
172
  end
173
173
 
@@ -183,24 +183,46 @@ describe Chef::Provider::Env do
183
183
  end
184
184
 
185
185
  it "should return true if the element is not found" do
186
- @new_resource.stub(:value).and_return("C:/baz/bin")
187
- @provider.delete_element.should eql(true)
186
+ allow(@new_resource).to receive(:value).and_return("C:/baz/bin")
187
+ expect(@provider.delete_element).to eql(true)
188
188
  end
189
189
 
190
190
  it "should return false if the delim not defined" do
191
- @new_resource.stub(:delim).and_return(nil)
192
- @provider.delete_element.should eql(false)
191
+ allow(@new_resource).to receive(:delim).and_return(nil)
192
+ expect(@provider.delete_element).to eql(false)
193
193
  end
194
194
 
195
195
  it "should return true if the element is deleted" do
196
196
  @new_resource.value("C:/foo/bin")
197
- @provider.should_receive(:create_env)
198
- @provider.delete_element.should eql(true)
199
- @new_resource.should be_updated
197
+ expect(@provider).to receive(:create_env)
198
+ expect(@provider.delete_element).to eql(true)
199
+ expect(@new_resource).to be_updated
200
+ end
201
+
202
+ context "when new_resource's value contains the delimiter" do
203
+ it "should return false if all the elements are deleted" do
204
+ # This indicates that the entire key needs to be deleted
205
+ @new_resource.value("C:/foo/bin;C:/bar/bin")
206
+ expect(@provider.delete_element).to eql(false)
207
+ expect(@new_resource).not_to be_updated # This will be updated in action_delete
208
+ end
209
+
210
+ it "should return true if any, but not all, of the elements are deleted" do
211
+ @new_resource.value("C:/foo/bin;C:/notbaz/bin")
212
+ expect(@provider).to receive(:create_env)
213
+ expect(@provider.delete_element).to eql(true)
214
+ expect(@new_resource).to be_updated
215
+ end
216
+
217
+ it "should return true if none of the elements are deleted" do
218
+ @new_resource.value("C:/notfoo/bin;C:/notbaz/bin")
219
+ expect(@provider.delete_element).to eql(true)
220
+ expect(@new_resource).not_to be_updated
221
+ end
200
222
  end
201
223
  end
202
224
 
203
- describe "compare_value" do
225
+ describe "requires_modify_or_create?" do
204
226
  before(:each) do
205
227
  @new_resource.value("C:/bar")
206
228
  @current_resource = @new_resource.clone
@@ -208,31 +230,47 @@ describe Chef::Provider::Env do
208
230
  end
209
231
 
210
232
  it "should return false if the values are equal" do
211
- @provider.compare_value.should be_false
233
+ expect(@provider.requires_modify_or_create?).to be_false
212
234
  end
213
235
 
214
236
  it "should return true if the values not are equal" do
215
237
  @new_resource.value("C:/elsewhere")
216
- @provider.compare_value.should be_true
238
+ expect(@provider.requires_modify_or_create?).to be_true
217
239
  end
218
240
 
219
241
  it "should return false if the current value contains the element" do
220
242
  @new_resource.delim(";")
221
243
  @current_resource.value("C:/bar;C:/foo;C:/baz")
222
244
 
223
- @provider.compare_value.should be_false
245
+ expect(@provider.requires_modify_or_create?).to be_false
224
246
  end
225
247
 
226
248
  it "should return true if the current value does not contain the element" do
227
249
  @new_resource.delim(";")
228
250
  @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
229
- @provider.compare_value.should be_true
251
+ expect(@provider.requires_modify_or_create?).to be_true
252
+ end
253
+
254
+ context "when new_resource's value contains the delimiter" do
255
+ it "should return false if all the current values are contained" do
256
+ @new_resource.value("C:/biz;C:/baz")
257
+ @new_resource.delim(";")
258
+ @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
259
+ expect(@provider.requires_modify_or_create?).to be_false
260
+ end
261
+
262
+ it "should return true if any of the new values are not contained" do
263
+ @new_resource.value("C:/biz;C:/baz;C:/bin")
264
+ @new_resource.delim(";")
265
+ @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
266
+ expect(@provider.requires_modify_or_create?).to be_true
267
+ end
230
268
  end
231
269
  end
232
270
 
233
271
  describe "modify_env" do
234
272
  before(:each) do
235
- @provider.stub(:create_env).and_return(true)
273
+ allow(@provider).to receive(:create_env).and_return(true)
236
274
  @new_resource.delim ";"
237
275
 
238
276
  @current_resource = Chef::Resource::Env.new("FOO")
@@ -245,7 +283,15 @@ describe Chef::Provider::Env do
245
283
  passed_value = new_value.dup
246
284
  @new_resource.value(passed_value)
247
285
  @provider.modify_env
248
- passed_value.should == new_value
286
+ expect(passed_value).to eq(new_value)
287
+ end
288
+
289
+ it "should only add values not already contained when a delimiter is provided" do
290
+ @new_resource.value("C:/foo;C:/bar;C:/baz")
291
+ @new_resource.delim(";")
292
+ @current_resource.value("C:/foo/bar;C:/bar;C:/baz")
293
+ @provider.modify_env
294
+ expect(@new_resource.value).to eq("C:/foo;C:/foo/bar;C:/bar;C:/baz")
249
295
  end
250
296
  end
251
297
  end
@@ -31,7 +31,7 @@ describe Chef::Provider::ErlCall do
31
31
 
32
32
  @provider = Chef::Provider::ErlCall.new(@new_resource, @run_context)
33
33
 
34
- @provider.stub(:popen4).and_return(@status)
34
+ allow(@provider).to receive(:popen4).and_return(@status)
35
35
  @stdin = StringIO.new
36
36
  @stdout = StringIO.new('{ok, woohoo}')
37
37
  @stderr = StringIO.new
@@ -40,11 +40,11 @@ describe Chef::Provider::ErlCall do
40
40
 
41
41
  it "should return a Chef::Provider::ErlCall object" do
42
42
  provider = Chef::Provider::ErlCall.new(@new_resource, @run_context)
43
- provider.should be_a_kind_of(Chef::Provider::ErlCall)
43
+ expect(provider).to be_a_kind_of(Chef::Provider::ErlCall)
44
44
  end
45
45
 
46
46
  it "should return true" do
47
- @provider.load_current_resource.should eql(true)
47
+ expect(@provider.load_current_resource).to eql(true)
48
48
  end
49
49
 
50
50
  describe "when running a distributed erl call resource" do
@@ -56,12 +56,12 @@ describe Chef::Provider::ErlCall do
56
56
 
57
57
  it "should write to stdin of the erl_call command" do
58
58
  expected_cmd = "erl_call -e -s -sname chef@localhost -c nomnomnom"
59
- @provider.should_receive(:popen4).with(expected_cmd, :waitlast => true).and_return([@pid, @stdin, @stdout, @stderr])
60
- Process.should_receive(:wait).with(@pid)
59
+ expect(@provider).to receive(:popen4).with(expected_cmd, :waitlast => true).and_return([@pid, @stdin, @stdout, @stderr])
60
+ expect(Process).to receive(:wait).with(@pid)
61
61
 
62
62
  @provider.action_run
63
63
 
64
- @stdin.string.should == "#{@new_resource.code}\n"
64
+ expect(@stdin.string).to eq("#{@new_resource.code}\n")
65
65
  end
66
66
  end
67
67
 
@@ -73,12 +73,12 @@ describe Chef::Provider::ErlCall do
73
73
  end
74
74
 
75
75
  it "should write to stdin of the erl_call command" do
76
- @provider.should_receive(:popen4).with("erl_call -e -name chef@localhost ", :waitlast => true).and_return([@pid, @stdin, @stdout, @stderr])
77
- Process.should_receive(:wait).with(@pid)
76
+ expect(@provider).to receive(:popen4).with("erl_call -e -name chef@localhost ", :waitlast => true).and_return([@pid, @stdin, @stdout, @stderr])
77
+ expect(Process).to receive(:wait).with(@pid)
78
78
 
79
79
  @provider.action_run
80
80
 
81
- @stdin.string.should == "#{@new_resource.code}\n"
81
+ expect(@stdin.string).to eq("#{@new_resource.code}\n")
82
82
  end
83
83
  end
84
84
 
@@ -33,57 +33,73 @@ describe Chef::Provider::Execute do
33
33
  @provider.current_resource = @current_resource
34
34
  Chef::Log.level = :info
35
35
  # FIXME: There should be a test for how STDOUT.tty? changes the live_stream option being passed
36
- STDOUT.stub(:tty?).and_return(true)
36
+ allow(STDOUT).to receive(:tty?).and_return(true)
37
37
  end
38
38
 
39
+ let(:opts) do
40
+ {
41
+ timeout: @new_resource.timeout,
42
+ returns: @new_resource.returns,
43
+ log_level: :info,
44
+ log_tag: @new_resource.to_s,
45
+ live_stream: STDOUT
46
+ }
47
+ end
39
48
 
40
49
  it "should execute foo_resource" do
41
- @provider.stub(:load_current_resource)
42
- opts = {}
43
- opts[:timeout] = @new_resource.timeout
44
- opts[:returns] = @new_resource.returns
45
- opts[:log_level] = :info
46
- opts[:log_tag] = @new_resource.to_s
47
- opts[:live_stream] = STDOUT
48
- @provider.should_receive(:shell_out!).with(@new_resource.command, opts)
49
- Chef::Log.should_not_receive(:warn)
50
+ allow(@provider).to receive(:load_current_resource)
51
+ expect(@provider).to receive(:shell_out!).with(@new_resource.command, opts)
52
+ expect(@provider).to receive(:converge_by).with("execute foo_resource").and_call_original
53
+ expect(Chef::Log).not_to receive(:warn)
50
54
 
51
55
  @provider.run_action(:run)
52
- @new_resource.should be_updated
56
+ expect(@new_resource).to be_updated
57
+ end
58
+
59
+ it "should honor sensitive attribute" do
60
+ @new_resource.sensitive true
61
+ @provider = Chef::Provider::Execute.new(@new_resource, @run_context)
62
+ allow(@provider).to receive(:load_current_resource)
63
+ # Since the resource is sensitive, it should not have :live_stream set
64
+ expect(@provider).to receive(:shell_out!).with(@new_resource.command, opts.reject { |k| k == :live_stream })
65
+ expect(Chef::Log).not_to receive(:warn)
66
+ expect(@provider).to receive(:converge_by).with("execute sensitive resource").and_call_original
67
+ @provider.run_action(:run)
68
+ expect(@new_resource).to be_updated
53
69
  end
54
70
 
55
71
  it "should do nothing if the sentinel file exists" do
56
- @provider.stub(:load_current_resource)
57
- File.should_receive(:exists?).with(@new_resource.creates).and_return(true)
58
- @provider.should_not_receive(:shell_out!)
59
- Chef::Log.should_not_receive(:warn)
72
+ allow(@provider).to receive(:load_current_resource)
73
+ expect(File).to receive(:exists?).with(@new_resource.creates).and_return(true)
74
+ expect(@provider).not_to receive(:shell_out!)
75
+ expect(Chef::Log).not_to receive(:warn)
60
76
 
61
77
  @provider.run_action(:run)
62
- @new_resource.should_not be_updated
78
+ expect(@new_resource).not_to be_updated
63
79
  end
64
80
 
65
81
  it "should respect cwd options for 'creates'" do
66
82
  @new_resource.cwd "/tmp"
67
83
  @new_resource.creates "foo_resource"
68
- @provider.stub(:load_current_resource)
69
- File.should_receive(:exists?).with(@new_resource.creates).and_return(false)
70
- File.should_receive(:exists?).with(File.join("/tmp", @new_resource.creates)).and_return(true)
71
- Chef::Log.should_not_receive(:warn)
72
- @provider.should_not_receive(:shell_out!)
84
+ allow(@provider).to receive(:load_current_resource)
85
+ expect(File).to receive(:exists?).with(@new_resource.creates).and_return(false)
86
+ expect(File).to receive(:exists?).with(File.join("/tmp", @new_resource.creates)).and_return(true)
87
+ expect(Chef::Log).not_to receive(:warn)
88
+ expect(@provider).not_to receive(:shell_out!)
73
89
 
74
90
  @provider.run_action(:run)
75
- @new_resource.should_not be_updated
91
+ expect(@new_resource).not_to be_updated
76
92
  end
77
93
 
78
94
  it "should warn if user specified relative path without cwd" do
79
95
  @new_resource.creates "foo_resource"
80
- @provider.stub(:load_current_resource)
81
- Chef::Log.should_receive(:warn).with(/relative path/)
82
- File.should_receive(:exists?).with(@new_resource.creates).and_return(true)
83
- @provider.should_not_receive(:shell_out!)
96
+ allow(@provider).to receive(:load_current_resource)
97
+ expect(Chef::Log).to receive(:warn).with(/relative path/)
98
+ expect(File).to receive(:exists?).with(@new_resource.creates).and_return(true)
99
+ expect(@provider).not_to receive(:shell_out!)
84
100
 
85
101
  @provider.run_action(:run)
86
- @new_resource.should_not be_updated
102
+ expect(@new_resource).not_to be_updated
87
103
  end
88
104
  end
89
105