chef 12.0.3 → 12.1.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (655) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +4 -1
  3. data/README.md +42 -18
  4. data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
  5. data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
  6. data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
  7. data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
  8. data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
  9. data/distro/common/html/_sources/knife_data_bag.txt +4 -4
  10. data/distro/common/html/_sources/knife_status.txt +1 -1
  11. data/distro/common/html/_static/searchtools.js +1 -1
  12. data/distro/common/html/ctl_chef_client.html +55 -7
  13. data/distro/common/html/ctl_chef_server.html +84 -41
  14. data/distro/common/html/ctl_chef_shell.html +45 -1
  15. data/distro/common/html/ctl_chef_solo.html +51 -5
  16. data/distro/common/html/index.html +2 -2
  17. data/distro/common/html/knife.html +1 -1
  18. data/distro/common/html/knife_bootstrap.html +30 -10
  19. data/distro/common/html/knife_cookbook_site.html +2 -0
  20. data/distro/common/html/knife_data_bag.html +4 -4
  21. data/distro/common/html/knife_node.html +2 -2
  22. data/distro/common/html/knife_raw.html +1 -1
  23. data/distro/common/html/knife_role.html +1 -1
  24. data/distro/common/html/knife_search.html +3 -3
  25. data/distro/common/html/knife_status.html +4 -0
  26. data/distro/common/html/searchindex.js +1 -1
  27. data/distro/common/man/man1/chef-shell.1 +72 -1
  28. data/distro/common/man/man1/knife-bootstrap.1 +71 -63
  29. data/distro/common/man/man1/knife-client.1 +1 -1
  30. data/distro/common/man/man1/knife-configure.1 +1 -1
  31. data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
  32. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  33. data/distro/common/man/man1/knife-data-bag.1 +5 -5
  34. data/distro/common/man/man1/knife-delete.1 +1 -1
  35. data/distro/common/man/man1/knife-deps.1 +1 -1
  36. data/distro/common/man/man1/knife-diff.1 +1 -1
  37. data/distro/common/man/man1/knife-download.1 +1 -1
  38. data/distro/common/man/man1/knife-edit.1 +1 -1
  39. data/distro/common/man/man1/knife-environment.1 +1 -1
  40. data/distro/common/man/man1/knife-exec.1 +1 -1
  41. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  42. data/distro/common/man/man1/knife-list.1 +1 -1
  43. data/distro/common/man/man1/knife-node.1 +3 -3
  44. data/distro/common/man/man1/knife-raw.1 +2 -2
  45. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  46. data/distro/common/man/man1/knife-role.1 +2 -2
  47. data/distro/common/man/man1/knife-search.1 +4 -4
  48. data/distro/common/man/man1/knife-serve.1 +1 -1
  49. data/distro/common/man/man1/knife-show.1 +1 -1
  50. data/distro/common/man/man1/knife-ssh.1 +1 -1
  51. data/distro/common/man/man1/knife-ssl-check.1 +1 -1
  52. data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
  53. data/distro/common/man/man1/knife-status.1 +1 -1
  54. data/distro/common/man/man1/knife-tag.1 +1 -1
  55. data/distro/common/man/man1/knife-upload.1 +1 -1
  56. data/distro/common/man/man1/knife-user.1 +1 -1
  57. data/distro/common/man/man1/knife-xargs.1 +1 -1
  58. data/distro/common/man/man1/knife.1 +1 -1
  59. data/distro/common/man/man8/chef-apply.8 +86 -0
  60. data/distro/common/man/man8/chef-client.8 +76 -5
  61. data/distro/common/man/man8/chef-solo.8 +79 -6
  62. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  63. data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
  64. data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
  65. data/distro/common/markdown/man1/knife-environment.mkd +1 -1
  66. data/distro/common/markdown/man1/knife.mkd +1 -1
  67. data/lib/chef.rb +0 -7
  68. data/lib/chef/api_client.rb +10 -2
  69. data/lib/chef/api_client/registration.rb +7 -9
  70. data/lib/chef/application.rb +28 -12
  71. data/lib/chef/application/apply.rb +17 -1
  72. data/lib/chef/application/client.rb +74 -6
  73. data/lib/chef/application/knife.rb +1 -2
  74. data/lib/chef/application/solo.rb +30 -0
  75. data/lib/chef/application/windows_service.rb +1 -0
  76. data/lib/chef/application/windows_service_manager.rb +8 -2
  77. data/lib/chef/applications.rb +0 -1
  78. data/lib/chef/audit/audit_event_proxy.rb +93 -0
  79. data/lib/chef/audit/audit_reporter.rb +169 -0
  80. data/lib/chef/audit/control_group_data.rb +140 -0
  81. data/lib/chef/audit/rspec_formatter.rb +37 -0
  82. data/lib/chef/audit/runner.rb +178 -0
  83. data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
  84. data/lib/chef/chef_fs/config.rb +25 -4
  85. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
  86. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
  87. data/lib/chef/chef_fs/file_system.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
  89. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
  90. data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
  91. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
  92. data/lib/chef/client.rb +81 -52
  93. data/lib/chef/config.rb +35 -3
  94. data/lib/chef/cookbook/metadata.rb +3 -3
  95. data/lib/chef/cookbook_manifest.rb +275 -0
  96. data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
  97. data/lib/chef/cookbook_uploader.rb +11 -2
  98. data/lib/chef/cookbook_version.rb +71 -194
  99. data/lib/chef/data_bag.rb +5 -2
  100. data/lib/chef/data_bag_item.rb +6 -3
  101. data/lib/chef/deprecation/warnings.rb +5 -4
  102. data/lib/chef/dsl/audit.rb +51 -0
  103. data/lib/chef/dsl/include_recipe.rb +2 -3
  104. data/lib/chef/dsl/reboot_pending.rb +1 -1
  105. data/lib/chef/dsl/recipe.rb +49 -31
  106. data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
  107. data/lib/chef/environment.rb +5 -2
  108. data/lib/chef/event_dispatch/base.rb +36 -1
  109. data/lib/chef/event_dispatch/dispatcher.rb +3 -5
  110. data/lib/chef/exceptions.rb +61 -2
  111. data/lib/chef/file_access_control/unix.rb +12 -0
  112. data/lib/chef/file_access_control/windows.rb +14 -0
  113. data/lib/chef/formatters/doc.rb +47 -1
  114. data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
  115. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
  116. data/lib/chef/http.rb +1 -2
  117. data/lib/chef/knife.rb +5 -3
  118. data/lib/chef/knife/bootstrap.rb +84 -15
  119. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
  120. data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
  121. data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
  122. data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
  123. data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
  124. data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
  125. data/lib/chef/knife/client_create.rb +8 -7
  126. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  127. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  128. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  129. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  130. data/lib/chef/knife/cookbook_site_share.rb +39 -28
  131. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  132. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  133. data/lib/chef/knife/cookbook_test.rb +1 -0
  134. data/lib/chef/knife/cookbook_upload.rb +13 -8
  135. data/lib/chef/knife/core/bootstrap_context.rb +14 -3
  136. data/lib/chef/knife/core/generic_presenter.rb +5 -2
  137. data/lib/chef/knife/core/object_loader.rb +1 -1
  138. data/lib/chef/knife/core/subcommand_loader.rb +24 -0
  139. data/lib/chef/knife/core/ui.rb +9 -1
  140. data/lib/chef/knife/node_run_list_remove.rb +11 -3
  141. data/lib/chef/knife/raw.rb +14 -3
  142. data/lib/chef/knife/role_env_run_list_add.rb +86 -0
  143. data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
  144. data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
  145. data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
  146. data/lib/chef/knife/role_env_run_list_set.rb +70 -0
  147. data/lib/chef/knife/role_run_list_add.rb +86 -0
  148. data/lib/chef/knife/role_run_list_clear.rb +55 -0
  149. data/lib/chef/knife/role_run_list_remove.rb +57 -0
  150. data/lib/chef/knife/role_run_list_replace.rb +59 -0
  151. data/lib/chef/knife/role_run_list_set.rb +70 -0
  152. data/lib/chef/knife/search.rb +4 -4
  153. data/lib/chef/knife/serve.rb +3 -0
  154. data/lib/chef/knife/ssh.rb +1 -1
  155. data/lib/chef/knife/ssl_check.rb +2 -2
  156. data/lib/chef/knife/ssl_fetch.rb +14 -1
  157. data/lib/chef/log.rb +10 -1
  158. data/lib/chef/mixin/command.rb +1 -1
  159. data/lib/chef/mixin/command/windows.rb +1 -5
  160. data/lib/chef/mixin/get_source_from_package.rb +1 -0
  161. data/lib/chef/mixin/params_validate.rb +2 -2
  162. data/lib/chef/mixin/securable.rb +1 -7
  163. data/lib/chef/mixin/shell_out.rb +7 -1
  164. data/lib/chef/mixin/template.rb +2 -14
  165. data/lib/chef/mixin/why_run.rb +1 -1
  166. data/lib/chef/monkey_patches/net_http.rb +4 -0
  167. data/lib/chef/monologger.rb +0 -2
  168. data/lib/chef/node.rb +5 -2
  169. data/lib/chef/node/attribute.rb +11 -9
  170. data/lib/chef/node/attribute_collections.rb +8 -12
  171. data/lib/chef/node/immutable_collections.rb +4 -10
  172. data/lib/chef/org.rb +148 -0
  173. data/lib/chef/platform/provider_mapping.rb +3 -2
  174. data/lib/chef/platform/provider_priority_map.rb +2 -0
  175. data/lib/chef/platform/query_helpers.rb +0 -3
  176. data/lib/chef/policy_builder/policyfile.rb +51 -8
  177. data/lib/chef/provider/deploy.rb +1 -2
  178. data/lib/chef/provider/directory.rb +3 -3
  179. data/lib/chef/provider/dsc_script.rb +13 -7
  180. data/lib/chef/provider/env.rb +8 -8
  181. data/lib/chef/provider/execute.rb +55 -36
  182. data/lib/chef/provider/file.rb +8 -0
  183. data/lib/chef/provider/group.rb +2 -0
  184. data/lib/chef/provider/group/dscl.rb +3 -4
  185. data/lib/chef/provider/ifconfig.rb +25 -25
  186. data/lib/chef/provider/ifconfig/aix.rb +25 -27
  187. data/lib/chef/provider/lwrp_base.rb +1 -1
  188. data/lib/chef/provider/mount.rb +2 -2
  189. data/lib/chef/provider/mount/mount.rb +3 -4
  190. data/lib/chef/provider/mount/solaris.rb +1 -1
  191. data/lib/chef/provider/package.rb +297 -48
  192. data/lib/chef/provider/package/aix.rb +25 -30
  193. data/lib/chef/provider/package/apt.rb +63 -19
  194. data/lib/chef/provider/package/dpkg.rb +15 -16
  195. data/lib/chef/provider/package/macports.rb +7 -7
  196. data/lib/chef/provider/package/openbsd.rb +107 -0
  197. data/lib/chef/provider/package/pacman.rb +13 -15
  198. data/lib/chef/provider/package/portage.rb +3 -4
  199. data/lib/chef/provider/package/rpm.rb +28 -17
  200. data/lib/chef/provider/package/rubygems.rb +9 -9
  201. data/lib/chef/provider/package/solaris.rb +17 -21
  202. data/lib/chef/provider/package/windows/msi.rb +1 -1
  203. data/lib/chef/provider/package/yum-dump.py +2 -2
  204. data/lib/chef/provider/package/yum.rb +117 -51
  205. data/lib/chef/provider/package/zypper.rb +17 -18
  206. data/lib/chef/provider/powershell_script.rb +4 -4
  207. data/lib/chef/provider/registry_key.rb +2 -2
  208. data/lib/chef/provider/remote_directory.rb +1 -1
  209. data/lib/chef/provider/script.rb +25 -16
  210. data/lib/chef/provider/service.rb +1 -1
  211. data/lib/chef/provider/service/freebsd.rb +1 -1
  212. data/lib/chef/provider/service/openbsd.rb +216 -0
  213. data/lib/chef/provider/service/upstart.rb +1 -1
  214. data/lib/chef/provider/service/windows.rb +99 -1
  215. data/lib/chef/provider/user.rb +1 -1
  216. data/lib/chef/provider/user/dscl.rb +19 -4
  217. data/lib/chef/providers.rb +2 -0
  218. data/lib/chef/recipe.rb +11 -5
  219. data/lib/chef/request_id.rb +1 -1
  220. data/lib/chef/resource.rb +839 -444
  221. data/lib/chef/resource/chef_gem.rb +20 -3
  222. data/lib/chef/resource/conditional.rb +3 -14
  223. data/lib/chef/resource/dsc_script.rb +14 -0
  224. data/lib/chef/resource/execute.rb +14 -7
  225. data/lib/chef/resource/file.rb +14 -0
  226. data/lib/chef/resource/file/verification.rb +122 -0
  227. data/lib/chef/resource/ips_package.rb +1 -1
  228. data/lib/chef/resource/lwrp_base.rb +2 -11
  229. data/lib/chef/resource/macports_package.rb +2 -1
  230. data/lib/chef/resource/openbsd_package.rb +51 -0
  231. data/lib/chef/resource/package.rb +2 -2
  232. data/lib/chef/resource/paludis_package.rb +1 -1
  233. data/lib/chef/resource/reboot.rb +1 -1
  234. data/lib/chef/resource/remote_file.rb +1 -0
  235. data/lib/chef/resource/rpm_package.rb +9 -0
  236. data/lib/chef/resource/script.rb +11 -0
  237. data/lib/chef/resource/template.rb +2 -3
  238. data/lib/chef/resource/windows_package.rb +1 -1
  239. data/lib/chef/resource/windows_service.rb +18 -0
  240. data/lib/chef/resource_builder.rb +137 -0
  241. data/lib/chef/resource_definition.rb +1 -1
  242. data/lib/chef/resource_reporter.rb +1 -1
  243. data/lib/chef/resources.rb +1 -0
  244. data/lib/chef/role.rb +17 -4
  245. data/lib/chef/run_context.rb +10 -6
  246. data/lib/chef/search/query.rb +66 -87
  247. data/lib/chef/shell/ext.rb +2 -2
  248. data/lib/chef/util/diff.rb +1 -4
  249. data/lib/chef/util/dsc/configuration_generator.rb +30 -6
  250. data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
  251. data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
  252. data/lib/chef/util/file_edit.rb +2 -2
  253. data/lib/chef/util/path_helper.rb +1 -4
  254. data/lib/chef/util/windows/net_use.rb +3 -3
  255. data/lib/chef/version.rb +1 -1
  256. data/lib/chef/win32/api.rb +1 -0
  257. data/lib/chef/win32/api/security.rb +26 -0
  258. data/lib/chef/win32/file.rb +21 -0
  259. data/lib/chef/win32/security.rb +46 -0
  260. data/lib/chef/win32/security/token.rb +8 -0
  261. data/lib/chef/win32/version.rb +0 -4
  262. data/spec/data/recipes.tgz +0 -0
  263. data/spec/functional/application_spec.rb +1 -1
  264. data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
  265. data/spec/functional/audit/runner_spec.rb +137 -0
  266. data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
  267. data/spec/functional/dsl/registry_helper_spec.rb +6 -6
  268. data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
  269. data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
  270. data/spec/functional/http/simple_spec.rb +1 -1
  271. data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
  272. data/spec/functional/knife/exec_spec.rb +2 -4
  273. data/spec/functional/knife/smoke_test.rb +1 -1
  274. data/spec/functional/knife/ssh_spec.rb +23 -23
  275. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
  276. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  277. data/spec/functional/rebooter_spec.rb +1 -1
  278. data/spec/functional/resource/aix_service_spec.rb +3 -0
  279. data/spec/functional/resource/aixinit_service_spec.rb +3 -3
  280. data/spec/functional/resource/bash_spec.rb +88 -0
  281. data/spec/functional/resource/deploy_revision_spec.rb +99 -100
  282. data/spec/functional/resource/env_spec.rb +3 -3
  283. data/spec/functional/resource/execute_spec.rb +97 -63
  284. data/spec/functional/resource/file_spec.rb +7 -7
  285. data/spec/functional/resource/git_spec.rb +13 -13
  286. data/spec/functional/resource/group_spec.rb +28 -25
  287. data/spec/functional/resource/ifconfig_spec.rb +2 -2
  288. data/spec/functional/resource/link_spec.rb +77 -78
  289. data/spec/functional/resource/mount_spec.rb +5 -5
  290. data/spec/functional/resource/ohai_spec.rb +1 -1
  291. data/spec/functional/resource/package_spec.rb +22 -22
  292. data/spec/functional/resource/powershell_spec.rb +57 -42
  293. data/spec/functional/resource/reboot_spec.rb +2 -2
  294. data/spec/functional/resource/registry_spec.rb +91 -91
  295. data/spec/functional/resource/remote_directory_spec.rb +19 -19
  296. data/spec/functional/resource/remote_file_spec.rb +18 -18
  297. data/spec/functional/resource/template_spec.rb +4 -4
  298. data/spec/functional/resource/user/dscl_spec.rb +4 -4
  299. data/spec/functional/resource/user/useradd_spec.rb +64 -51
  300. data/spec/functional/resource/windows_service_spec.rb +98 -0
  301. data/spec/functional/run_lock_spec.rb +9 -9
  302. data/spec/functional/shell_spec.rb +3 -3
  303. data/spec/functional/tiny_server_spec.rb +12 -12
  304. data/spec/functional/util/path_helper_spec.rb +1 -1
  305. data/spec/functional/version_spec.rb +1 -1
  306. data/spec/functional/win32/registry_helper_spec.rb +125 -125
  307. data/spec/functional/win32/security_spec.rb +65 -2
  308. data/spec/functional/win32/service_manager_spec.rb +30 -84
  309. data/spec/functional/win32/versions_spec.rb +6 -6
  310. data/spec/integration/client/client_spec.rb +102 -9
  311. data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
  312. data/spec/integration/knife/common_options_spec.rb +3 -3
  313. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  314. data/spec/integration/knife/deps_spec.rb +4 -4
  315. data/spec/integration/knife/diff_spec.rb +6 -6
  316. data/spec/integration/knife/download_spec.rb +6 -6
  317. data/spec/integration/knife/list_spec.rb +2 -2
  318. data/spec/integration/knife/raw_spec.rb +5 -5
  319. data/spec/integration/knife/serve_spec.rb +3 -3
  320. data/spec/integration/knife/show_spec.rb +3 -3
  321. data/spec/integration/knife/upload_spec.rb +18 -18
  322. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  323. data/spec/integration/solo/solo_spec.rb +11 -12
  324. data/spec/spec_helper.rb +27 -15
  325. data/spec/stress/win32/file_spec.rb +4 -4
  326. data/spec/stress/win32/security_spec.rb +4 -4
  327. data/spec/support/chef_helpers.rb +3 -3
  328. data/spec/support/matchers/leak.rb +2 -2
  329. data/spec/support/mock/platform.rb +1 -1
  330. data/spec/support/pedant/Gemfile +3 -0
  331. data/spec/support/pedant/pedant_config.rb +9 -2
  332. data/spec/support/pedant/run_pedant.rb +15 -16
  333. data/spec/support/platform_helpers.rb +8 -12
  334. data/spec/support/shared/functional/directory_resource.rb +13 -13
  335. data/spec/support/shared/functional/file_resource.rb +83 -83
  336. data/spec/support/shared/functional/http.rb +1 -1
  337. data/spec/support/shared/functional/securable_resource.rb +64 -64
  338. data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
  339. data/spec/support/shared/functional/win32_service.rb +60 -0
  340. data/spec/support/shared/functional/windows_script.rb +8 -8
  341. data/spec/support/shared/integration/knife_support.rb +8 -5
  342. data/spec/support/shared/matchers/exit_with_code.rb +6 -2
  343. data/spec/support/shared/unit/api_error_inspector.rb +8 -8
  344. data/spec/support/shared/unit/execute_resource.rb +24 -20
  345. data/spec/support/shared/unit/file_system_support.rb +2 -2
  346. data/spec/support/shared/unit/platform_introspector.rb +21 -21
  347. data/spec/support/shared/unit/provider/file.rb +239 -210
  348. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
  349. data/spec/support/shared/unit/script_resource.rb +40 -32
  350. data/spec/support/shared/unit/windows_script_resource.rb +8 -8
  351. data/spec/unit/api_client/registration_spec.rb +47 -47
  352. data/spec/unit/api_client_spec.rb +107 -69
  353. data/spec/unit/application/apply_spec.rb +31 -15
  354. data/spec/unit/application/client_spec.rb +146 -45
  355. data/spec/unit/application/knife_spec.rb +31 -31
  356. data/spec/unit/application/solo_spec.rb +59 -43
  357. data/spec/unit/application_spec.rb +109 -74
  358. data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
  359. data/spec/unit/audit/audit_reporter_spec.rb +393 -0
  360. data/spec/unit/audit/control_group_data_spec.rb +478 -0
  361. data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
  362. data/spec/unit/audit/runner_spec.rb +135 -0
  363. data/spec/unit/chef_fs/config_spec.rb +52 -0
  364. data/spec/unit/chef_fs/diff_spec.rb +12 -12
  365. data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
  366. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
  367. data/spec/unit/chef_fs/file_system_spec.rb +26 -13
  368. data/spec/unit/chef_fs/parallelizer.rb +87 -87
  369. data/spec/unit/chef_spec.rb +1 -1
  370. data/spec/unit/client_spec.rb +263 -97
  371. data/spec/unit/config_fetcher_spec.rb +13 -13
  372. data/spec/unit/config_spec.rb +105 -66
  373. data/spec/unit/cookbook/chefignore_spec.rb +6 -6
  374. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
  375. data/spec/unit/cookbook/metadata_spec.rb +149 -149
  376. data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
  377. data/spec/unit/cookbook_loader_spec.rb +62 -58
  378. data/spec/unit/cookbook_manifest_spec.rb +141 -468
  379. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
  380. data/spec/unit/cookbook_spec.rb +15 -15
  381. data/spec/unit/cookbook_uploader_spec.rb +37 -3
  382. data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
  383. data/spec/unit/cookbook_version_spec.rb +98 -240
  384. data/spec/unit/daemon_spec.rb +31 -31
  385. data/spec/unit/data_bag_item_spec.rb +121 -89
  386. data/spec/unit/data_bag_spec.rb +35 -35
  387. data/spec/unit/deprecation_spec.rb +27 -14
  388. data/spec/unit/digester_spec.rb +3 -3
  389. data/spec/unit/dsl/audit_spec.rb +43 -0
  390. data/spec/unit/dsl/data_query_spec.rb +1 -1
  391. data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
  392. data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
  393. data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
  394. data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
  395. data/spec/unit/environment_spec.rb +105 -105
  396. data/spec/unit/exceptions_spec.rb +47 -1
  397. data/spec/unit/file_access_control_spec.rb +62 -56
  398. data/spec/unit/file_cache_spec.rb +11 -11
  399. data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
  400. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
  401. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
  402. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
  403. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
  404. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  405. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
  406. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
  407. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
  408. data/spec/unit/guard_interpreter_spec.rb +41 -0
  409. data/spec/unit/handler/json_file_spec.rb +10 -10
  410. data/spec/unit/handler_spec.rb +39 -39
  411. data/spec/unit/http/basic_client_spec.rb +3 -3
  412. data/spec/unit/http/http_request_spec.rb +10 -10
  413. data/spec/unit/http/simple_spec.rb +3 -3
  414. data/spec/unit/http/ssl_policies_spec.rb +15 -15
  415. data/spec/unit/http/validate_content_length_spec.rb +18 -13
  416. data/spec/unit/http_spec.rb +16 -9
  417. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
  418. data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
  419. data/spec/unit/knife/bootstrap_spec.rb +144 -91
  420. data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
  421. data/spec/unit/knife/client_create_spec.rb +57 -43
  422. data/spec/unit/knife/client_delete_spec.rb +15 -15
  423. data/spec/unit/knife/client_edit_spec.rb +4 -4
  424. data/spec/unit/knife/client_list_spec.rb +2 -2
  425. data/spec/unit/knife/client_reregister_spec.rb +9 -9
  426. data/spec/unit/knife/configure_client_spec.rb +20 -20
  427. data/spec/unit/knife/configure_spec.rb +85 -85
  428. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
  429. data/spec/unit/knife/cookbook_create_spec.rb +59 -59
  430. data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
  431. data/spec/unit/knife/cookbook_download_spec.rb +56 -56
  432. data/spec/unit/knife/cookbook_list_spec.rb +9 -9
  433. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
  434. data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
  435. data/spec/unit/knife/cookbook_show_spec.rb +29 -29
  436. data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
  437. data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
  438. data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
  439. data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
  440. data/spec/unit/knife/cookbook_test_spec.rb +16 -16
  441. data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
  442. data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
  443. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
  444. data/spec/unit/knife/core/object_loader_spec.rb +3 -3
  445. data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
  446. data/spec/unit/knife/core/ui_spec.rb +84 -72
  447. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
  448. data/spec/unit/knife/environment_compare_spec.rb +12 -12
  449. data/spec/unit/knife/environment_create_spec.rb +16 -16
  450. data/spec/unit/knife/environment_delete_spec.rb +14 -14
  451. data/spec/unit/knife/environment_edit_spec.rb +15 -15
  452. data/spec/unit/knife/environment_from_file_spec.rb +17 -17
  453. data/spec/unit/knife/environment_list_spec.rb +7 -7
  454. data/spec/unit/knife/environment_show_spec.rb +10 -10
  455. data/spec/unit/knife/index_rebuild_spec.rb +17 -17
  456. data/spec/unit/knife/knife_help.rb +24 -24
  457. data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
  458. data/spec/unit/knife/node_delete_spec.rb +11 -11
  459. data/spec/unit/knife/node_edit_spec.rb +17 -17
  460. data/spec/unit/knife/node_environment_set_spec.rb +12 -12
  461. data/spec/unit/knife/node_from_file_spec.rb +8 -8
  462. data/spec/unit/knife/node_list_spec.rb +9 -9
  463. data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
  464. data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
  465. data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
  466. data/spec/unit/knife/raw_spec.rb +43 -0
  467. data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
  468. data/spec/unit/knife/role_create_spec.rb +12 -12
  469. data/spec/unit/knife/role_delete_spec.rb +10 -10
  470. data/spec/unit/knife/role_edit_spec.rb +13 -13
  471. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
  472. data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
  473. data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
  474. data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
  475. data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
  476. data/spec/unit/knife/role_from_file_spec.rb +10 -10
  477. data/spec/unit/knife/role_list_spec.rb +7 -7
  478. data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
  479. data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
  480. data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
  481. data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
  482. data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
  483. data/spec/unit/knife/ssh_spec.rb +66 -66
  484. data/spec/unit/knife/ssl_check_spec.rb +27 -27
  485. data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
  486. data/spec/unit/knife/status_spec.rb +5 -5
  487. data/spec/unit/knife/tag_create_spec.rb +5 -5
  488. data/spec/unit/knife/tag_delete_spec.rb +6 -6
  489. data/spec/unit/knife/tag_list_spec.rb +4 -4
  490. data/spec/unit/knife/user_create_spec.rb +18 -18
  491. data/spec/unit/knife/user_delete_spec.rb +4 -4
  492. data/spec/unit/knife/user_edit_spec.rb +7 -7
  493. data/spec/unit/knife/user_list_spec.rb +2 -2
  494. data/spec/unit/knife/user_reregister_spec.rb +10 -10
  495. data/spec/unit/knife/user_show_spec.rb +5 -5
  496. data/spec/unit/knife_spec.rb +36 -36
  497. data/spec/unit/lwrp_spec.rb +63 -39
  498. data/spec/unit/mash_spec.rb +6 -6
  499. data/spec/unit/mixin/checksum_spec.rb +2 -2
  500. data/spec/unit/mixin/command_spec.rb +13 -13
  501. data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
  502. data/spec/unit/mixin/deep_merge_spec.rb +49 -49
  503. data/spec/unit/mixin/deprecation_spec.rb +5 -5
  504. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
  505. data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
  506. data/spec/unit/mixin/params_validate_spec.rb +71 -71
  507. data/spec/unit/mixin/path_sanity_spec.rb +14 -14
  508. data/spec/unit/mixin/securable_spec.rb +177 -177
  509. data/spec/unit/mixin/shell_out_spec.rb +56 -27
  510. data/spec/unit/mixin/template_spec.rb +31 -31
  511. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  512. data/spec/unit/mixin/xml_escape_spec.rb +7 -7
  513. data/spec/unit/monkey_patches/uri_spec.rb +1 -1
  514. data/spec/unit/monologger_spec.rb +3 -3
  515. data/spec/unit/node/attribute_spec.rb +185 -136
  516. data/spec/unit/node/immutable_collections_spec.rb +22 -22
  517. data/spec/unit/node_spec.rb +210 -179
  518. data/spec/unit/org_spec.rb +196 -0
  519. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  520. data/spec/unit/platform_spec.rb +46 -46
  521. data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
  522. data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
  523. data/spec/unit/provider/directory_spec.rb +5 -5
  524. data/spec/unit/provider/dsc_script_spec.rb +6 -6
  525. data/spec/unit/provider/env_spec.rb +27 -14
  526. data/spec/unit/provider/execute_spec.rb +139 -68
  527. data/spec/unit/provider/file/content_spec.rb +8 -8
  528. data/spec/unit/provider/git_spec.rb +10 -5
  529. data/spec/unit/provider/group/dscl_spec.rb +8 -11
  530. data/spec/unit/provider/group_spec.rb +13 -13
  531. data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
  532. data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
  533. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  534. data/spec/unit/provider/mdadm_spec.rb +2 -2
  535. data/spec/unit/provider/mount/aix_spec.rb +5 -5
  536. data/spec/unit/provider/mount/mount_spec.rb +22 -22
  537. data/spec/unit/provider/mount/solaris_spec.rb +20 -20
  538. data/spec/unit/provider/package/aix_spec.rb +23 -22
  539. data/spec/unit/provider/package/apt_spec.rb +23 -4
  540. data/spec/unit/provider/package/dpkg_spec.rb +14 -15
  541. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  542. data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
  543. data/spec/unit/provider/package/ips_spec.rb +1 -2
  544. data/spec/unit/provider/package/macports_spec.rb +14 -14
  545. data/spec/unit/provider/package/openbsd_spec.rb +66 -0
  546. data/spec/unit/provider/package/pacman_spec.rb +15 -14
  547. data/spec/unit/provider/package/portage_spec.rb +11 -11
  548. data/spec/unit/provider/package/rpm_spec.rb +132 -84
  549. data/spec/unit/provider/package/rubygems_spec.rb +54 -25
  550. data/spec/unit/provider/package/solaris_spec.rb +22 -25
  551. data/spec/unit/provider/package/yum_spec.rb +237 -36
  552. data/spec/unit/provider/package/zypper_spec.rb +9 -12
  553. data/spec/unit/provider/package_spec.rb +276 -2
  554. data/spec/unit/provider/package_spec.rbe +0 -0
  555. data/spec/unit/provider/remote_directory_spec.rb +25 -25
  556. data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
  557. data/spec/unit/provider/route_spec.rb +3 -3
  558. data/spec/unit/provider/script_spec.rb +61 -43
  559. data/spec/unit/provider/service/aix_service_spec.rb +5 -5
  560. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  561. data/spec/unit/provider/service/debian_service_spec.rb +8 -8
  562. data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
  563. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  564. data/spec/unit/provider/service/init_service_spec.rb +5 -5
  565. data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
  566. data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
  567. data/spec/unit/provider/service/macosx_spec.rb +7 -7
  568. data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
  569. data/spec/unit/provider/service/redhat_spec.rb +4 -4
  570. data/spec/unit/provider/service/simple_service_spec.rb +2 -2
  571. data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
  572. data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
  573. data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
  574. data/spec/unit/provider/service/windows_spec.rb +119 -25
  575. data/spec/unit/provider/service_spec.rb +1 -1
  576. data/spec/unit/provider/user/dscl_spec.rb +38 -30
  577. data/spec/unit/provider/user_spec.rb +1 -1
  578. data/spec/unit/provider_resolver_spec.rb +7 -7
  579. data/spec/unit/provider_spec.rb +23 -23
  580. data/spec/unit/recipe_spec.rb +194 -83
  581. data/spec/unit/registry_helper_spec.rb +143 -143
  582. data/spec/unit/resource/chef_gem_spec.rb +117 -3
  583. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  584. data/spec/unit/resource/conditional_spec.rb +56 -15
  585. data/spec/unit/resource/deploy_spec.rb +2 -2
  586. data/spec/unit/resource/dsc_script_spec.rb +32 -0
  587. data/spec/unit/resource/execute_spec.rb +4 -0
  588. data/spec/unit/resource/file/verification_spec.rb +111 -0
  589. data/spec/unit/resource/file_spec.rb +14 -0
  590. data/spec/unit/resource/openbsd_package_spec.rb +49 -0
  591. data/spec/unit/resource/remote_file_spec.rb +12 -12
  592. data/spec/unit/resource/resource_notification_spec.rb +18 -18
  593. data/spec/unit/resource/rpm_package_spec.rb +12 -0
  594. data/spec/unit/resource/scm_spec.rb +4 -4
  595. data/spec/unit/resource/script_spec.rb +3 -5
  596. data/spec/unit/resource/subversion_spec.rb +1 -1
  597. data/spec/unit/resource_builder_spec.rb +1 -0
  598. data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
  599. data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
  600. data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
  601. data/spec/unit/resource_collection_spec.rb +52 -52
  602. data/spec/unit/resource_definition_spec.rb +1 -1
  603. data/spec/unit/resource_reporter_spec.rb +118 -118
  604. data/spec/unit/resource_spec.rb +131 -125
  605. data/spec/unit/rest/auth_credentials_spec.rb +73 -73
  606. data/spec/unit/rest_spec.rb +12 -12
  607. data/spec/unit/role_spec.rb +85 -84
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
  609. data/spec/unit/run_context_spec.rb +39 -68
  610. data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
  611. data/spec/unit/run_list/run_list_item_spec.rb +28 -28
  612. data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
  613. data/spec/unit/run_list_spec.rb +55 -55
  614. data/spec/unit/run_lock_spec.rb +14 -14
  615. data/spec/unit/run_status_spec.rb +24 -24
  616. data/spec/unit/scan_access_control_spec.rb +23 -23
  617. data/spec/unit/search/query_spec.rb +54 -66
  618. data/spec/unit/shell/model_wrapper_spec.rb +13 -13
  619. data/spec/unit/shell/shell_ext_spec.rb +32 -32
  620. data/spec/unit/shell/shell_session_spec.rb +24 -24
  621. data/spec/unit/shell_out_spec.rb +4 -4
  622. data/spec/unit/shell_spec.rb +27 -27
  623. data/spec/unit/user_spec.rb +50 -50
  624. data/spec/unit/util/backup_spec.rb +32 -32
  625. data/spec/unit/util/diff_spec.rb +31 -31
  626. data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
  627. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
  628. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
  629. data/spec/unit/util/editor_spec.rb +10 -10
  630. data/spec/unit/util/file_edit_spec.rb +10 -10
  631. data/spec/unit/util/path_helper_spec.rb +38 -46
  632. data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
  633. data/spec/unit/util/selinux_spec.rb +30 -30
  634. data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
  635. data/spec/unit/version/platform_spec.rb +5 -5
  636. data/spec/unit/version_class_spec.rb +15 -15
  637. data/spec/unit/version_constraint/platform_spec.rb +7 -7
  638. data/spec/unit/version_constraint_spec.rb +43 -43
  639. data/spec/unit/windows_service_spec.rb +15 -15
  640. data/spec/unit/workstation_config_loader_spec.rb +2 -2
  641. data/tasks/rspec.rb +16 -18
  642. metadata +126 -53
  643. data/bin/chef-service-manager +0 -37
  644. data/bin/chef-windows-service +0 -35
  645. data/bin/shef +0 -35
  646. data/lib/chef/application/agent.rb +0 -18
  647. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  648. data/lib/chef/monkey_patches/numeric.rb +0 -15
  649. data/lib/chef/monkey_patches/object.rb +0 -9
  650. data/lib/chef/monkey_patches/pathname.rb +0 -32
  651. data/lib/chef/monkey_patches/regexp.rb +0 -34
  652. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  653. data/lib/chef/monkey_patches/string.rb +0 -49
  654. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  655. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -27,15 +27,15 @@ describe Chef::Knife::UserShow do
27
27
  end
28
28
 
29
29
  it 'loads and displays the user' do
30
- Chef::User.should_receive(:load).with('my_user').and_return(@user_mock)
31
- @knife.should_receive(:format_for_display).with(@user_mock)
30
+ expect(Chef::User).to receive(:load).with('my_user').and_return(@user_mock)
31
+ expect(@knife).to receive(:format_for_display).with(@user_mock)
32
32
  @knife.run
33
33
  end
34
34
 
35
35
  it 'prints usage and exits when a user name is not provided' do
36
36
  @knife.name_args = []
37
- @knife.should_receive(:show_usage)
38
- @knife.ui.should_receive(:fatal)
39
- lambda { @knife.run }.should raise_error(SystemExit)
37
+ expect(@knife).to receive(:show_usage)
38
+ expect(@knife.ui).to receive(:fatal)
39
+ expect { @knife.run }.to raise_error(SystemExit)
40
40
  end
41
41
  end
@@ -42,7 +42,7 @@ describe Chef::Knife do
42
42
  allow(Chef::Log).to receive(:init)
43
43
  allow(Chef::Log).to receive(:level)
44
44
  [:debug, :info, :warn, :error, :crit].each do |level_sym|
45
- Chef::Log.stub(level_sym)
45
+ allow(Chef::Log).to receive(level_sym)
46
46
  end
47
47
  allow(Chef::Knife).to receive(:puts)
48
48
  end
@@ -68,27 +68,27 @@ describe Chef::Knife do
68
68
  end
69
69
 
70
70
  it "has a category based on its name" do
71
- KnifeSpecs::TestNameMapping.subcommand_category.should == 'test'
71
+ expect(KnifeSpecs::TestNameMapping.subcommand_category).to eq('test')
72
72
  end
73
73
 
74
- it "has an explictly defined category if set" do
75
- KnifeSpecs::TestExplicitCategory.subcommand_category.should == 'cookbook site'
74
+ it "has an explicitly defined category if set" do
75
+ expect(KnifeSpecs::TestExplicitCategory.subcommand_category).to eq('cookbook site')
76
76
  end
77
77
 
78
78
  it "can reference the subcommand by its snake cased name" do
79
- Chef::Knife.subcommands['test_name_mapping'].should equal(KnifeSpecs::TestNameMapping)
79
+ expect(Chef::Knife.subcommands['test_name_mapping']).to equal(KnifeSpecs::TestNameMapping)
80
80
  end
81
81
 
82
82
  it "lists subcommands by category" do
83
- Chef::Knife.subcommands_by_category['test'].should include('test_name_mapping')
83
+ expect(Chef::Knife.subcommands_by_category['test']).to include('test_name_mapping')
84
84
  end
85
85
 
86
86
  it "lists subcommands by category when the subcommands have explicit categories" do
87
- Chef::Knife.subcommands_by_category['cookbook site'].should include('test_explicit_category')
87
+ expect(Chef::Knife.subcommands_by_category['cookbook site']).to include('test_explicit_category')
88
88
  end
89
89
 
90
90
  it "has empty dependency_loader list by default" do
91
- KnifeSpecs::TestNameMapping.dependency_loaders.should be_empty
91
+ expect(KnifeSpecs::TestNameMapping.dependency_loaders).to be_empty
92
92
  end
93
93
  end
94
94
 
@@ -104,22 +104,22 @@ describe Chef::Knife do
104
104
 
105
105
  Chef::Knife.load_commands
106
106
 
107
- Chef::Knife.subcommands.should have_key("super_awesome_command")
108
- Chef::Knife.subcommands["super_awesome_command"].should == SuperAwesomeCommand
107
+ expect(Chef::Knife.subcommands).to have_key("super_awesome_command")
108
+ expect(Chef::Knife.subcommands["super_awesome_command"]).to eq(SuperAwesomeCommand)
109
109
  end
110
110
 
111
111
  it "guesses a category from a given ARGV" do
112
112
  Chef::Knife.subcommands_by_category["cookbook"] << :cookbook
113
113
  Chef::Knife.subcommands_by_category["cookbook site"] << :cookbook_site
114
- Chef::Knife.guess_category(%w{cookbook foo bar baz}).should == 'cookbook'
115
- Chef::Knife.guess_category(%w{cookbook site foo bar baz}).should == 'cookbook site'
116
- Chef::Knife.guess_category(%w{cookbook site --help}).should == 'cookbook site'
114
+ expect(Chef::Knife.guess_category(%w{cookbook foo bar baz})).to eq('cookbook')
115
+ expect(Chef::Knife.guess_category(%w{cookbook site foo bar baz})).to eq('cookbook site')
116
+ expect(Chef::Knife.guess_category(%w{cookbook site --help})).to eq('cookbook site')
117
117
  end
118
118
 
119
119
  it "finds a subcommand class based on ARGV" do
120
120
  Chef::Knife.subcommands["cookbook_site_vendor"] = :CookbookSiteVendor
121
121
  Chef::Knife.subcommands["cookbook"] = :Cookbook
122
- Chef::Knife.subcommand_class_from(%w{cookbook site vendor --help foo bar baz}).should == :CookbookSiteVendor
122
+ expect(Chef::Knife.subcommand_class_from(%w{cookbook site vendor --help foo bar baz})).to eq(:CookbookSiteVendor)
123
123
  end
124
124
 
125
125
  end
@@ -137,9 +137,9 @@ describe Chef::Knife do
137
137
  let(:request_mock) { {} }
138
138
 
139
139
  let(:rest) do
140
- Net::HTTP.stub(:new).and_return(http_client)
141
- Chef::RequestID.instance.stub(:request_id).and_return(request_id)
142
- Chef::Config.stub(:chef_server_url).and_return("https://api.opscode.piab")
140
+ allow(Net::HTTP).to receive(:new).and_return(http_client)
141
+ allow(Chef::RequestID.instance).to receive(:request_id).and_return(request_id)
142
+ allow(Chef::Config).to receive(:chef_server_url).and_return("https://api.opscode.piab")
143
143
  command = Chef::Knife.run(%w{test yourself})
144
144
  rest = command.noauth_rest
145
145
  rest
@@ -147,7 +147,7 @@ describe Chef::Knife do
147
147
 
148
148
  let!(:http_client) do
149
149
  http_client = Net::HTTP.new(url.host, url.port)
150
- http_client.stub(:request).and_yield(http_response).and_return(http_response)
150
+ allow(http_client).to receive(:request).and_yield(http_response).and_return(http_response)
151
151
  http_client
152
152
  end
153
153
 
@@ -155,8 +155,8 @@ describe Chef::Knife do
155
155
 
156
156
  let(:http_response) do
157
157
  http_response = Net::HTTPSuccess.new("1.1", "200", "successful rest req")
158
- http_response.stub(:read_body)
159
- http_response.stub(:body).and_return(body)
158
+ allow(http_response).to receive(:read_body)
159
+ allow(http_response).to receive(:body).and_return(body)
160
160
  http_response["Content-Length"] = body.bytesize.to_s
161
161
  http_response
162
162
  end
@@ -173,7 +173,7 @@ describe Chef::Knife do
173
173
  end
174
174
 
175
175
  it "confirms that the headers include X-Remote-Request-Id" do
176
- Net::HTTP::Get.should_receive(:new).with("/monkey", headers).and_return(request_mock)
176
+ expect(Net::HTTP::Get).to receive(:new).with("/monkey", headers).and_return(request_mock)
177
177
  rest.get_rest("monkey")
178
178
  end
179
179
  end
@@ -197,26 +197,26 @@ describe Chef::Knife do
197
197
  # there is special hackery to return the subcommand instance going on here.
198
198
  command = Chef::Knife.run(%w{test yourself}, extra_opts)
199
199
  editor_opts = command.options[:editor]
200
- editor_opts[:long].should == "--editor EDITOR"
201
- editor_opts[:description].should == "Set the editor to use for interactive commands"
202
- editor_opts[:short].should == "-e EDITOR"
203
- editor_opts[:default].should == "/usr/bin/vim"
200
+ expect(editor_opts[:long]).to eq("--editor EDITOR")
201
+ expect(editor_opts[:description]).to eq("Set the editor to use for interactive commands")
202
+ expect(editor_opts[:short]).to eq("-e EDITOR")
203
+ expect(editor_opts[:default]).to eq("/usr/bin/vim")
204
204
  end
205
205
 
206
206
  it "creates an instance of the subcommand and runs it" do
207
207
  command = Chef::Knife.run(%w{test yourself})
208
- command.should be_an_instance_of(KnifeSpecs::TestYourself)
209
- command.ran.should be_true
208
+ expect(command).to be_an_instance_of(KnifeSpecs::TestYourself)
209
+ expect(command.ran).to be_truthy
210
210
  end
211
211
 
212
212
  it "passes the command specific args to the subcommand" do
213
213
  command = Chef::Knife.run(%w{test yourself with some args})
214
- command.name_args.should == %w{with some args}
214
+ expect(command.name_args).to eq(%w{with some args})
215
215
  end
216
216
 
217
217
  it "excludes the command name from the name args when parts are joined with underscores" do
218
218
  command = Chef::Knife.run(%w{test_yourself with some args})
219
- command.name_args.should == %w{with some args}
219
+ expect(command.name_args).to eq(%w{with some args})
220
220
  end
221
221
 
222
222
  it "exits if no subcommand matches the CLI args" do
@@ -230,7 +230,7 @@ describe Chef::Knife do
230
230
 
231
231
  it "loads lazy dependencies" do
232
232
  Chef::Knife.run(%w{test yourself})
233
- KnifeSpecs::TestYourself.test_deps_loaded.should be_true
233
+ expect(KnifeSpecs::TestYourself.test_deps_loaded).to be_truthy
234
234
  end
235
235
 
236
236
  it "loads lazy dependencies from multiple deps calls" do
@@ -240,8 +240,8 @@ describe Chef::Knife do
240
240
  end
241
241
 
242
242
  Chef::Knife.run(%w{test yourself})
243
- KnifeSpecs::TestYourself.test_deps_loaded.should be_true
244
- other_deps_loaded.should be_true
243
+ expect(KnifeSpecs::TestYourself.test_deps_loaded).to be_truthy
244
+ expect(other_deps_loaded).to be_truthy
245
245
  end
246
246
 
247
247
  describe "merging configuration options" do
@@ -254,21 +254,21 @@ describe Chef::Knife do
254
254
  it "prefers the default value if no config or command line value is present" do
255
255
  knife_command = KnifeSpecs::TestYourself.new([]) #empty argv
256
256
  knife_command.configure_chef
257
- knife_command.config[:opt_with_default].should == "default-value"
257
+ expect(knife_command.config[:opt_with_default]).to eq("default-value")
258
258
  end
259
259
 
260
260
  it "prefers a value in Chef::Config[:knife] to the default" do
261
261
  Chef::Config[:knife][:opt_with_default] = "from-knife-config"
262
262
  knife_command = KnifeSpecs::TestYourself.new([]) #empty argv
263
263
  knife_command.configure_chef
264
- knife_command.config[:opt_with_default].should == "from-knife-config"
264
+ expect(knife_command.config[:opt_with_default]).to eq("from-knife-config")
265
265
  end
266
266
 
267
267
  it "prefers a value from command line over Chef::Config and the default" do
268
268
  Chef::Config[:knife][:opt_with_default] = "from-knife-config"
269
269
  knife_command = KnifeSpecs::TestYourself.new(["-D", "from-cli"])
270
270
  knife_command.configure_chef
271
- knife_command.config[:opt_with_default].should == "from-cli"
271
+ expect(knife_command.config[:opt_with_default]).to eq("from-cli")
272
272
  end
273
273
 
274
274
  context "verbosity is greater than zero" do
@@ -311,7 +311,7 @@ describe Chef::Knife do
311
311
  end
312
312
 
313
313
  it "does not have lazy dependencies loaded" do
314
- expect(knife.class.test_deps_loaded).to be(nil)
314
+ expect(knife.class.test_deps_loaded).not_to be_truthy
315
315
  end
316
316
  end
317
317
 
@@ -33,17 +33,41 @@ describe "LWRP" do
33
33
 
34
34
  describe "when overriding an existing class" do
35
35
  before :each do
36
- $stderr.stub(:write)
36
+ allow($stderr).to receive(:write)
37
37
  end
38
38
 
39
+ it "should not skip loading a resource when there's a top level symbol of the same name" do
40
+ Object.const_set('LwrpFoo', Class.new)
41
+ file = File.expand_path( "lwrp/resources/foo.rb", CHEF_SPEC_DATA)
42
+ expect(Chef::Log).not_to receive(:info).with(/Skipping/)
43
+ expect(Chef::Log).not_to receive(:debug).with(/anymore/)
44
+ Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
45
+ Object.send(:remove_const, 'LwrpFoo')
46
+ Chef::Resource.send(:remove_const, 'LwrpFoo')
47
+ end
48
+
49
+ it "should not skip loading a provider when there's a top level symbol of the same name" do
50
+ Object.const_set('LwrpBuckPasser', Class.new)
51
+ file = File.expand_path( "lwrp/providers/buck_passer.rb", CHEF_SPEC_DATA)
52
+ expect(Chef::Log).not_to receive(:info).with(/Skipping/)
53
+ expect(Chef::Log).not_to receive(:debug).with(/anymore/)
54
+ Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
55
+ Object.send(:remove_const, 'LwrpBuckPasser')
56
+ Chef::Provider.send(:remove_const, 'LwrpBuckPasser')
57
+ end
58
+
59
+ # @todo: we need a before block to manually remove_const all of the LWRPs that we
60
+ # load in these tests. we're threading state through these tests in LWRPs that
61
+ # have already been loaded in prior tests, which probably renders some of them bogus
62
+
39
63
  it "should log if attempting to load resource of same name" do
40
64
  Dir[File.expand_path( "lwrp/resources/*", CHEF_SPEC_DATA)].each do |file|
41
65
  Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
42
66
  end
43
67
 
44
68
  Dir[File.expand_path( "lwrp/resources/*", CHEF_SPEC_DATA)].each do |file|
45
- Chef::Log.should_receive(:info).with(/Skipping/)
46
- Chef::Log.should_receive(:debug).with(/anymore/)
69
+ expect(Chef::Log).to receive(:info).with(/Skipping/)
70
+ expect(Chef::Log).to receive(:debug).with(/anymore/)
47
71
  Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
48
72
  end
49
73
  end
@@ -54,8 +78,8 @@ describe "LWRP" do
54
78
  end
55
79
 
56
80
  Dir[File.expand_path( "lwrp/providers/*", CHEF_SPEC_DATA)].each do |file|
57
- Chef::Log.should_receive(:info).with(/Skipping/)
58
- Chef::Log.should_receive(:debug).with(/anymore/)
81
+ expect(Chef::Log).to receive(:info).with(/Skipping/)
82
+ expect(Chef::Log).to receive(:debug).with(/anymore/)
59
83
  Chef::Provider::LWRPBase.build_from_file("lwrp", file, nil)
60
84
  end
61
85
  end
@@ -67,11 +91,11 @@ describe "LWRP" do
67
91
  Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
68
92
  end
69
93
  first_lwr_foo_class = Chef::Resource::LwrpFoo
70
- Chef::Resource.resource_classes.should include(first_lwr_foo_class)
94
+ expect(Chef::Resource.resource_classes).to include(first_lwr_foo_class)
71
95
  Dir[File.expand_path( "lwrp/resources/*", CHEF_SPEC_DATA)].each do |file|
72
96
  Chef::Resource::LWRPBase.build_from_file("lwrp", file, nil)
73
97
  end
74
- Chef::Resource.resource_classes.should include(first_lwr_foo_class)
98
+ expect(Chef::Resource.resource_classes).to include(first_lwr_foo_class)
75
99
  end
76
100
 
77
101
  it "does not attempt to remove classes from higher up namespaces [CHEF-4117]" do
@@ -95,27 +119,27 @@ describe "LWRP" do
95
119
  end
96
120
 
97
121
  it "should load the resource into a properly-named class" do
98
- Chef::Resource.const_get("LwrpFoo").should be_kind_of(Class)
122
+ expect(Chef::Resource.const_get("LwrpFoo")).to be_kind_of(Class)
99
123
  end
100
124
 
101
125
  it "should set resource_name" do
102
- Chef::Resource::LwrpFoo.new("blah").resource_name.should eql(:lwrp_foo)
126
+ expect(Chef::Resource::LwrpFoo.new("blah").resource_name).to eql(:lwrp_foo)
103
127
  end
104
128
 
105
129
  it "should add the specified actions to the allowed_actions array" do
106
- Chef::Resource::LwrpFoo.new("blah").allowed_actions.should include(:pass_buck, :twiddle_thumbs)
130
+ expect(Chef::Resource::LwrpFoo.new("blah").allowed_actions).to include(:pass_buck, :twiddle_thumbs)
107
131
  end
108
132
 
109
133
  it "should set the specified action as the default action" do
110
- Chef::Resource::LwrpFoo.new("blah").action.should == :pass_buck
134
+ expect(Chef::Resource::LwrpFoo.new("blah").action).to eq(:pass_buck)
111
135
  end
112
136
 
113
137
  it "should create a method for each attribute" do
114
- Chef::Resource::LwrpFoo.new("blah").methods.map{ |m| m.to_sym}.should include(:monkey)
138
+ expect(Chef::Resource::LwrpFoo.new("blah").methods.map{ |m| m.to_sym}).to include(:monkey)
115
139
  end
116
140
 
117
141
  it "should build attribute methods that respect validation rules" do
118
- lambda { Chef::Resource::LwrpFoo.new("blah").monkey(42) }.should raise_error(ArgumentError)
142
+ expect { Chef::Resource::LwrpFoo.new("blah").monkey(42) }.to raise_error(ArgumentError)
119
143
  end
120
144
 
121
145
  it "should have access to the run context and node during class definition" do
@@ -128,9 +152,9 @@ describe "LWRP" do
128
152
  end
129
153
 
130
154
  cls = Chef::Resource.const_get("LwrpNodeattr")
131
- cls.node.should be_kind_of(Chef::Node)
132
- cls.run_context.should be_kind_of(Chef::RunContext)
133
- cls.node[:penguin_name].should eql("jackass")
155
+ expect(cls.node).to be_kind_of(Chef::Node)
156
+ expect(cls.run_context).to be_kind_of(Chef::RunContext)
157
+ expect(cls.node[:penguin_name]).to eql("jackass")
134
158
  end
135
159
 
136
160
  context "resource_name" do
@@ -247,7 +271,7 @@ describe "LWRP" do
247
271
  end
248
272
  end
249
273
 
250
- it "ammends actions when they are already defined" do
274
+ it "amends actions when they are already defined" do
251
275
  raise_if_deprecated!
252
276
  expect(child.actions).to eq([:eat, :sleep, :drink])
253
277
  end
@@ -296,13 +320,13 @@ describe "LWRP" do
296
320
  end
297
321
 
298
322
  it "should load the provider into a properly-named class" do
299
- Chef::Provider.const_get("LwrpBuckPasser").should be_kind_of(Class)
323
+ expect(Chef::Provider.const_get("LwrpBuckPasser")).to be_kind_of(Class)
300
324
  end
301
325
 
302
326
  it "should create a method for each attribute" do
303
327
  new_resource = double("new resource").as_null_object
304
- Chef::Provider::LwrpBuckPasser.new(nil, new_resource).methods.map{|m|m.to_sym}.should include(:action_pass_buck)
305
- Chef::Provider::LwrpThumbTwiddler.new(nil, new_resource).methods.map{|m|m.to_sym}.should include(:action_twiddle_thumbs)
328
+ expect(Chef::Provider::LwrpBuckPasser.new(nil, new_resource).methods.map{|m|m.to_sym}).to include(:action_pass_buck)
329
+ expect(Chef::Provider::LwrpThumbTwiddler.new(nil, new_resource).methods.map{|m|m.to_sym}).to include(:action_twiddle_thumbs)
306
330
  end
307
331
 
308
332
  it "should insert resources embedded in the provider into the middle of the resource collection" do
@@ -316,10 +340,10 @@ describe "LWRP" do
316
340
 
317
341
  Chef::Runner.new(@run_context).converge
318
342
 
319
- @run_context.resource_collection[0].should eql(injector)
320
- @run_context.resource_collection[1].name.should eql(:prepared_thumbs)
321
- @run_context.resource_collection[2].name.should eql(:twiddled_thumbs)
322
- @run_context.resource_collection[3].should eql(dummy)
343
+ expect(@run_context.resource_collection[0]).to eql(injector)
344
+ expect(@run_context.resource_collection[1].name).to eql('prepared_thumbs')
345
+ expect(@run_context.resource_collection[2].name).to eql('twiddled_thumbs')
346
+ expect(@run_context.resource_collection[3]).to eql(dummy)
323
347
  end
324
348
 
325
349
  it "should insert embedded resources from multiple providers, including from the last position, properly into the resource collection" do
@@ -340,13 +364,13 @@ describe "LWRP" do
340
364
 
341
365
  Chef::Runner.new(@run_context).converge
342
366
 
343
- @run_context.resource_collection[0].should eql(injector)
344
- @run_context.resource_collection[1].name.should eql(:prepared_thumbs)
345
- @run_context.resource_collection[2].name.should eql(:twiddled_thumbs)
346
- @run_context.resource_collection[3].should eql(dummy)
347
- @run_context.resource_collection[4].should eql(injector2)
348
- @run_context.resource_collection[5].name.should eql(:prepared_eyes)
349
- @run_context.resource_collection[6].name.should eql(:dried_paint_watched)
367
+ expect(@run_context.resource_collection[0]).to eql(injector)
368
+ expect(@run_context.resource_collection[1].name).to eql('prepared_thumbs')
369
+ expect(@run_context.resource_collection[2].name).to eql('twiddled_thumbs')
370
+ expect(@run_context.resource_collection[3]).to eql(dummy)
371
+ expect(@run_context.resource_collection[4]).to eql(injector2)
372
+ expect(@run_context.resource_collection[5].name).to eql('prepared_eyes')
373
+ expect(@run_context.resource_collection[6].name).to eql('dried_paint_watched')
350
374
  end
351
375
 
352
376
  it "should properly handle a new_resource reference" do
@@ -357,7 +381,7 @@ describe "LWRP" do
357
381
  provider = Chef::Platform.provider_for_resource(resource, :twiddle_thumbs)
358
382
  provider.action_twiddle_thumbs
359
383
 
360
- provider.monkey_name.should == "my monkey's name is 'bob'"
384
+ expect(provider.monkey_name).to eq("my monkey's name is 'bob'")
361
385
  end
362
386
 
363
387
  it "should properly handle an embedded Resource accessing the enclosing Provider's scope" do
@@ -369,7 +393,7 @@ describe "LWRP" do
369
393
  #provider = @runner.build_provider(resource)
370
394
  provider.action_twiddle_thumbs
371
395
 
372
- provider.enclosed_resource.monkey.should == 'bob, the monkey'
396
+ expect(provider.enclosed_resource.monkey).to eq('bob, the monkey')
373
397
  end
374
398
 
375
399
  describe "when using inline compilation" do
@@ -388,27 +412,27 @@ describe "LWRP" do
388
412
 
389
413
  it "does not add interior resources to the exterior resource collection" do
390
414
  @resource.run_action(:test)
391
- @run_context.resource_collection.should be_empty
415
+ expect(@run_context.resource_collection).to be_empty
392
416
  end
393
417
 
394
418
  context "when interior resources are updated" do
395
419
  it "processes notifications within the LWRP provider's action" do
396
420
  @resource.run_action(:test)
397
- $interior_ruby_block_2.should == "executed"
421
+ expect($interior_ruby_block_2).to eq("executed")
398
422
  end
399
423
 
400
424
  it "marks the parent resource updated" do
401
425
  @resource.run_action(:test)
402
- @resource.should be_updated
403
- @resource.should be_updated_by_last_action
426
+ expect(@resource).to be_updated
427
+ expect(@resource).to be_updated_by_last_action
404
428
  end
405
429
  end
406
430
 
407
431
  context "when interior resources are not updated" do
408
432
  it "does not mark the parent resource updated" do
409
433
  @resource.run_action(:no_updates)
410
- @resource.should_not be_updated
411
- @resource.should_not be_updated_by_last_action
434
+ expect(@resource).not_to be_updated
435
+ expect(@resource).not_to be_updated_by_last_action
412
436
  end
413
437
  end
414
438
 
@@ -24,27 +24,27 @@ describe Mash do
24
24
  data = {:x=>"one", :y=>"two", :z=>"three"}
25
25
  @orig = Mash.new(data)
26
26
  @copy = @orig.dup
27
- @copy.to_hash.should == Mash.new(data).to_hash
27
+ expect(@copy.to_hash).to eq(Mash.new(data).to_hash)
28
28
  @copy[:x] = "four"
29
- @orig[:x].should == "one"
29
+ expect(@orig[:x]).to eq("one")
30
30
  end
31
31
 
32
32
  it "should duplicate a mash with an array to a new mash" do
33
33
  data = {:x=>"one", :y=>"two", :z=>[1,2,3]}
34
34
  @orig = Mash.new(data)
35
35
  @copy = @orig.dup
36
- @copy.to_hash.should == Mash.new(data).to_hash
36
+ expect(@copy.to_hash).to eq(Mash.new(data).to_hash)
37
37
  @copy[:z] << 4
38
- @orig[:z].should == [1,2,3]
38
+ expect(@orig[:z]).to eq([1,2,3])
39
39
  end
40
40
 
41
41
  it "should duplicate a nested mash to a new mash" do
42
42
  data = {:x=>"one", :y=>"two", :z=>Mash.new({:a=>[1,2,3]})}
43
43
  @orig = Mash.new(data)
44
44
  @copy = @orig.dup
45
- @copy.to_hash.should == Mash.new(data).to_hash
45
+ expect(@copy.to_hash).to eq(Mash.new(data).to_hash)
46
46
  @copy[:z][:a] << 4
47
- @orig[:z][:a].should == [1,2,3]
47
+ expect(@orig[:z][:a]).to eq([1,2,3])
48
48
  end
49
49
 
50
50
  # add more!