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
@@ -31,15 +31,15 @@ describe Chef::Provider::WhyrunSafeRubyBlock, "initialize" do
31
31
 
32
32
  it "should call the block and flag the resource as updated" do
33
33
  @provider.run_action(:run)
34
- $evil_global_evil_laugh.should == :mwahahaha
35
- @new_resource.should be_updated
34
+ expect($evil_global_evil_laugh).to eq(:mwahahaha)
35
+ expect(@new_resource).to be_updated
36
36
  end
37
37
 
38
38
  it "should call the block and flat the resource as updated - even in whyrun" do
39
39
  Chef::Config[:why_run] = true
40
40
  @provider.run_action(:run)
41
- $evil_global_evil_laugh.should == :mwahahaha
42
- @new_resource.should be_updated
41
+ expect($evil_global_evil_laugh).to eq(:mwahahaha)
42
+ expect(@new_resource).to be_updated
43
43
  Chef::Config[:why_run] = false
44
44
  end
45
45
 
@@ -0,0 +1,387 @@
1
+ #
2
+ # Author:: Lamont Granquist (<lamont@getchef.com>)
3
+ # Copyright:: Copyright (c) 2014 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'spec_helper'
20
+ require 'chef/mixin/convert_to_class_name'
21
+
22
+ include Chef::Mixin::ConvertToClassName
23
+
24
+ describe Chef::ProviderResolver do
25
+
26
+ let(:node) do
27
+ node = Chef::Node.new
28
+ allow(node).to receive(:[]).with(:os).and_return(os)
29
+ allow(node).to receive(:[]).with(:platform_family).and_return(platform_family)
30
+ allow(node).to receive(:[]).with(:platform).and_return(platform)
31
+ allow(node).to receive(:[]).with(:platform_version).and_return(platform_version)
32
+ allow(node).to receive(:is_a?).and_return(Chef::Node)
33
+ node
34
+ end
35
+
36
+ let(:provider_resolver) { Chef::ProviderResolver.new(node) }
37
+
38
+ let(:action) { :start }
39
+
40
+ let(:resolved_provider) { provider_resolver.resolve(resource, action) }
41
+
42
+ let(:provider) { nil }
43
+
44
+ let(:resource_name) { :service }
45
+
46
+ let(:resource) { double(Chef::Resource, provider: provider, resource_name: resource_name) }
47
+
48
+ describe "resolving service resource" do
49
+ def stub_service_providers(*services)
50
+ services ||= []
51
+ allow(Chef::Platform::ServiceHelpers).to receive(:service_resource_providers)
52
+ .and_return(services)
53
+ end
54
+
55
+ def stub_service_configs(*configs)
56
+ configs ||= []
57
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
58
+ .and_return(configs)
59
+ end
60
+
61
+ before do
62
+ expect(provider_resolver).not_to receive(:maybe_chef_platform_lookup)
63
+ allow(resource).to receive(:service_name).and_return("ntp")
64
+ end
65
+
66
+ shared_examples_for "a debian platform with upstart and update-rc.d" do
67
+ before do
68
+ stub_service_providers(:debian, :invokercd, :upstart)
69
+ end
70
+
71
+ it "when only the SysV init script exists, it returns a Service::Debian provider" do
72
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
73
+ .and_return( [ :initd ] )
74
+ expect(resolved_provider).to eql(Chef::Provider::Service::Debian)
75
+ end
76
+
77
+ it "when both SysV and Upstart scripts exist, it returns a Service::Upstart provider" do
78
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
79
+ .and_return( [ :initd, :upstart ] )
80
+ expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
81
+ end
82
+
83
+ it "when only the Upstart script exists, it returns a Service::Upstart provider" do
84
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
85
+ .and_return( [ :upstart ] )
86
+ expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
87
+ end
88
+
89
+ it "when both do not exist, it calls the old style provider resolver and returns a Debian Provider" do
90
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
91
+ .and_return( [ ] )
92
+ expect(resolved_provider).to eql(Chef::Provider::Service::Debian)
93
+ end
94
+ end
95
+
96
+ shared_examples_for "a debian platform using the insserv provider" do
97
+ context "with a default install" do
98
+ before do
99
+ stub_service_providers(:debian, :invokercd, :insserv)
100
+ end
101
+
102
+ it "uses the Service::Insserv Provider to manage sysv init scripts" do
103
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
104
+ .and_return( [ :initd ] )
105
+ expect(resolved_provider).to eql(Chef::Provider::Service::Insserv)
106
+ end
107
+ end
108
+
109
+ context "when the user has installed upstart" do
110
+ before do
111
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart)
112
+ end
113
+
114
+ it "when only the SysV init script exists, it returns a Service::Debian provider" do
115
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
116
+ .and_return( [ :initd ] )
117
+ expect(resolved_provider).to eql(Chef::Provider::Service::Insserv)
118
+ end
119
+
120
+ it "when both SysV and Upstart scripts exist, it returns a Service::Upstart provider" do
121
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
122
+ .and_return( [ :initd, :upstart ] )
123
+ expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
124
+ end
125
+
126
+ it "when only the Upstart script exists, it returns a Service::Upstart provider" do
127
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
128
+ .and_return( [ :upstart ] )
129
+ expect(resolved_provider).to eql(Chef::Provider::Service::Upstart)
130
+ end
131
+
132
+ it "when both do not exist, it calls the old style provider resolver and returns a Debian Provider" do
133
+ allow(Chef::Platform::ServiceHelpers).to receive(:config_for_service).with("ntp")
134
+ .and_return( [ ] )
135
+ expect(resolved_provider).to eql(Chef::Provider::Service::Insserv)
136
+ end
137
+ end
138
+ end
139
+
140
+ describe "on Linux" do
141
+ end
142
+
143
+ describe "on Ubuntu 14.04" do
144
+ let(:os) { "linux" }
145
+ let(:platform) { "ubuntu" }
146
+ let(:platform_family) { "debian" }
147
+ let(:platform_version) { "14.04" }
148
+
149
+ it_behaves_like "a debian platform with upstart and update-rc.d"
150
+ end
151
+
152
+ describe "on Ubuntu 10.04" do
153
+ let(:os) { "linux" }
154
+ let(:platform) { "ubuntu" }
155
+ let(:platform_family) { "debian" }
156
+ let(:platform_version) { "10.04" }
157
+
158
+ it_behaves_like "a debian platform with upstart and update-rc.d"
159
+ end
160
+
161
+ # old debian uses the Debian provider (does not have insserv or upstart, or update-rc.d???)
162
+ describe "on Debian 4.0" do
163
+ let(:os) { "linux" }
164
+ let(:platform) { "debian" }
165
+ let(:platform_family) { "debian" }
166
+ let(:platform_version) { "4.0" }
167
+
168
+ #it_behaves_like "a debian platform using the debian provider"
169
+ end
170
+
171
+ # Debian replaced the debian provider with insserv in the FIXME:VERSION distro
172
+ describe "on Debian 7.0" do
173
+ let(:os) { "linux" }
174
+ let(:platform) { "debian" }
175
+ let(:platform_family) { "debian" }
176
+ let(:platform_version) { "7.0" }
177
+
178
+ it_behaves_like "a debian platform using the insserv provider"
179
+ end
180
+
181
+ %w{solaris2 openindiana opensolaris nexentacore omnios smartos}.each do |platform|
182
+ describe "on #{platform}" do
183
+ let(:os) { "solaris2" }
184
+ let(:platform) { platform }
185
+ let(:platform_family) { platform }
186
+ let(:platform_version) { "5.11" }
187
+
188
+ it "returns a Solaris provider" do
189
+ stub_service_providers
190
+ stub_service_configs
191
+ expect(resolved_provider).to eql(Chef::Provider::Service::Solaris)
192
+ end
193
+
194
+ it "always returns a Solaris provider" do
195
+ # no matter what we stub on the next two lines we should get a Solaris provider
196
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart, :redhat, :systemd)
197
+ stub_service_configs(:initd, :upstart, :xinetd, :user_local_etc_rcd, :systemd)
198
+ expect(resolved_provider).to eql(Chef::Provider::Service::Solaris)
199
+ end
200
+ end
201
+ end
202
+
203
+ %w{mswin mingw32 windows}.each do |platform|
204
+ describe "on #{platform}" do
205
+ let(:os) { "windows" }
206
+ let(:platform) { platform }
207
+ let(:platform_family) { "windows" }
208
+ let(:platform_version) { "5.11" }
209
+
210
+ it "returns a Windows provider" do
211
+ stub_service_providers
212
+ stub_service_configs
213
+ expect(resolved_provider).to eql(Chef::Provider::Service::Windows)
214
+ end
215
+
216
+ it "always returns a Windows provider" do
217
+ # no matter what we stub on the next two lines we should get a Windows provider
218
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart, :redhat, :systemd)
219
+ stub_service_configs(:initd, :upstart, :xinetd, :user_local_etc_rcd, :systemd)
220
+ expect(resolved_provider).to eql(Chef::Provider::Service::Windows)
221
+ end
222
+ end
223
+ end
224
+
225
+ %w{mac_os_x mac_os_x_server}.each do |platform|
226
+ describe "on #{platform}" do
227
+ let(:os) { "darwin" }
228
+ let(:platform) { platform }
229
+ let(:platform_family) { "mac_os_x" }
230
+ let(:platform_version) { "10.9.2" }
231
+
232
+ it "returns a Macosx provider" do
233
+ stub_service_providers
234
+ stub_service_configs
235
+ expect(resolved_provider).to eql(Chef::Provider::Service::Macosx)
236
+ end
237
+
238
+ it "always returns a Macosx provider" do
239
+ # no matter what we stub on the next two lines we should get a Macosx provider
240
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart, :redhat, :systemd)
241
+ stub_service_configs(:initd, :upstart, :xinetd, :user_local_etc_rcd, :systemd)
242
+ expect(resolved_provider).to eql(Chef::Provider::Service::Macosx)
243
+ end
244
+ end
245
+ end
246
+
247
+ %w{freebsd netbsd}.each do |platform|
248
+ describe "on #{platform}" do
249
+ let(:os) { platform }
250
+ let(:platform) { platform }
251
+ let(:platform_family) { platform }
252
+ let(:platform_version) { "10.0-RELEASE" }
253
+
254
+ it "returns a Freebsd provider if it finds the /usr/local/etc/rc.d initscript" do
255
+ stub_service_providers
256
+ stub_service_configs(:usr_local_etc_rcd)
257
+ expect(resolved_provider).to eql(Chef::Provider::Service::Freebsd)
258
+ end
259
+
260
+ it "returns a Freebsd provider if it finds the /etc/rc.d initscript" do
261
+ stub_service_providers
262
+ stub_service_configs(:etc_rcd)
263
+ expect(resolved_provider).to eql(Chef::Provider::Service::Freebsd)
264
+ end
265
+
266
+ it "always returns a Freebsd provider if it finds the /usr/local/etc/rc.d initscript" do
267
+ # should only care about :usr_local_etc_rcd stub in the service configs
268
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart, :redhat, :systemd)
269
+ stub_service_configs(:usr_local_etc_rcd, :initd, :upstart, :xinetd, :systemd)
270
+ expect(resolved_provider).to eql(Chef::Provider::Service::Freebsd)
271
+ end
272
+
273
+ it "always returns a Freebsd provider if it finds the /usr/local/etc/rc.d initscript" do
274
+ # should only care about :etc_rcd stub in the service configs
275
+ stub_service_providers(:debian, :invokercd, :insserv, :upstart, :redhat, :systemd)
276
+ stub_service_configs(:etc_rcd, :initd, :upstart, :xinetd, :systemd)
277
+ expect(resolved_provider).to eql(Chef::Provider::Service::Freebsd)
278
+ end
279
+
280
+ it "foo" do
281
+ stub_service_providers
282
+ stub_service_configs
283
+ expect(resolved_provider).to eql(Chef::Provider::Service::Freebsd)
284
+ end
285
+ end
286
+ end
287
+
288
+ end
289
+
290
+ describe "resolving static providers" do
291
+ def resource_class(resource)
292
+ Chef::Resource.const_get(convert_to_class_name(resource.to_s))
293
+ end
294
+ static_mapping = {
295
+ apt_package: Chef::Provider::Package::Apt,
296
+ bash: Chef::Provider::Script,
297
+ bff_package: Chef::Provider::Package::Aix,
298
+ breakpoint: Chef::Provider::Breakpoint,
299
+ chef_gem: Chef::Provider::Package::Rubygems,
300
+ cookbook_file: Chef::Provider::CookbookFile,
301
+ csh: Chef::Provider::Script,
302
+ deploy: Chef::Provider::Deploy::Timestamped,
303
+ deploy_revision: Chef::Provider::Deploy::Revision,
304
+ directory: Chef::Provider::Directory,
305
+ dpkg_package: Chef::Provider::Package::Dpkg,
306
+ dsc_script: Chef::Provider::DscScript,
307
+ easy_install_package: Chef::Provider::Package::EasyInstall,
308
+ erl_call: Chef::Provider::ErlCall,
309
+ execute: Chef::Provider::Execute,
310
+ file: Chef::Provider::File,
311
+ gem_package: Chef::Provider::Package::Rubygems,
312
+ git: Chef::Provider::Git,
313
+ homebrew_package: Chef::Provider::Package::Homebrew,
314
+ http_request: Chef::Provider::HttpRequest,
315
+ ips_package: Chef::Provider::Package::Ips,
316
+ link: Chef::Provider::Link,
317
+ log: Chef::Provider::Log::ChefLog,
318
+ macports_package: Chef::Provider::Package::Macports,
319
+ pacman_package: Chef::Provider::Package::Pacman,
320
+ paludis_package: Chef::Provider::Package::Paludis,
321
+ perl: Chef::Provider::Script,
322
+ portage_package: Chef::Provider::Package::Portage,
323
+ python: Chef::Provider::Script,
324
+ remote_directory: Chef::Provider::RemoteDirectory,
325
+ route: Chef::Provider::Route,
326
+ rpm_package: Chef::Provider::Package::Rpm,
327
+ ruby: Chef::Provider::Script,
328
+ ruby_block: Chef::Provider::RubyBlock,
329
+ script: Chef::Provider::Script,
330
+ smartos_package: Chef::Provider::Package::SmartOS,
331
+ solaris_package: Chef::Provider::Package::Solaris,
332
+ subversion: Chef::Provider::Subversion,
333
+ template: Chef::Provider::Template,
334
+ timestamped_deploy: Chef::Provider::Deploy::Timestamped,
335
+ whyrun_safe_ruby_block: Chef::Provider::WhyrunSafeRubyBlock,
336
+ windows_package: Chef::Provider::Package::Windows,
337
+ windows_service: Chef::Provider::Service::Windows,
338
+ yum_package: Chef::Provider::Package::Yum,
339
+ }
340
+
341
+ describe "on Ubuntu 14.04" do
342
+ let(:os) { "linux" }
343
+ let(:platform) { "ubuntu" }
344
+ let(:platform_family) { "debian" }
345
+ let(:platform_version) { "14.04" }
346
+
347
+ supported_providers = [
348
+ :apt_package, :bash, :breakpoint, :chef_gem, :cookbook_file, :csh, :deploy,
349
+ :deploy_revision, :directory, :dpkg_package, :easy_install_package,
350
+ :erl_call, :execute, :file, :gem_package, :git, :http_request, :link, :log, :pacman_package, :paludis_package,
351
+ :perl, :python, :remote_directory, :route, :rpm_package, :ruby, :ruby_block, :script,
352
+ :subversion, :template, :timestamped_deploy, :whyrun_safe_ruby_block, :yum_package,
353
+ ]
354
+
355
+ supported_providers.each do |static_resource|
356
+ static_provider = static_mapping[static_resource]
357
+ context "when the resource is a #{static_resource}" do
358
+ let(:resource) { double(Chef::Resource, provider: nil, resource_name: static_resource) }
359
+ let(:action) { :start } # in reality this doesn't matter much
360
+ it "should resolve to a #{static_provider} provider" do
361
+ expect(provider_resolver).not_to receive(:maybe_chef_platform_lookup)
362
+ expect(resolved_provider).to eql(static_provider)
363
+ end
364
+ end
365
+ end
366
+
367
+ unsupported_providers = [
368
+ :bff_package, :dsc_script, :homebrew_package, :ips_package, :macports_package,
369
+ :smartos_package, :solaris_package, :windows_package,
370
+ :windows_service,
371
+ ]
372
+
373
+ unsupported_providers.each do |static_resource|
374
+ static_provider = static_mapping[static_resource]
375
+ context "when the resource is a #{static_resource}" do
376
+ let(:resource) { double(Chef::Resource, provider: nil, resource_name: static_resource) }
377
+ let(:action) { :start } # in reality this doesn't matter much
378
+ it "should fall back into the old provider mapper code and hooks" do
379
+ retval = Object.new
380
+ expect(provider_resolver).to receive(:maybe_chef_platform_lookup).and_return(retval)
381
+ expect(resolved_provider).to equal(retval)
382
+ end
383
+ end
384
+ end
385
+ end
386
+ end
387
+ end
@@ -119,7 +119,8 @@ describe Chef::Recipe do
119
119
  describe "should locate platform mapped resources" do
120
120
 
121
121
  it "locate resource for particular platform" do
122
- Object.const_set('ShaunTheSheep', Class.new(Chef::Resource){ provides :laughter, :on_platforms => ["television"] })
122
+ ShaunTheSheep = Class.new(Chef::Resource)
123
+ ShaunTheSheep.provides :laughter, :on_platforms => ["television"]
123
124
  node.automatic[:platform] = "television"
124
125
  node.automatic[:platform_version] = "123"
125
126
  res = recipe.laughter "timmy"
@@ -128,7 +129,8 @@ describe Chef::Recipe do
128
129
  end
129
130
 
130
131
  it "locate a resource for all platforms" do
131
- Object.const_set("YourMom", Class.new(Chef::Resource){ provides :love_and_caring })
132
+ YourMom = Class.new(Chef::Resource)
133
+ YourMom.provides :love_and_caring
132
134
  res = recipe.love_and_caring "mommy"
133
135
  res.name.should eql("mommy")
134
136
  res.kind_of?(YourMom)
@@ -188,16 +190,7 @@ describe Chef::Recipe do
188
190
  # zen_follower resource has this:
189
191
  # provides :follower, :on_platforms => ["zen"]
190
192
  before do
191
- node.stub(:[]) do |key|
192
- case key
193
- when :platform
194
- :zen
195
- when :platform_version
196
- "1.0.0"
197
- else
198
- nil
199
- end
200
- end
193
+ node.automatic_attrs[:platform] = "zen"
201
194
  end
202
195
 
203
196
  let(:resource_follower) do
@@ -345,6 +338,17 @@ describe Chef::Recipe do
345
338
  end
346
339
  recipe.resources(:zen_master => "lao tzu").something.should eql(false)
347
340
  end
341
+
342
+ it "should return the last statement in the definition as the retval" do
343
+ crow_define = Chef::ResourceDefinition.new
344
+ crow_define.define :crow, :peace => false, :something => true do
345
+ "the return val"
346
+ end
347
+ run_context.definitions[:crow] = crow_define
348
+ recipe.crow "mine" do
349
+ peace true
350
+ end.should eql("the return val")
351
+ end
348
352
  end
349
353
 
350
354
  end
@@ -361,6 +365,15 @@ describe Chef::Recipe do
361
365
  end
362
366
  end
363
367
 
368
+ describe "handle exec calls" do
369
+ it "should raise ResourceNotFound error if exec is used" do
370
+ code = <<-CODE
371
+ exec 'do_not_try_to_exec'
372
+ CODE
373
+ lambda { recipe.instance_eval(code) }.should raise_error(Chef::Exceptions::ResourceNotFound)
374
+ end
375
+ end
376
+
364
377
  describe "from_file" do
365
378
  it "should load a resource from a ruby file" do
366
379
  recipe.from_file(File.join(CHEF_SPEC_DATA, "recipes", "test.rb"))
@@ -414,6 +427,14 @@ describe Chef::Recipe do
414
427
  end
415
428
 
416
429
  describe "tags" do
430
+ describe "with the default node object" do
431
+ let(:node) { Chef::Node.new }
432
+
433
+ it "should return false for any tags" do
434
+ recipe.tagged?("foo").should be(false)
435
+ end
436
+ end
437
+
417
438
  it "should set tags via tag" do
418
439
  recipe.tag "foo"
419
440
  node[:tags].should include("foo")