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
@@ -48,31 +48,31 @@ describe Chef::Provider::Directory do
48
48
 
49
49
  describe "scanning file security metadata on unix" do
50
50
  before do
51
- Chef::Platform.stub(:windows?).and_return(false)
51
+ allow(Chef::Platform).to receive(:windows?).and_return(false)
52
52
  end
53
53
  let(:mock_stat) do
54
54
  cstats = double("stats")
55
- cstats.stub(:uid).and_return(500)
56
- cstats.stub(:gid).and_return(500)
57
- cstats.stub(:mode).and_return(0755)
55
+ allow(cstats).to receive(:uid).and_return(500)
56
+ allow(cstats).to receive(:gid).and_return(500)
57
+ allow(cstats).to receive(:mode).and_return(0755)
58
58
  cstats
59
59
  end
60
60
 
61
61
  it "describes the access mode as a String of octal integers" do
62
- File.stub(:exists?).and_return(true)
63
- File.should_receive(:stat).and_return(mock_stat)
62
+ allow(File).to receive(:exists?).and_return(true)
63
+ expect(File).to receive(:stat).and_return(mock_stat)
64
64
  @directory.load_current_resource
65
- @directory.current_resource.mode.should == "0755"
65
+ expect(@directory.current_resource.mode).to eq("0755")
66
66
  end
67
67
 
68
68
  context "when user and group are specified with UID/GID" do
69
69
  it "describes the current owner and group as UID and GID" do
70
- File.stub(:exists?).and_return(true)
71
- File.should_receive(:stat).and_return(mock_stat)
70
+ allow(File).to receive(:exists?).and_return(true)
71
+ expect(File).to receive(:stat).and_return(mock_stat)
72
72
  @directory.load_current_resource
73
- @directory.current_resource.path.should eql(@new_resource.path)
74
- @directory.current_resource.owner.should eql(500)
75
- @directory.current_resource.group.should eql(500)
73
+ expect(@directory.current_resource.path).to eql(@new_resource.path)
74
+ expect(@directory.current_resource.owner).to eql(500)
75
+ expect(@directory.current_resource.group).to eql(500)
76
76
  end
77
77
  end
78
78
 
@@ -86,20 +86,20 @@ describe Chef::Provider::Directory do
86
86
  it "should create a new directory on create, setting updated to true", :unix_only do
87
87
  @new_resource.path "/tmp/foo"
88
88
 
89
- File.should_receive(:exists?).at_least(:once).and_return(false)
90
- File.should_receive(:directory?).with("/tmp").and_return(true)
91
- Dir.should_receive(:mkdir).with(@new_resource.path).once.and_return(true)
89
+ expect(File).to receive(:exists?).at_least(:once).and_return(false)
90
+ expect(File).to receive(:directory?).with("/tmp").and_return(true)
91
+ expect(Dir).to receive(:mkdir).with(@new_resource.path).once.and_return(true)
92
92
 
93
- @directory.should_receive(:do_acl_changes)
94
- @directory.stub(:do_selinux)
93
+ expect(@directory).to receive(:do_acl_changes)
94
+ allow(@directory).to receive(:do_selinux)
95
95
  @directory.run_action(:create)
96
- @directory.new_resource.should be_updated
96
+ expect(@directory.new_resource).to be_updated
97
97
  end
98
98
 
99
99
  it "should raise an exception if the parent directory does not exist and recursive is false" do
100
100
  @new_resource.path "/tmp/some/dir"
101
101
  @new_resource.recursive false
102
- lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
102
+ expect { @directory.run_action(:create) }.to raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
103
103
  end
104
104
 
105
105
  # Unix only for now. While file security attribute reporting for windows is
@@ -108,26 +108,26 @@ describe Chef::Provider::Directory do
108
108
  it "should create a new directory when parent directory does not exist if recursive is true and permissions are correct", :unix_only do
109
109
  @new_resource.path "/path/to/dir"
110
110
  @new_resource.recursive true
111
- File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
111
+ expect(File).to receive(:exists?).with(@new_resource.path).ordered.and_return(false)
112
112
 
113
- File.should_receive(:exists?).with('/path/to').ordered.and_return(false)
114
- File.should_receive(:exists?).with('/path').ordered.and_return(true)
115
- File.should_receive(:writable?).with('/path').ordered.and_return(true)
116
- File.should_receive(:exists?).with(@new_resource.path).ordered.and_return(false)
113
+ expect(File).to receive(:exists?).with('/path/to').ordered.and_return(false)
114
+ expect(File).to receive(:exists?).with('/path').ordered.and_return(true)
115
+ expect(File).to receive(:writable?).with('/path').ordered.and_return(true)
116
+ expect(File).to receive(:exists?).with(@new_resource.path).ordered.and_return(false)
117
117
 
118
- FileUtils.should_receive(:mkdir_p).with(@new_resource.path).and_return(true)
119
- @directory.should_receive(:do_acl_changes)
120
- @directory.stub(:do_selinux)
118
+ expect(FileUtils).to receive(:mkdir_p).with(@new_resource.path).and_return(true)
119
+ expect(@directory).to receive(:do_acl_changes)
120
+ allow(@directory).to receive(:do_selinux)
121
121
  @directory.run_action(:create)
122
- @new_resource.should be_updated
122
+ expect(@new_resource).to be_updated
123
123
  end
124
124
 
125
125
 
126
126
  it "should raise an error when creating a directory when parent directory is a file" do
127
- File.should_receive(:directory?).and_return(false)
128
- Dir.should_not_receive(:mkdir).with(@new_resource.path)
129
- lambda { @directory.run_action(:create) }.should raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
130
- @directory.new_resource.should_not be_updated
127
+ expect(File).to receive(:directory?).and_return(false)
128
+ expect(Dir).not_to receive(:mkdir).with(@new_resource.path)
129
+ expect { @directory.run_action(:create) }.to raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
130
+ expect(@directory.new_resource).not_to be_updated
131
131
  end
132
132
 
133
133
  # Unix only for now. While file security attribute reporting for windows is
@@ -136,53 +136,53 @@ describe Chef::Provider::Directory do
136
136
  it "should not create the directory if it already exists", :unix_only do
137
137
  stub_file_cstats
138
138
  @new_resource.path "/tmp/foo"
139
- File.should_receive(:directory?).at_least(:once).and_return(true)
140
- File.should_receive(:writable?).with("/tmp").and_return(true)
141
- File.should_receive(:exists?).at_least(:once).and_return(true)
142
- Dir.should_not_receive(:mkdir).with(@new_resource.path)
143
- @directory.should_receive(:do_acl_changes)
139
+ expect(File).to receive(:directory?).at_least(:once).and_return(true)
140
+ expect(File).to receive(:writable?).with("/tmp").and_return(true)
141
+ expect(File).to receive(:exists?).at_least(:once).and_return(true)
142
+ expect(Dir).not_to receive(:mkdir).with(@new_resource.path)
143
+ expect(@directory).to receive(:do_acl_changes)
144
144
  @directory.run_action(:create)
145
145
  end
146
146
 
147
147
  it "should delete the directory if it exists, and is writable with action_delete" do
148
- File.should_receive(:directory?).and_return(true)
149
- File.should_receive(:writable?).once.and_return(true)
150
- Dir.should_receive(:delete).with(@new_resource.path).once.and_return(true)
148
+ expect(File).to receive(:directory?).and_return(true)
149
+ expect(File).to receive(:writable?).once.and_return(true)
150
+ expect(Dir).to receive(:delete).with(@new_resource.path).once.and_return(true)
151
151
  @directory.run_action(:delete)
152
152
  end
153
153
 
154
154
  it "should raise an exception if it cannot delete the directory due to bad permissions" do
155
- File.stub(:exists?).and_return(true)
156
- File.stub(:writable?).and_return(false)
157
- lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)
155
+ allow(File).to receive(:exists?).and_return(true)
156
+ allow(File).to receive(:writable?).and_return(false)
157
+ expect { @directory.run_action(:delete) }.to raise_error(RuntimeError)
158
158
  end
159
159
 
160
160
  it "should take no action when deleting a target directory that does not exist" do
161
161
  @new_resource.path "/an/invalid/path"
162
- File.stub(:exists?).and_return(false)
163
- Dir.should_not_receive(:delete).with(@new_resource.path)
162
+ allow(File).to receive(:exists?).and_return(false)
163
+ expect(Dir).not_to receive(:delete).with(@new_resource.path)
164
164
  @directory.run_action(:delete)
165
- @directory.new_resource.should_not be_updated
165
+ expect(@directory.new_resource).not_to be_updated
166
166
  end
167
167
 
168
168
  it "should raise an exception when deleting a directory when target directory is a file" do
169
169
  stub_file_cstats
170
170
  @new_resource.path "/an/invalid/path"
171
- File.stub(:exists?).and_return(true)
172
- File.should_receive(:directory?).and_return(false)
173
- Dir.should_not_receive(:delete).with(@new_resource.path)
174
- lambda { @directory.run_action(:delete) }.should raise_error(RuntimeError)
175
- @directory.new_resource.should_not be_updated
171
+ allow(File).to receive(:exists?).and_return(true)
172
+ expect(File).to receive(:directory?).and_return(false)
173
+ expect(Dir).not_to receive(:delete).with(@new_resource.path)
174
+ expect { @directory.run_action(:delete) }.to raise_error(RuntimeError)
175
+ expect(@directory.new_resource).not_to be_updated
176
176
  end
177
177
 
178
178
  def stub_file_cstats
179
179
  cstats = double("stats")
180
- cstats.stub(:uid).and_return(500)
181
- cstats.stub(:gid).and_return(500)
182
- cstats.stub(:mode).and_return(0755)
180
+ allow(cstats).to receive(:uid).and_return(500)
181
+ allow(cstats).to receive(:gid).and_return(500)
182
+ allow(cstats).to receive(:mode).and_return(0755)
183
183
  # File.stat is called in:
184
184
  # - Chef::Provider::File.load_current_resource_attrs
185
185
  # - Chef::ScanAccessControl via Chef::Provider::File.setup_acl
186
- File.stub(:stat).and_return(cstats)
186
+ allow(File).to receive(:stat).and_return(cstats)
187
187
  end
188
188
  end
@@ -0,0 +1,174 @@
1
+ #
2
+ # Author:: Jay Mundrawala (<jdm@getchef.com>)
3
+ #
4
+ # Copyright:: Copyright (c) 2014 Chef Software, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require 'chef'
21
+ require 'chef/util/dsc/resource_info'
22
+ require 'spec_helper'
23
+
24
+ describe Chef::Provider::DscScript do
25
+ context 'when DSC is available' do
26
+ let (:node) {
27
+ node = Chef::Node.new
28
+ node.automatic[:languages][:powershell][:version] = '4.0'
29
+ node
30
+ }
31
+ let (:events) { Chef::EventDispatch::Dispatcher.new }
32
+ let (:run_context) { Chef::RunContext.new(node, {}, events) }
33
+ let (:resource) { Chef::Resource::DscScript.new("script", run_context) }
34
+ let (:provider) do
35
+ Chef::Provider::DscScript.new(resource, run_context)
36
+ end
37
+
38
+ describe '#load_current_resource' do
39
+ it "describes the resource as converged if there were 0 DSC resources" do
40
+ allow(provider).to receive(:run_configuration).with(:test).and_return([])
41
+ provider.load_current_resource
42
+ expect(provider.instance_variable_get('@resource_converged')).to be_true
43
+ end
44
+
45
+ it "describes the resource as not converged if there is 1 DSC resources that is converged" do
46
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resource', false, ['nothing will change something'])
47
+ allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info])
48
+ provider.load_current_resource
49
+ expect(provider.instance_variable_get('@resource_converged')).to be_true
50
+ end
51
+
52
+ it "describes the resource as not converged if there is 1 DSC resources that is not converged" do
53
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resource', true, ['will change something'])
54
+ allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info])
55
+ provider.load_current_resource
56
+ expect(provider.instance_variable_get('@resource_converged')).to be_false
57
+ end
58
+
59
+ it "describes the resource as not converged if there are any DSC resources that are not converged" do
60
+ dsc_resource_info1 = Chef::Util::DSC::ResourceInfo.new('resource', true, ['will change something'])
61
+ dsc_resource_info2 = Chef::Util::DSC::ResourceInfo.new('resource', false, ['nothing will change something'])
62
+
63
+ allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info1, dsc_resource_info2])
64
+ provider.load_current_resource
65
+ expect(provider.instance_variable_get('@resource_converged')).to be_false
66
+ end
67
+
68
+ it "describes the resource as converged if all DSC resources that are converged" do
69
+ dsc_resource_info1 = Chef::Util::DSC::ResourceInfo.new('resource', false, ['nothing will change something'])
70
+ dsc_resource_info2 = Chef::Util::DSC::ResourceInfo.new('resource', false, ['nothing will change something'])
71
+
72
+ allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info1, dsc_resource_info2])
73
+ provider.load_current_resource
74
+ expect(provider.instance_variable_get('@resource_converged')).to be_true
75
+ end
76
+ end
77
+
78
+ describe '#generate_configuration_document' do
79
+ # I think integration tests should cover these cases
80
+
81
+ it 'uses configuration_document_from_script_path when a dsc script file is given' do
82
+ allow(provider).to receive(:load_current_resource)
83
+ resource.command("path_to_script")
84
+ generator = double('Chef::Util::DSC::ConfigurationGenerator')
85
+ expect(generator).to receive(:configuration_document_from_script_path)
86
+ allow(Chef::Util::DSC::ConfigurationGenerator).to receive(:new).and_return(generator)
87
+ provider.send(:generate_configuration_document, 'tmp', nil)
88
+ end
89
+
90
+ it 'uses configuration_document_from_script_code when a the dsc resource is given' do
91
+ allow(provider).to receive(:load_current_resource)
92
+ resource.code("ImADSCResource{}")
93
+ generator = double('Chef::Util::DSC::ConfigurationGenerator')
94
+ expect(generator).to receive(:configuration_document_from_script_code)
95
+ allow(Chef::Util::DSC::ConfigurationGenerator).to receive(:new).and_return(generator)
96
+ provider.send(:generate_configuration_document, 'tmp', nil)
97
+ end
98
+
99
+ it 'should noop if neither code or command are provided' do
100
+ allow(provider).to receive(:load_current_resource)
101
+ generator = double('Chef::Util::DSC::ConfigurationGenerator')
102
+ expect(generator).to receive(:configuration_document_from_script_code).with('', anything(), anything())
103
+ allow(Chef::Util::DSC::ConfigurationGenerator).to receive(:new).and_return(generator)
104
+ provider.send(:generate_configuration_document, 'tmp', nil)
105
+ end
106
+ end
107
+
108
+ describe 'action_run' do
109
+ it 'should converge the script if it is not converged' do
110
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resource', true, ['will change something'])
111
+ allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info])
112
+ allow(provider).to receive(:run_configuration).with(:set)
113
+
114
+ provider.run_action(:run)
115
+ expect(resource).to be_updated
116
+ end
117
+
118
+ it 'should not converge if the script is already converged' do
119
+ allow(provider).to receive(:run_configuration).with(:test).and_return([])
120
+
121
+ provider.run_action(:run)
122
+ expect(resource).not_to be_updated
123
+ end
124
+ end
125
+
126
+ describe '#generate_description' do
127
+ it 'removes the resource name from the beginning of any log line from the LCM' do
128
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resourcename', true, ['resourcename doing something', 'lastline'])
129
+ provider.instance_variable_set('@dsc_resources_info', [dsc_resource_info])
130
+ expect(provider.send(:generate_description)[1]).to match(/converge DSC resource resourcename by doing something/)
131
+ end
132
+
133
+ it 'ignores the last line' do
134
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resourcename', true, ['resourcename doing something', 'lastline'])
135
+ provider.instance_variable_set('@dsc_resources_info', [dsc_resource_info])
136
+ expect(provider.send(:generate_description)[1]).not_to match(/lastline/)
137
+ end
138
+
139
+ it 'reports a dsc resource has not been changed if the LCM reported no change was required' do
140
+ dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resourcename', false, ['resourcename does nothing', 'lastline'])
141
+ provider.instance_variable_set('@dsc_resources_info', [dsc_resource_info])
142
+ expect(provider.send(:generate_description)[1]).to match(/converge DSC resource resourcename by doing nothing/)
143
+ end
144
+ end
145
+ end
146
+
147
+ context 'when Dsc is not available' do
148
+ let (:node) { Chef::Node.new }
149
+ let (:events) { Chef::EventDispatch::Dispatcher.new }
150
+ let (:run_context) { Chef::RunContext.new(node, {}, events) }
151
+ let (:resource) { Chef::Resource::DscScript.new('script', run_context) }
152
+ let (:provider) { Chef::Provider::DscScript.new(resource, run_context) }
153
+
154
+ describe 'action_run' do
155
+ ['1.0', '2.0', '3.0'].each do |version|
156
+ it "raises an exception for powershell version '#{version}'" do
157
+ node.automatic[:languages][:powershell][:version] = version
158
+
159
+ expect {
160
+ provider.run_action(:run)
161
+ }.to raise_error(Chef::Exceptions::NoProviderAvailable)
162
+ end
163
+ end
164
+
165
+ it 'raises an exception if Powershell is not present' do
166
+ expect {
167
+ provider.run_action(:run)
168
+ }.to raise_error(Chef::Exceptions::NoProviderAvailable)
169
+ end
170
+
171
+ end
172
+ end
173
+ end
174
+
@@ -19,49 +19,85 @@
19
19
  require 'spec_helper'
20
20
 
21
21
  describe Chef::Provider::Env::Windows, :windows_only do
22
- before do
23
- @node = Chef::Node.new
24
- @events = Chef::EventDispatch::Dispatcher.new
25
- @run_context = Chef::RunContext.new(@node, {}, @events)
26
- @new_resource = Chef::Resource::Env.new("CHEF_WINDOWS_ENV_TEST")
27
- @new_resource.value("foo")
28
- @provider = Chef::Provider::Env::Windows.new(@new_resource, @run_context)
29
- @provider.stub(:env_obj).and_return(double('null object').as_null_object)
30
- end
22
+ let(:node) { Chef::Node.new }
23
+ let(:events) {Chef::EventDispatch::Dispatcher.new }
24
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
31
25
 
32
- describe "action_create" do
33
- before do
34
- ENV.delete('CHEF_WINDOWS_ENV_TEST')
35
- @provider.key_exists = false
36
- end
26
+ context 'when environment variable is not PATH' do
27
+ let(:new_resource) {
28
+ new_resource = Chef::Resource::Env.new("CHEF_WINDOWS_ENV_TEST")
29
+ new_resource.value("foo")
30
+ new_resource
31
+ }
32
+ let(:provider) {
33
+ provider = Chef::Provider::Env::Windows.new(new_resource, run_context)
34
+ allow(provider).to receive(:env_obj).and_return(double('null object').as_null_object)
35
+ provider
36
+ }
37
37
 
38
- it "should update the ruby ENV object when it creates the key" do
39
- @provider.action_create
40
- expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql('foo')
41
- end
42
- end
38
+ describe "action_create" do
39
+ before do
40
+ ENV.delete('CHEF_WINDOWS_ENV_TEST')
41
+ provider.key_exists = false
42
+ end
43
43
 
44
- describe "action_modify" do
45
- before do
46
- ENV['CHEF_WINDOWS_ENV_TEST'] = 'foo'
44
+ it "should update the ruby ENV object when it creates the key" do
45
+ provider.action_create
46
+ expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql('foo')
47
+ end
47
48
  end
48
49
 
49
- it "should update the ruby ENV object when it updates the value" do
50
- @provider.should_receive(:compare_value).and_return(true)
51
- @new_resource.value("foobar")
52
- @provider.action_modify
53
- expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql('foobar')
50
+ describe "action_modify" do
51
+ before do
52
+ ENV['CHEF_WINDOWS_ENV_TEST'] = 'foo'
53
+ end
54
+
55
+ it "should update the ruby ENV object when it updates the value" do
56
+ expect(provider).to receive(:requires_modify_or_create?).and_return(true)
57
+ new_resource.value("foobar")
58
+ provider.action_modify
59
+ expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql('foobar')
60
+ end
61
+
62
+ describe "action_delete" do
63
+ before do
64
+ ENV['CHEF_WINDOWS_ENV_TEST'] = 'foo'
65
+ end
66
+
67
+ it "should update the ruby ENV object when it deletes the key" do
68
+ provider.action_delete
69
+ expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql(nil)
70
+ end
71
+ end
54
72
  end
55
73
  end
56
74
 
57
- describe "action_delete" do
58
- before do
59
- ENV['CHEF_WINDOWS_ENV_TEST'] = 'foo'
60
- end
75
+ context 'when environment is PATH' do
76
+ describe "for PATH" do
77
+ let(:system_root) {'%SystemRoot%'}
78
+ let(:system_root_value) { 'D:\Windows' }
79
+ let(:new_resource) {
80
+ new_resource = Chef::Resource::Env.new('PATH')
81
+ new_resource.value(system_root)
82
+ new_resource
83
+ }
84
+ let(:provider) {
85
+ provider = Chef::Provider::Env::Windows.new(new_resource, run_context)
86
+ allow(provider).to receive(:env_obj).and_return(double('null object').as_null_object)
87
+ provider
88
+ }
61
89
 
62
- it "should update the ruby ENV object when it deletes the key" do
63
- @provider.action_delete
64
- expect(ENV['CHEF_WINDOWS_ENV_TEST']).to eql(nil)
90
+ before do
91
+ stub_const('ENV', {'PATH' => ''})
92
+ end
93
+
94
+ it "replaces Windows system variables" do
95
+ expect(provider).to receive(:requires_modify_or_create?).and_return(true)
96
+ expect(provider).to receive(:expand_path).with(system_root).and_return(system_root_value)
97
+ provider.action_modify
98
+ expect(ENV['PATH']).to eql(system_root_value)
99
+ end
65
100
  end
101
+
66
102
  end
67
103
  end