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
@@ -33,46 +33,46 @@ describe Chef::Provider::Package::Freebsd::Port do
33
33
 
34
34
  describe "initialization" do
35
35
  it "should create a current resource with the name of the new resource" do
36
- @provider.current_resource.is_a?(Chef::Resource::Package).should be_true
37
- @provider.current_resource.name.should == 'zsh'
36
+ expect(@provider.current_resource.is_a?(Chef::Resource::Package)).to be_true
37
+ expect(@provider.current_resource.name).to eq('zsh')
38
38
  end
39
39
  end
40
40
 
41
41
 
42
42
  describe "loading current resource" do
43
43
  before(:each) do
44
- @provider.stub(:current_installed_version)
45
- @provider.stub(:candidate_version)
44
+ allow(@provider).to receive(:current_installed_version)
45
+ allow(@provider).to receive(:candidate_version)
46
46
  end
47
47
 
48
48
  it "should set the package name" do
49
49
  @provider.load_current_resource
50
- @provider.current_resource.package_name.should == "zsh"
50
+ expect(@provider.current_resource.package_name).to eq("zsh")
51
51
  end
52
52
 
53
53
  it "should set the current version" do
54
- @provider.should_receive(:current_installed_version).and_return("5.0.2")
54
+ expect(@provider).to receive(:current_installed_version).and_return("5.0.2")
55
55
  @provider.load_current_resource
56
- @provider.current_resource.version.should == "5.0.2"
56
+ expect(@provider.current_resource.version).to eq("5.0.2")
57
57
  end
58
58
 
59
59
  it "should set the candidate version" do
60
- @provider.should_receive(:candidate_version).and_return("5.0.5")
60
+ expect(@provider).to receive(:candidate_version).and_return("5.0.5")
61
61
  @provider.load_current_resource
62
- @provider.instance_variable_get(:"@candidate_version").should == "5.0.5"
62
+ expect(@provider.instance_variable_get(:"@candidate_version")).to eq("5.0.5")
63
63
  end
64
64
  end
65
65
 
66
66
 
67
67
  describe "determining current installed version" do
68
68
  before(:each) do
69
- @provider.stub(:supports_pkgng?)
70
- @pkg_info = OpenStruct.new(:stdout => "zsh-3.1.7\n")
69
+ allow(@provider).to receive(:supports_pkgng?)
70
+ @pkg_info = OpenStruct.new(:stdout => "zsh-3.1.7\nVersion : 3.1.7\n")
71
71
  end
72
72
 
73
73
  it "should query pkg database" do
74
- @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info)
75
- @provider.current_installed_version.should == "3.1.7"
74
+ expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info)
75
+ expect(@provider.current_installed_version).to eq("3.1.7")
76
76
  end
77
77
  end
78
78
 
@@ -80,20 +80,20 @@ describe Chef::Provider::Package::Freebsd::Port do
80
80
  describe "determining candidate version" do
81
81
  it "should query repository" do
82
82
  pkg_query = OpenStruct.new(:stdout => "5.0.5\n", :exitstatus => 0)
83
- @provider.should_receive(:shell_out!).with("pkg rquery '%v' zsh", :env => nil).and_return(pkg_query)
84
- @provider.candidate_version.should == "5.0.5"
83
+ expect(@provider).to receive(:shell_out!).with("pkg rquery '%v' zsh", :env => nil).and_return(pkg_query)
84
+ expect(@provider.candidate_version).to eq("5.0.5")
85
85
  end
86
86
 
87
87
  it "should query specified repository when given option" do
88
88
  @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration.
89
89
  pkg_query = OpenStruct.new(:stdout => "5.0.3\n", :exitstatus => 0)
90
- @provider.should_receive(:shell_out!).with("pkg rquery -r LocalMirror '%v' zsh", :env => nil).and_return(pkg_query)
91
- @provider.candidate_version.should == "5.0.3"
90
+ expect(@provider).to receive(:shell_out!).with("pkg rquery -r LocalMirror '%v' zsh", :env => nil).and_return(pkg_query)
91
+ expect(@provider.candidate_version).to eq("5.0.3")
92
92
  end
93
93
 
94
94
  it "should return candidate version from file when given a file" do
95
95
  @provider.new_resource.source("/nas/pkg/repo/zsh-5.0.1.txz")
96
- @provider.candidate_version.should == "5.0.1"
96
+ expect(@provider.candidate_version).to eq("5.0.1")
97
97
  end
98
98
  end
99
99
 
@@ -105,7 +105,7 @@ describe Chef::Provider::Package::Freebsd::Port do
105
105
 
106
106
  it "should handle package source from file" do
107
107
  @provider.new_resource.source("/nas/pkg/repo/zsh-5.0.1.txz")
108
- @provider.should_receive(:shell_out!).
108
+ expect(@provider).to receive(:shell_out!).
109
109
  with("pkg add /nas/pkg/repo/zsh-5.0.1.txz", :env => { 'LC_ALL' => nil }).
110
110
  and_return(@install_result)
111
111
  @provider.install_package("zsh", "5.0.1")
@@ -113,21 +113,21 @@ describe Chef::Provider::Package::Freebsd::Port do
113
113
 
114
114
  it "should handle package source over ftp or http" do
115
115
  @provider.new_resource.source("http://repo.example.com/zsh-5.0.1.txz")
116
- @provider.should_receive(:shell_out!).
116
+ expect(@provider).to receive(:shell_out!).
117
117
  with("pkg add http://repo.example.com/zsh-5.0.1.txz", :env => { 'LC_ALL' => nil }).
118
118
  and_return(@install_result)
119
119
  @provider.install_package("zsh", "5.0.1")
120
120
  end
121
121
 
122
122
  it "should handle a package name" do
123
- @provider.should_receive(:shell_out!).
123
+ expect(@provider).to receive(:shell_out!).
124
124
  with("pkg install -y zsh", :env => { 'LC_ALL' => nil }).and_return(@install_result)
125
125
  @provider.install_package("zsh", "5.0.1")
126
126
  end
127
127
 
128
128
  it "should handle a package name with a specified repo" do
129
129
  @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration.
130
- @provider.should_receive(:shell_out!).
130
+ expect(@provider).to receive(:shell_out!).
131
131
  with("pkg install -y -r LocalMirror zsh", :env => { 'LC_ALL' => nil }).and_return(@install_result)
132
132
  @provider.install_package("zsh", "5.0.1")
133
133
  end
@@ -140,14 +140,14 @@ describe Chef::Provider::Package::Freebsd::Port do
140
140
  end
141
141
 
142
142
  it "should call pkg delete" do
143
- @provider.should_receive(:shell_out!).
143
+ expect(@provider).to receive(:shell_out!).
144
144
  with("pkg delete -y zsh-5.0.1", :env => nil).and_return(@install_result)
145
145
  @provider.remove_package("zsh", "5.0.1")
146
146
  end
147
147
 
148
148
  it "should not include repo option in pkg delete" do
149
149
  @provider.new_resource.options('-r LocalMirror') # This requires LocalMirror repo configuration.
150
- @provider.should_receive(:shell_out!).
150
+ expect(@provider).to receive(:shell_out!).
151
151
  with("pkg delete -y zsh-5.0.1", :env => nil).and_return(@install_result)
152
152
  @provider.remove_package("zsh", "5.0.1")
153
153
  end
@@ -26,63 +26,73 @@ describe Chef::Provider::Package::Freebsd::Port do
26
26
  @events = Chef::EventDispatch::Dispatcher.new
27
27
  @run_context = Chef::RunContext.new(@node, {}, @events)
28
28
 
29
- @new_resource = Chef::Resource::Package.new("zsh")
29
+ @new_resource = Chef::Resource::FreebsdPackage.new("zsh", @run_context)
30
30
  @provider = Chef::Provider::Package::Freebsd::Port.new(@new_resource, @run_context)
31
31
  end
32
32
 
33
33
 
34
34
  describe "initialization" do
35
35
  it "should create a current resource with the name of the new resource" do
36
- @provider.current_resource.is_a?(Chef::Resource::Package).should be_true
37
- @provider.current_resource.name.should == 'zsh'
36
+ expect(@provider.current_resource.is_a?(Chef::Resource::Package)).to be_true
37
+ expect(@provider.current_resource.name).to eq('zsh')
38
38
  end
39
39
  end
40
40
 
41
41
 
42
42
  describe "loading current resource" do
43
43
  before(:each) do
44
- @provider.stub(:current_installed_version)
45
- @provider.stub(:candidate_version)
44
+ allow(@provider).to receive(:current_installed_version)
45
+ allow(@provider).to receive(:candidate_version)
46
46
  end
47
47
 
48
48
  it "should set the package name" do
49
49
  @provider.load_current_resource
50
- @provider.current_resource.package_name.should == "zsh"
50
+ expect(@provider.current_resource.package_name).to eq("zsh")
51
51
  end
52
52
 
53
53
  it "should set the current version" do
54
- @provider.should_receive(:current_installed_version).and_return("5.0.2")
54
+ expect(@provider).to receive(:current_installed_version).and_return("5.0.2")
55
55
  @provider.load_current_resource
56
- @provider.current_resource.version.should == "5.0.2"
56
+ expect(@provider.current_resource.version).to eq("5.0.2")
57
57
  end
58
58
 
59
59
  it "should set the candidate version" do
60
- @provider.should_receive(:candidate_version).and_return("5.0.5")
60
+ expect(@provider).to receive(:candidate_version).and_return("5.0.5")
61
61
  @provider.load_current_resource
62
- @provider.instance_variable_get(:"@candidate_version").should == "5.0.5"
62
+ expect(@provider.instance_variable_get(:"@candidate_version")).to eq("5.0.5")
63
63
  end
64
64
  end
65
65
 
66
66
 
67
67
  describe "determining current installed version" do
68
68
  before(:each) do
69
- @provider.stub(:supports_pkgng?)
70
69
  @pkg_info = OpenStruct.new(:stdout => "zsh-3.1.7\n")
71
70
  end
72
71
 
73
72
  it "should check 'pkg_info' if system uses pkg_* tools" do
74
- @provider.should_receive(:supports_pkgng?).and_return(false)
75
- @provider.should_receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(@pkg_info)
76
- @provider.current_installed_version.should == "3.1.7"
73
+ allow(@new_resource).to receive(:supports_pkgng?)
74
+ expect(@new_resource).to receive(:supports_pkgng?).and_return(false)
75
+ expect(@provider).to receive(:shell_out!).with('pkg_info -E "zsh*"', :env => nil, :returns => [0,1]).and_return(@pkg_info)
76
+ expect(@provider.current_installed_version).to eq("3.1.7")
77
77
  end
78
78
 
79
- it "should check 'pkg info' if system uses pkgng" do
80
- @provider.should_receive(:supports_pkgng?).and_return(true)
81
- @provider.should_receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info)
82
- @provider.current_installed_version.should == "3.1.7"
79
+ it "should check 'pkg info' if make supports WITH_PKGNG if freebsd version is < 1000017" do
80
+ pkg_enabled = OpenStruct.new(:stdout => "yes\n")
81
+ [1000016, 1000000, 901503, 902506, 802511].each do |__freebsd_version|
82
+ @node.automatic_attrs[:os_version] = __freebsd_version
83
+ expect(@new_resource).to receive(:shell_out!).with('make -V WITH_PKGNG', :env => nil).and_return(pkg_enabled)
84
+ expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info)
85
+ expect(@provider.current_installed_version).to eq("3.1.7")
86
+ end
83
87
  end
84
- end
85
88
 
89
+ it "should check 'pkg info' if the freebsd version is greater than or equal to 1000017" do
90
+ __freebsd_version = 1000017
91
+ @node.automatic_attrs[:os_version] = __freebsd_version
92
+ expect(@provider).to receive(:shell_out!).with('pkg info "zsh"', :env => nil, :returns => [0,70]).and_return(@pkg_info)
93
+ expect(@provider.current_installed_version).to eq("3.1.7")
94
+ end
95
+ end
86
96
 
87
97
  describe "determining candidate version" do
88
98
  before(:each) do
@@ -90,15 +100,15 @@ describe Chef::Provider::Package::Freebsd::Port do
90
100
  end
91
101
 
92
102
  it "should return candidate version if port exists" do
93
- ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(true)
94
- @provider.stub(:port_dir).and_return('/usr/ports/shells/zsh')
95
- @provider.should_receive(:shell_out!).with("make -V PORTVERSION", :cwd => "/usr/ports/shells/zsh", :env => nil, :returns => [0,1]).
103
+ allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(true)
104
+ allow(@provider).to receive(:port_dir).and_return('/usr/ports/shells/zsh')
105
+ expect(@provider).to receive(:shell_out!).with("make -V PORTVERSION", :cwd => "/usr/ports/shells/zsh", :env => nil, :returns => [0,1]).
96
106
  and_return(@port_version)
97
- @provider.candidate_version.should == "5.0.5"
107
+ expect(@provider.candidate_version).to eq("5.0.5")
98
108
  end
99
109
 
100
110
  it "should raise exception if ports tree not found" do
101
- ::File.stub(:exist?).with('/usr/ports/Makefile').and_return(false)
111
+ allow(::File).to receive(:exist?).with('/usr/ports/Makefile').and_return(false)
102
112
  expect { @provider.candidate_version }.to raise_error(Chef::Exceptions::Package, "Ports collection could not be found")
103
113
  end
104
114
  end
@@ -106,24 +116,24 @@ describe Chef::Provider::Package::Freebsd::Port do
106
116
 
107
117
  describe "determining port directory" do
108
118
  it "should return name if package name is absolute path" do
109
- @provider.new_resource.stub(:package_name).and_return("/var/ports/shells/zsh")
110
- @provider.port_dir.should == "/var/ports/shells/zsh"
119
+ allow(@provider.new_resource).to receive(:package_name).and_return("/var/ports/shells/zsh")
120
+ expect(@provider.port_dir).to eq("/var/ports/shells/zsh")
111
121
  end
112
122
 
113
123
  it "should return full ports path given package name and category" do
114
- @provider.new_resource.stub(:package_name).and_return("shells/zsh")
115
- @provider.port_dir.should == "/usr/ports/shells/zsh"
124
+ allow(@provider.new_resource).to receive(:package_name).and_return("shells/zsh")
125
+ expect(@provider.port_dir).to eq("/usr/ports/shells/zsh")
116
126
  end
117
127
 
118
128
  it "should query system for path given just a name" do
119
129
  whereis = OpenStruct.new(:stdout => "zsh: /usr/ports/shells/zsh\n")
120
- @provider.should_receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis)
121
- @provider.port_dir.should == "/usr/ports/shells/zsh"
130
+ expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis)
131
+ expect(@provider.port_dir).to eq("/usr/ports/shells/zsh")
122
132
  end
123
133
 
124
134
  it "should raise exception if not found" do
125
135
  whereis = OpenStruct.new(:stdout => "zsh:\n")
126
- @provider.should_receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis)
136
+ expect(@provider).to receive(:shell_out!).with("whereis -s zsh", :env => nil).and_return(whereis)
127
137
  expect { @provider.port_dir }.to raise_error(Chef::Exceptions::Package, "Could not find port with the name zsh")
128
138
  end
129
139
  end
@@ -135,8 +145,8 @@ describe Chef::Provider::Package::Freebsd::Port do
135
145
  end
136
146
 
137
147
  it "should run make install in port directory" do
138
- @provider.stub(:port_dir).and_return("/usr/ports/shells/zsh")
139
- @provider.should_receive(:shell_out!).
148
+ allow(@provider).to receive(:port_dir).and_return("/usr/ports/shells/zsh")
149
+ expect(@provider).to receive(:shell_out!).
140
150
  with("make -DBATCH install clean", :timeout => 1800, :cwd => "/usr/ports/shells/zsh", :env => nil).
141
151
  and_return(@install_result)
142
152
  @provider.install_package("zsh", "5.0.5")
@@ -150,8 +160,8 @@ describe Chef::Provider::Package::Freebsd::Port do
150
160
  end
151
161
 
152
162
  it "should run make deinstall in port directory" do
153
- @provider.stub(:port_dir).and_return("/usr/ports/shells/zsh")
154
- @provider.should_receive(:shell_out!).
163
+ allow(@provider).to receive(:port_dir).and_return("/usr/ports/shells/zsh")
164
+ expect(@provider).to receive(:shell_out!).
155
165
  with("make deinstall", :timeout => 300, :cwd => "/usr/ports/shells/zsh", :env => nil).
156
166
  and_return(@install_result)
157
167
  @provider.remove_package("zsh", "5.0.5")
@@ -0,0 +1,266 @@
1
+ #
2
+ # Author:: Joshua Timberman (<joshua@getchef.com>)
3
+ # Copyright (c) 2014, Chef Software, Inc. <legal@getchef.com>
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Chef::Provider::Package::Homebrew do
21
+ let(:node) { Chef::Node.new }
22
+ let(:events) { double('Chef::Events').as_null_object }
23
+ let(:run_context) { double('Chef::RunContext', node: node, events: events) }
24
+ let(:new_resource) { Chef::Resource::HomebrewPackage.new('emacs') }
25
+ let(:current_resource) { Chef::Resource::HomebrewPackage.new('emacs')}
26
+
27
+ let(:provider) do
28
+ Chef::Provider::Package::Homebrew.new(new_resource, run_context)
29
+ end
30
+
31
+ let(:homebrew_uid) { 1001 }
32
+
33
+ let(:uninstalled_brew_info) do
34
+ {
35
+ 'name' => 'emacs',
36
+ 'homepage' => 'http://www.gnu.org/software/emacs',
37
+ 'versions' => {
38
+ 'stable' => '24.3',
39
+ 'bottle' => false,
40
+ 'devel' => nil,
41
+ 'head' => nil
42
+ },
43
+ 'revision' => 0,
44
+ 'installed' => [],
45
+ 'linked_keg' => nil,
46
+ 'keg_only' => nil,
47
+ 'dependencies' => [],
48
+ 'conflicts_with' => [],
49
+ 'caveats' => nil,
50
+ 'options' => []
51
+ }
52
+ end
53
+
54
+ let(:installed_brew_info) do
55
+ {
56
+ 'name' => 'emacs',
57
+ 'homepage' => 'http://www.gnu.org/software/emacs/',
58
+ 'versions' => {
59
+ 'stable' => '24.3',
60
+ 'bottle' => false,
61
+ 'devel' => nil,
62
+ 'head' => 'HEAD'
63
+ },
64
+ 'revision' => 0,
65
+ 'installed' => [{ 'version' => '24.3' }],
66
+ 'linked_keg' => '24.3',
67
+ 'keg_only' => nil,
68
+ 'dependencies' => [],
69
+ 'conflicts_with' => [],
70
+ 'caveats' => '',
71
+ 'options' => []
72
+ }
73
+ end
74
+
75
+ let(:keg_only_brew_info) do
76
+ {
77
+ 'name' => 'emacs-kegger',
78
+ 'homepage' => 'http://www.gnu.org/software/emacs/',
79
+ 'versions' => {
80
+ 'stable' => '24.3-keggy',
81
+ 'bottle' => false,
82
+ 'devel' => nil,
83
+ 'head' => 'HEAD'
84
+ },
85
+ 'revision' => 0,
86
+ 'installed' => [{ 'version' => '24.3-keggy' }],
87
+ 'linked_keg' => nil,
88
+ 'keg_only' => true,
89
+ 'dependencies' => [],
90
+ 'conflicts_with' => [],
91
+ 'caveats' => '',
92
+ 'options' => []
93
+ }
94
+ end
95
+
96
+ before(:each) do
97
+
98
+ end
99
+
100
+ describe 'load_current_resource' do
101
+ before(:each) do
102
+ allow(provider).to receive(:current_installed_version).and_return(nil)
103
+ allow(provider).to receive(:candidate_version).and_return('24.3')
104
+ end
105
+
106
+ it 'creates a current resource with the name of the new resource' do
107
+ provider.load_current_resource
108
+ expect(provider.current_resource).to be_a(Chef::Resource::Package)
109
+ expect(provider.current_resource.name).to eql('emacs')
110
+ end
111
+
112
+ it 'creates a current resource with the version if the package is installed' do
113
+ expect(provider).to receive(:current_installed_version).and_return('24.3')
114
+ provider.load_current_resource
115
+ expect(provider.current_resource.version).to eql('24.3')
116
+ end
117
+
118
+ it 'creates a current resource with a nil version if the package is not installed' do
119
+ provider.load_current_resource
120
+ expect(provider.current_resource.version).to be_nil
121
+ end
122
+
123
+ it 'sets a candidate version if one exists' do
124
+ provider.load_current_resource
125
+ expect(provider.candidate_version).to eql('24.3')
126
+ end
127
+ end
128
+
129
+ describe 'current_installed_version' do
130
+ it 'returns the latest version from brew info if the package is keg only' do
131
+ allow(provider).to receive(:brew_info).and_return(keg_only_brew_info)
132
+ expect(provider.current_installed_version).to eql('24.3-keggy')
133
+ end
134
+
135
+ it 'returns the linked keg version if the package is not keg only' do
136
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
137
+ expect(provider.current_installed_version).to eql('24.3')
138
+ end
139
+
140
+ it 'returns nil if the package is not installed' do
141
+ allow(provider).to receive(:brew_info).and_return(uninstalled_brew_info)
142
+ expect(provider.current_installed_version).to be_nil
143
+ end
144
+ end
145
+
146
+ describe 'brew' do
147
+ before do
148
+ expect(provider).to receive(:find_homebrew_uid).and_return(homebrew_uid)
149
+ expect(Etc).to receive(:getpwuid).with(homebrew_uid).and_return(OpenStruct.new(:name => "name", :dir => "/"))
150
+ end
151
+
152
+ it 'passes a single to the brew command and return stdout' do
153
+ allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(:stdout => 'zombo'))
154
+ expect(provider.brew).to eql('zombo')
155
+ end
156
+
157
+ it 'takes multiple arguments as an array' do
158
+ allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(:stdout => 'homestarrunner'))
159
+ expect(provider.brew('info', 'opts', 'bananas')).to eql('homestarrunner')
160
+ end
161
+
162
+ context "when new_resource is Package" do
163
+ let(:new_resource) { Chef::Resource::Package.new('emacs') }
164
+
165
+ it "does not try to read homebrew_user from Package, which does not have it" do
166
+ allow(provider).to receive(:shell_out!).and_return(OpenStruct.new(:stdout => 'zombo'))
167
+ expect(provider.brew).to eql('zombo')
168
+ end
169
+ end
170
+ end
171
+
172
+ context 'when testing actions' do
173
+ before(:each) do
174
+ provider.current_resource = current_resource
175
+ end
176
+
177
+ describe 'install_package' do
178
+ before(:each) do
179
+ allow(provider).to receive(:candidate_version).and_return('24.3')
180
+ end
181
+
182
+ it 'installs the named package with brew install' do
183
+ allow(provider.new_resource).to receive(:version).and_return('24.3')
184
+ allow(provider.current_resource).to receive(:version).and_return(nil)
185
+ allow(provider).to receive(:brew_info).and_return(uninstalled_brew_info)
186
+ expect(provider).to receive(:get_response_from_command).with('brew install emacs')
187
+ provider.install_package('emacs', '24.3')
188
+ end
189
+
190
+ it 'does not do anything if the package is installed' do
191
+ allow(provider.current_resource).to receive(:version).and_return('24.3')
192
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
193
+ expect(provider).not_to receive(:get_response_from_command)
194
+ provider.install_package('emacs', '24.3')
195
+ end
196
+
197
+ it 'uses options to the brew command if specified' do
198
+ allow(provider.new_resource).to receive(:options).and_return('--cocoa')
199
+ allow(provider.current_resource).to receive(:version).and_return('24.3')
200
+ allow(provider).to receive(:get_response_from_command).with('brew install --cocoa emacs')
201
+ provider.install_package('emacs', '24.3')
202
+ end
203
+ end
204
+
205
+ describe 'upgrade_package' do
206
+ it 'uses brew upgrade to upgrade the package if it is installed' do
207
+ allow(provider.current_resource).to receive(:version).and_return('24')
208
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
209
+ expect(provider).to receive(:get_response_from_command).with('brew upgrade emacs')
210
+ provider.upgrade_package('emacs', '24.3')
211
+ end
212
+
213
+ it 'does not do anything if the package version is already installed' do
214
+ allow(provider.current_resource).to receive(:version).and_return('24.3')
215
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
216
+ expect(provider).not_to receive(:get_response_from_command)
217
+ provider.install_package('emacs', '24.3')
218
+ end
219
+
220
+ it 'uses brew install to install the package if it is not installed' do
221
+ allow(provider.current_resource).to receive(:version).and_return(nil)
222
+ allow(provider).to receive(:brew_info).and_return(uninstalled_brew_info)
223
+ expect(provider).to receive(:get_response_from_command).with('brew install emacs')
224
+ provider.upgrade_package('emacs', '24.3')
225
+ end
226
+
227
+ it 'uses options to the brew command if specified' do
228
+ allow(provider.current_resource).to receive(:version).and_return('24')
229
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
230
+ allow(provider.new_resource).to receive(:options).and_return('--cocoa')
231
+ expect(provider).to receive(:get_response_from_command).with('brew upgrade --cocoa emacs')
232
+ provider.upgrade_package('emacs', '24.3')
233
+ end
234
+ end
235
+
236
+ describe 'remove_package' do
237
+ it 'uninstalls the package with brew uninstall' do
238
+ allow(provider.current_resource).to receive(:version).and_return('24.3')
239
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
240
+ expect(provider).to receive(:get_response_from_command).with('brew uninstall emacs')
241
+ provider.remove_package('emacs', '24.3')
242
+ end
243
+
244
+ it 'does not do anything if the package is not installed' do
245
+ allow(provider).to receive(:brew_info).and_return(uninstalled_brew_info)
246
+ expect(provider).not_to receive(:get_response_from_command)
247
+ provider.remove_package('emacs', '24.3')
248
+ end
249
+ end
250
+
251
+ describe 'purge_package' do
252
+ it 'uninstalls the package with brew uninstall --force' do
253
+ allow(provider.current_resource).to receive(:version).and_return('24.3')
254
+ allow(provider).to receive(:brew_info).and_return(installed_brew_info)
255
+ expect(provider).to receive(:get_response_from_command).with('brew uninstall --force emacs')
256
+ provider.purge_package('emacs', '24.3')
257
+ end
258
+
259
+ it 'does not do anything if the package is not installed' do
260
+ allow(provider).to receive(:brew_info).and_return(uninstalled_brew_info)
261
+ expect(provider).not_to receive(:get_response_from_command)
262
+ provider.purge_package('emacs', '24.3')
263
+ end
264
+ end
265
+ end
266
+ end