chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (653) 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 -49
  643. data/bin/shef +0 -35
  644. data/lib/chef/application/agent.rb +0 -18
  645. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  646. data/lib/chef/monkey_patches/numeric.rb +0 -15
  647. data/lib/chef/monkey_patches/object.rb +0 -9
  648. data/lib/chef/monkey_patches/pathname.rb +0 -32
  649. data/lib/chef/monkey_patches/regexp.rb +0 -34
  650. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  651. data/lib/chef/monkey_patches/string.rb +0 -49
  652. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  653. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -62,7 +62,7 @@ describe Chef::RunContext::CookbookCompiler do
62
62
  node.run_list("dependency1::default")
63
63
 
64
64
  compiler.compile_attributes
65
- node[:attr_load_order].should == ["dependency1::default", "dependency1::aa_first", "dependency1::zz_last"]
65
+ expect(node[:attr_load_order]).to eq(["dependency1::default", "dependency1::aa_first", "dependency1::zz_last"])
66
66
  end
67
67
 
68
68
  it "loads dependencies before loading the depending cookbook's attributes" do
@@ -73,11 +73,11 @@ describe Chef::RunContext::CookbookCompiler do
73
73
  compiler.compile_attributes
74
74
 
75
75
  # dependencies are stored in a hash so therefore unordered, but they should be loaded in sort order
76
- node[:attr_load_order].should == ["dependency1::default",
76
+ expect(node[:attr_load_order]).to eq(["dependency1::default",
77
77
  "dependency1::aa_first",
78
78
  "dependency1::zz_last",
79
79
  "dependency2::default",
80
- "test-with-deps::default"]
80
+ "test-with-deps::default"])
81
81
  end
82
82
 
83
83
  it "does not follow infinite dependency loops" do
@@ -86,7 +86,7 @@ describe Chef::RunContext::CookbookCompiler do
86
86
  # Circular deps should not cause infinite loops
87
87
  compiler.compile_attributes
88
88
 
89
- node[:attr_load_order].should == ["circular-dep2::default", "circular-dep1::default", "test-with-circular-deps::default"]
89
+ expect(node[:attr_load_order]).to eq(["circular-dep2::default", "circular-dep1::default", "test-with-circular-deps::default"])
90
90
  end
91
91
 
92
92
  it "loads attributes from cookbooks that don't have a default.rb attribute file" do
@@ -94,7 +94,7 @@ describe Chef::RunContext::CookbookCompiler do
94
94
 
95
95
  compiler.compile_attributes
96
96
 
97
- node[:attr_load_order].should == ["no-default-attr::server"]
97
+ expect(node[:attr_load_order]).to eq(["no-default-attr::server"])
98
98
  end
99
99
  end
100
100
 
@@ -108,7 +108,7 @@ describe Chef::RunContext::CookbookCompiler do
108
108
  node.run_list("test-with-deps::default", "test-with-circular-deps::default")
109
109
 
110
110
  compiler.compile_libraries
111
- LibraryLoadOrder.load_order.should == ["dependency1", "dependency2", "test-with-deps", "circular-dep2", "circular-dep1", "test-with-circular-deps"]
111
+ expect(LibraryLoadOrder.load_order).to eq(["dependency1", "dependency2", "test-with-deps", "circular-dep2", "circular-dep1", "test-with-circular-deps"])
112
112
  end
113
113
  end
114
114
 
@@ -122,7 +122,7 @@ describe Chef::RunContext::CookbookCompiler do
122
122
  node.run_list("test-with-deps::default", "test-with-circular-deps::default")
123
123
 
124
124
  compiler.compile_lwrps
125
- LibraryLoadOrder.load_order.should == ["dependency1-provider",
125
+ expect(LibraryLoadOrder.load_order).to eq(["dependency1-provider",
126
126
  "dependency1-resource",
127
127
  "dependency2-provider",
128
128
  "dependency2-resource",
@@ -133,7 +133,7 @@ describe Chef::RunContext::CookbookCompiler do
133
133
  "circular-dep1-provider",
134
134
  "circular-dep1-resource",
135
135
  "test-with-circular-deps-provider",
136
- "test-with-circular-deps-resource"]
136
+ "test-with-circular-deps-resource"])
137
137
  end
138
138
  end
139
139
 
@@ -148,12 +148,12 @@ describe Chef::RunContext::CookbookCompiler do
148
148
  node.run_list("test-with-deps::default", "test-with-circular-deps::default")
149
149
 
150
150
  compiler.compile_resource_definitions
151
- LibraryLoadOrder.load_order.should == ["dependency1-definition",
151
+ expect(LibraryLoadOrder.load_order).to eq(["dependency1-definition",
152
152
  "dependency2-definition",
153
153
  "test-with-deps-definition",
154
154
  "circular-dep2-definition",
155
155
  "circular-dep1-definition",
156
- "test-with-circular-deps-definition"]
156
+ "test-with-circular-deps-definition"])
157
157
  end
158
158
 
159
159
  end
@@ -166,19 +166,19 @@ describe Chef::RunContext::CookbookCompiler do
166
166
  it "should return an array of cookbook names as symbols without duplicates" do
167
167
  node.run_list("test-with-circular-deps::default", "circular-dep1::default", "circular-dep2::default")
168
168
 
169
- compiler.cookbook_order.should == [:"circular-dep2",
169
+ expect(compiler.cookbook_order).to eq([:"circular-dep2",
170
170
  :"circular-dep1",
171
- :"test-with-circular-deps"]
171
+ :"test-with-circular-deps"])
172
172
  end
173
173
 
174
174
  it "determines if a cookbook is in the list of cookbooks reachable by dependency" do
175
175
  node.run_list("test-with-deps::default", "test-with-deps::server")
176
- compiler.cookbook_order.should == [:dependency1, :dependency2, :"test-with-deps"]
177
- compiler.unreachable_cookbook?(:dependency1).should be_false
178
- compiler.unreachable_cookbook?(:dependency2).should be_false
179
- compiler.unreachable_cookbook?(:'test-with-deps').should be_false
180
- compiler.unreachable_cookbook?(:'circular-dep1').should be_true
181
- compiler.unreachable_cookbook?(:'circular-dep2').should be_true
176
+ expect(compiler.cookbook_order).to eq([:dependency1, :dependency2, :"test-with-deps"])
177
+ expect(compiler.unreachable_cookbook?(:dependency1)).to be_falsey
178
+ expect(compiler.unreachable_cookbook?(:dependency2)).to be_falsey
179
+ expect(compiler.unreachable_cookbook?(:'test-with-deps')).to be_falsey
180
+ expect(compiler.unreachable_cookbook?(:'circular-dep1')).to be_truthy
181
+ expect(compiler.unreachable_cookbook?(:'circular-dep2')).to be_truthy
182
182
  end
183
183
 
184
184
 
@@ -21,8 +21,6 @@
21
21
  require 'spec_helper'
22
22
  require 'support/lib/library_load_order'
23
23
 
24
- Chef::Log.level = :debug
25
-
26
24
  describe Chef::RunContext do
27
25
  let(:chef_repo_path) { File.expand_path(File.join(CHEF_SPEC_DATA, "run_context", "cookbooks")) }
28
26
  let(:cookbook_collection) {
@@ -38,12 +36,21 @@ describe Chef::RunContext do
38
36
  let(:events) { Chef::EventDispatch::Dispatcher.new }
39
37
  let(:run_context) { Chef::RunContext.new(node, cookbook_collection, events) }
40
38
 
39
+ before(:each) do
40
+ @original_log_level = Chef::Log.level
41
+ Chef::Log.level = :debug
42
+ end
43
+
44
+ after(:each) do
45
+ Chef::Log.level = @original_log_level
46
+ end
47
+
41
48
  it "has a cookbook collection" do
42
- run_context.cookbook_collection.should == cookbook_collection
49
+ expect(run_context.cookbook_collection).to eq(cookbook_collection)
43
50
  end
44
51
 
45
52
  it "has a node" do
46
- run_context.node.should == node
53
+ expect(run_context.node).to eq(node)
47
54
  end
48
55
 
49
56
  describe "loading cookbooks for a run list" do
@@ -56,47 +63,52 @@ describe Chef::RunContext do
56
63
  end
57
64
 
58
65
  node.run_list << "test" << "test::one" << "test::two"
59
- node.should_receive(:loaded_recipe).with(:test, "default")
60
- node.should_receive(:loaded_recipe).with(:test, "one")
61
- node.should_receive(:loaded_recipe).with(:test, "two")
66
+ expect(node).to receive(:loaded_recipe).with(:test, "default")
67
+ expect(node).to receive(:loaded_recipe).with(:test, "one")
68
+ expect(node).to receive(:loaded_recipe).with(:test, "two")
62
69
  run_context.load(node.run_list.expand('_default'))
63
70
  end
64
71
 
65
72
  it "should load all the definitions in the cookbooks for this node" do
66
- run_context.definitions.should have_key(:new_cat)
67
- run_context.definitions.should have_key(:new_badger)
68
- run_context.definitions.should have_key(:new_dog)
73
+ expect(run_context.definitions).to have_key(:new_cat)
74
+ expect(run_context.definitions).to have_key(:new_badger)
75
+ expect(run_context.definitions).to have_key(:new_dog)
69
76
  end
70
77
 
71
78
  it "should load all the recipes specified for this node" do
72
- run_context.resource_collection[0].to_s.should == "cat[einstein]"
73
- run_context.resource_collection[1].to_s.should == "cat[loulou]"
74
- run_context.resource_collection[2].to_s.should == "cat[birthday]"
75
- run_context.resource_collection[3].to_s.should == "cat[peanut]"
76
- run_context.resource_collection[4].to_s.should == "cat[fat peanut]"
79
+ expect(run_context.resource_collection[0].to_s).to eq("cat[einstein]")
80
+ expect(run_context.resource_collection[1].to_s).to eq("cat[loulou]")
81
+ expect(run_context.resource_collection[2].to_s).to eq("cat[birthday]")
82
+ expect(run_context.resource_collection[3].to_s).to eq("cat[peanut]")
83
+ expect(run_context.resource_collection[4].to_s).to eq("cat[fat peanut]")
77
84
  end
78
85
 
79
86
  it "loads all the attribute files in the cookbook collection" do
80
- run_context.loaded_fully_qualified_attribute?("test", "george").should be_true
81
- node[:george].should == "washington"
87
+ expect(run_context.loaded_fully_qualified_attribute?("test", "george")).to be_truthy
88
+ expect(node[:george]).to eq("washington")
82
89
  end
83
90
 
84
91
  it "registers attributes files as loaded so they won't be reloaded" do
85
92
  # This test unfortunately is pretty tightly intertwined with the
86
93
  # implementation of how nodes load attribute files, but is the only
87
94
  # convenient way to test this behavior.
88
- node.should_not_receive(:from_file)
95
+ expect(node).not_to receive(:from_file)
89
96
  node.include_attribute("test::george")
90
97
  end
91
98
 
92
99
  it "raises an error when attempting to include_recipe from a cookbook not reachable by run list or dependencies" do
93
- node.should_receive(:loaded_recipe).with(:ancient, "aliens")
94
- lambda do
100
+ expect(node).to receive(:loaded_recipe).with(:ancient, "aliens")
101
+ expect do
95
102
  run_context.include_recipe("ancient::aliens")
96
103
  # In CHEF-5120, this becomes a Chef::Exceptions::MissingCookbookDependency error:
97
- end.should raise_error(Chef::Exceptions::CookbookNotFound)
104
+ end.to raise_error(Chef::Exceptions::CookbookNotFound)
98
105
  end
99
106
 
107
+ it "raises an error on a recipe with a leading :: with no current_cookbook" do
108
+ expect do
109
+ run_context.include_recipe("::aliens")
110
+ end.to raise_error(RuntimeError)
111
+ end
100
112
  end
101
113
 
102
114
  describe "querying the contents of cookbooks" do
@@ -110,8 +122,8 @@ describe Chef::RunContext do
110
122
  }
111
123
 
112
124
  it "queries whether a given cookbook has a specific template" do
113
- run_context.should have_template_in_cookbook("openldap", "test.erb")
114
- run_context.should_not have_template_in_cookbook("openldap", "missing.erb")
125
+ expect(run_context).to have_template_in_cookbook("openldap", "test.erb")
126
+ expect(run_context).not_to have_template_in_cookbook("openldap", "missing.erb")
115
127
  end
116
128
 
117
129
  it "errors when querying for a template in a not-available cookbook" do
@@ -121,8 +133,8 @@ describe Chef::RunContext do
121
133
  end
122
134
 
123
135
  it "queries whether a given cookbook has a specific cookbook_file" do
124
- run_context.should have_cookbook_file_in_cookbook("java", "java.response")
125
- run_context.should_not have_cookbook_file_in_cookbook("java", "missing.txt")
136
+ expect(run_context).to have_cookbook_file_in_cookbook("java", "java.response")
137
+ expect(run_context).not_to have_cookbook_file_in_cookbook("java", "missing.txt")
126
138
  end
127
139
 
128
140
  it "errors when querying for a cookbook_file in a not-available cookbook" do
@@ -140,52 +152,11 @@ describe Chef::RunContext do
140
152
  it "stores and deletes the reboot request" do
141
153
  run_context.request_reboot(expected)
142
154
  expect(run_context.reboot_info).to eq(expected)
143
- expect(run_context.reboot_requested?).to be_true
155
+ expect(run_context.reboot_requested?).to be_truthy
144
156
 
145
157
  run_context.cancel_reboot
146
158
  expect(run_context.reboot_info).to eq({})
147
- expect(run_context.reboot_requested?).to be_false
148
- end
149
- end
150
-
151
- describe "notifications" do
152
- let(:notification) { Chef::Resource::Notification.new(nil, nil, notifying_resource) }
153
-
154
- shared_context "notifying resource is a Chef::Resource" do
155
- let(:notifying_resource) { Chef::Resource.new("gerbil") }
156
-
157
- it "should be keyed off the resource name" do
158
- run_context.send(setter, notification)
159
- expect(run_context.send(getter, notifying_resource)).to eq([notification])
160
- end
161
- end
162
-
163
- shared_context "notifying resource is a subclass of Chef::Resource" do
164
- let(:declared_type) { :alpaca }
165
- let(:notifying_resource) {
166
- r = Class.new(Chef::Resource).new("guinea pig")
167
- r.declared_type = declared_type
168
- r
169
- }
170
-
171
- it "should be keyed off the resource declared key" do
172
- run_context.send(setter, notification)
173
- expect(run_context.send(getter, notifying_resource)).to eq([notification])
174
- end
175
- end
176
-
177
- describe "of the immediate kind" do
178
- let(:setter) { :notifies_immediately }
179
- let(:getter) { :immediate_notifications }
180
- include_context "notifying resource is a Chef::Resource"
181
- include_context "notifying resource is a subclass of Chef::Resource"
182
- end
183
-
184
- describe "of the delayed kind" do
185
- let(:setter) { :notifies_delayed }
186
- let(:getter) { :delayed_notifications }
187
- include_context "notifying resource is a Chef::Resource"
188
- include_context "notifying resource is a subclass of Chef::Resource"
159
+ expect(run_context.reboot_requested?).to be_falsey
189
160
  end
190
161
  end
191
162
  end
@@ -27,23 +27,23 @@ describe Chef::RunList::RunListExpansion do
27
27
 
28
28
  describe "before expanding the run list" do
29
29
  it "has an array of run list items" do
30
- @expansion.run_list_items.should == @run_list.run_list_items
30
+ expect(@expansion.run_list_items).to eq(@run_list.run_list_items)
31
31
  end
32
32
 
33
33
  it "has default_attrs" do
34
- @expansion.default_attrs.should == Mash.new
34
+ expect(@expansion.default_attrs).to eq(Mash.new)
35
35
  end
36
36
 
37
37
  it "has override attrs" do
38
- @expansion.override_attrs.should == Mash.new
38
+ expect(@expansion.override_attrs).to eq(Mash.new)
39
39
  end
40
40
 
41
41
  it "it has an empty list of recipes" do
42
- @expansion.should have(0).recipes
42
+ expect(@expansion.recipes.size).to eq(0)
43
43
  end
44
44
 
45
45
  it "has not applied its roles" do
46
- @expansion.applied_role?('rage').should be_false
46
+ expect(@expansion.applied_role?('rage')).to be_falsey
47
47
  end
48
48
  end
49
49
 
@@ -54,28 +54,28 @@ describe Chef::RunList::RunListExpansion do
54
54
  r.env_run_lists('_default' => [], "prod" => ["recipe[prod-only]"])
55
55
  end
56
56
  @expansion = Chef::RunList::RunListExpansion.new("prod", @run_list.run_list_items)
57
- @expansion.should_receive(:fetch_role).and_return(@rage_role)
57
+ expect(@expansion).to receive(:fetch_role).and_return(@rage_role)
58
58
  @expansion.expand
59
59
  end
60
60
 
61
61
  it "has the correct list of recipes for the given environment" do
62
- @expansion.recipes.should == ["lobster", "prod-only", "fist"]
62
+ expect(@expansion.recipes).to eq(["lobster", "prod-only", "fist"])
63
63
  end
64
64
 
65
65
  end
66
66
 
67
67
  describe "after applying a role" do
68
68
  before do
69
- @expansion.stub(:fetch_role).and_return(Chef::Role.new)
69
+ allow(@expansion).to receive(:fetch_role).and_return(Chef::Role.new)
70
70
  @expansion.inflate_role('rage', "role[base]")
71
71
  end
72
72
 
73
73
  it "tracks the applied role" do
74
- @expansion.applied_role?('rage').should be_true
74
+ expect(@expansion.applied_role?('rage')).to be_truthy
75
75
  end
76
76
 
77
77
  it "does not inflate the role again" do
78
- @expansion.inflate_role('rage', "role[base]").should be_false
78
+ expect(@expansion.inflate_role('rage', "role[base]")).to be_falsey
79
79
  end
80
80
  end
81
81
 
@@ -89,39 +89,39 @@ describe Chef::RunList::RunListExpansion do
89
89
  @second_role.run_list('recipe[crabrevenge]')
90
90
  @second_role.default_attributes({'foo' => 'boo'})
91
91
  @second_role.override_attributes({'baz' => 'bux'})
92
- @expansion.stub(:fetch_role).and_return(@first_role, @second_role)
92
+ allow(@expansion).to receive(:fetch_role).and_return(@first_role, @second_role)
93
93
  @expansion.expand
94
94
  end
95
95
 
96
96
  it "has the ordered list of recipes" do
97
- @expansion.recipes.should == ['lobster', 'crabrevenge', 'fist']
97
+ expect(@expansion.recipes).to eq(['lobster', 'crabrevenge', 'fist'])
98
98
  end
99
99
 
100
- it "has the merged attributes from the roles with outer roles overridding inner" do
101
- @expansion.default_attrs.should == {'foo' => 'bar'}
102
- @expansion.override_attrs.should == {'baz' => 'qux'}
100
+ it "has the merged attributes from the roles with outer roles overriding inner" do
101
+ expect(@expansion.default_attrs).to eq({'foo' => 'bar'})
102
+ expect(@expansion.override_attrs).to eq({'baz' => 'qux'})
103
103
  end
104
104
 
105
105
  it "has the list of all roles applied" do
106
106
  # this is the correct order, but 1.8 hash order is not stable
107
- @expansion.roles.should =~ ['rage', 'mollusk']
107
+ expect(@expansion.roles).to match_array(['rage', 'mollusk'])
108
108
  end
109
109
 
110
110
  end
111
111
 
112
- describe "after expanding a run list with a non existant role" do
112
+ describe "after expanding a run list with a non existent role" do
113
113
  before do
114
- @expansion.stub(:fetch_role) { @expansion.role_not_found('crabrevenge', "role[base]") }
114
+ allow(@expansion).to receive(:fetch_role) { @expansion.role_not_found('crabrevenge', "role[base]") }
115
115
  @expansion.expand
116
116
  end
117
117
 
118
118
  it "is invalid" do
119
- @expansion.should be_invalid
120
- @expansion.errors?.should be_true # aliases
119
+ expect(@expansion).to be_invalid
120
+ expect(@expansion.errors?).to be_truthy # aliases
121
121
  end
122
122
 
123
123
  it "has a list of invalid role names" do
124
- @expansion.errors.should include('crabrevenge')
124
+ expect(@expansion.errors).to include('crabrevenge')
125
125
  end
126
126
 
127
127
  end
@@ -22,16 +22,16 @@ describe Chef::RunList::RunListItem do
22
22
 
23
23
  describe "when creating from a Hash" do
24
24
  it "raises an exception when the hash doesn't have a :type key" do
25
- lambda {Chef::RunList::RunListItem.new(:name => "tatft")}.should raise_error(ArgumentError)
25
+ expect {Chef::RunList::RunListItem.new(:name => "tatft")}.to raise_error(ArgumentError)
26
26
  end
27
27
 
28
28
  it "raises an exception when the hash doesn't have an :name key" do
29
- lambda {Chef::RunList::RunListItem.new(:type => 'R') }.should raise_error(ArgumentError)
29
+ expect {Chef::RunList::RunListItem.new(:type => 'R') }.to raise_error(ArgumentError)
30
30
  end
31
31
 
32
32
  it "sets the name and type as given in the hash" do
33
33
  item = Chef::RunList::RunListItem.new(:type => 'fuuu', :name => 'uuuu')
34
- item.to_s.should == 'fuuu[uuuu]'
34
+ expect(item.to_s).to eq('fuuu[uuuu]')
35
35
  end
36
36
 
37
37
  end
@@ -39,47 +39,47 @@ describe Chef::RunList::RunListItem do
39
39
  describe "when creating an item from a string" do
40
40
  it "parses a qualified recipe" do
41
41
  item = Chef::RunList::RunListItem.new("recipe[rage]")
42
- item.should be_a_recipe
43
- item.should_not be_a_role
44
- item.to_s.should == 'recipe[rage]'
45
- item.name.should == 'rage'
42
+ expect(item).to be_a_recipe
43
+ expect(item).not_to be_a_role
44
+ expect(item.to_s).to eq('recipe[rage]')
45
+ expect(item.name).to eq('rage')
46
46
  end
47
47
 
48
48
  it "parses a qualified recipe with a version" do
49
49
  item = Chef::RunList::RunListItem.new("recipe[rage@0.1.0]")
50
- item.should be_a_recipe
51
- item.should_not be_a_role
52
- item.to_s.should == 'recipe[rage@0.1.0]'
53
- item.name.should == 'rage'
54
- item.version.should == '0.1.0'
50
+ expect(item).to be_a_recipe
51
+ expect(item).not_to be_a_role
52
+ expect(item.to_s).to eq('recipe[rage@0.1.0]')
53
+ expect(item.name).to eq('rage')
54
+ expect(item.version).to eq('0.1.0')
55
55
  end
56
56
 
57
57
  it "parses a qualified role" do
58
58
  item = Chef::RunList::RunListItem.new("role[fist]")
59
- item.should be_a_role
60
- item.should_not be_a_recipe
61
- item.to_s.should == 'role[fist]'
62
- item.name.should == 'fist'
59
+ expect(item).to be_a_role
60
+ expect(item).not_to be_a_recipe
61
+ expect(item.to_s).to eq('role[fist]')
62
+ expect(item.name).to eq('fist')
63
63
  end
64
64
 
65
65
  it "parses an unqualified recipe" do
66
66
  item = Chef::RunList::RunListItem.new("lobster")
67
- item.should be_a_recipe
68
- item.should_not be_a_role
69
- item.to_s.should == 'recipe[lobster]'
70
- item.name.should == 'lobster'
67
+ expect(item).to be_a_recipe
68
+ expect(item).not_to be_a_role
69
+ expect(item.to_s).to eq('recipe[lobster]')
70
+ expect(item.name).to eq('lobster')
71
71
  end
72
72
 
73
73
  it "raises an exception when the string has typo on the type part" do
74
- lambda {Chef::RunList::RunListItem.new("Recipe[lobster]") }.should raise_error(ArgumentError)
74
+ expect {Chef::RunList::RunListItem.new("Recipe[lobster]") }.to raise_error(ArgumentError)
75
75
  end
76
76
 
77
77
  it "raises an exception when the string has extra space between the type and the name" do
78
- lambda {Chef::RunList::RunListItem.new("recipe [lobster]") }.should raise_error(ArgumentError)
78
+ expect {Chef::RunList::RunListItem.new("recipe [lobster]") }.to raise_error(ArgumentError)
79
79
  end
80
80
 
81
81
  it "raises an exception when the string does not close the bracket" do
82
- lambda {Chef::RunList::RunListItem.new("recipe[lobster") }.should raise_error(ArgumentError)
82
+ expect {Chef::RunList::RunListItem.new("recipe[lobster") }.to raise_error(ArgumentError)
83
83
  end
84
84
  end
85
85
 
@@ -87,31 +87,31 @@ describe Chef::RunList::RunListItem do
87
87
  it "is equal to another run list item that has the same name and type" do
88
88
  item1 = Chef::RunList::RunListItem.new('recipe[lrf]')
89
89
  item2 = Chef::RunList::RunListItem.new('recipe[lrf]')
90
- item1.should == item2
90
+ expect(item1).to eq(item2)
91
91
  end
92
92
 
93
93
  it "is not equal to another run list item with the same name and different type" do
94
94
  item1 = Chef::RunList::RunListItem.new('recipe[lrf]')
95
95
  item2 = Chef::RunList::RunListItem.new('role[lrf]')
96
- item1.should_not == item2
96
+ expect(item1).not_to eq(item2)
97
97
  end
98
98
 
99
99
  it "is not equal to another run list item with the same type and different name" do
100
100
  item1 = Chef::RunList::RunListItem.new('recipe[lrf]')
101
101
  item2 = Chef::RunList::RunListItem.new('recipe[lobsterragefist]')
102
- item1.should_not == item2
102
+ expect(item1).not_to eq(item2)
103
103
  end
104
104
 
105
105
  it "is not equal to another run list item with the same name and type but different version" do
106
106
  item1 = Chef::RunList::RunListItem.new('recipe[lrf,0.1.0]')
107
107
  item2 = Chef::RunList::RunListItem.new('recipe[lrf,0.2.0]')
108
- item1.should_not == item2
108
+ expect(item1).not_to eq(item2)
109
109
  end
110
110
  end
111
111
 
112
112
  describe "comparing to strings" do
113
113
  it "is equal to a string if that string matches its to_s representation" do
114
- Chef::RunList::RunListItem.new('recipe[lrf]').should == 'recipe[lrf]'
114
+ expect(Chef::RunList::RunListItem.new('recipe[lrf]')).to eq('recipe[lrf]')
115
115
  end
116
116
  end
117
117
  end