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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -67,16 +67,16 @@ describe Chef::Knife::UI do
67
67
  @ui.config[:disable_editing] = false
68
68
  @ui.config[:editor] = my_editor
69
69
  @mock = double('Tempfile')
70
- @mock.should_receive(:sync=).with(true)
71
- @mock.should_receive(:puts).with(json_from_ruby)
72
- @mock.should_receive(:close)
73
- @mock.should_receive(:path).at_least(:once).and_return(temp_path)
74
- Tempfile.should_receive(:open).with([ 'knife-edit-', '.json' ]).and_yield(@mock)
70
+ expect(@mock).to receive(:sync=).with(true)
71
+ expect(@mock).to receive(:puts).with(json_from_ruby)
72
+ expect(@mock).to receive(:close)
73
+ expect(@mock).to receive(:path).at_least(:once).and_return(temp_path)
74
+ expect(Tempfile).to receive(:open).with([ 'knife-edit-', '.json' ]).and_yield(@mock)
75
75
  end
76
76
  context "and the editor works" do
77
77
  before do
78
- @ui.should_receive(:system).with("#{my_editor} #{temp_path}").and_return(true)
79
- IO.should_receive(:read).with(temp_path).and_return(json_from_editor)
78
+ expect(@ui).to receive(:system).with("#{my_editor} #{temp_path}").and_return(true)
79
+ expect(IO).to receive(:read).with(temp_path).and_return(json_from_editor)
80
80
  end
81
81
 
82
82
  context "when parse_output is false" do
@@ -93,8 +93,8 @@ describe Chef::Knife::UI do
93
93
  end
94
94
  context "when running the editor fails with nil" do
95
95
  before do
96
- @ui.should_receive(:system).with("#{my_editor} #{temp_path}").and_return(nil)
97
- IO.should_not_receive(:read)
96
+ expect(@ui).to receive(:system).with("#{my_editor} #{temp_path}").and_return(nil)
97
+ expect(IO).not_to receive(:read)
98
98
  end
99
99
  it "throws an exception" do
100
100
  expect{ subject }.to raise_error(RuntimeError)
@@ -102,8 +102,8 @@ describe Chef::Knife::UI do
102
102
  end
103
103
  context "when running the editor fails with false" do
104
104
  before do
105
- @ui.should_receive(:system).with("#{my_editor} #{temp_path}").and_return(false)
106
- IO.should_not_receive(:read)
105
+ expect(@ui).to receive(:system).with("#{my_editor} #{temp_path}").and_return(false)
106
+ expect(IO).not_to receive(:read)
107
107
  end
108
108
  it "throws an exception" do
109
109
  expect{ subject }.to raise_error(RuntimeError)
@@ -115,13 +115,13 @@ describe Chef::Knife::UI do
115
115
  @ui.config[:disable_editing] = false
116
116
  @ui.config[:editor] = my_editor
117
117
  @tempfile = Tempfile.new([ 'knife-edit-', '.json' ])
118
- Tempfile.should_receive(:open).with([ 'knife-edit-', '.json' ]).and_yield(@tempfile)
118
+ expect(Tempfile).to receive(:open).with([ 'knife-edit-', '.json' ]).and_yield(@tempfile)
119
119
  end
120
120
 
121
121
  context "and the editor works" do
122
122
  before do
123
- @ui.should_receive(:system).with("#{my_editor} #{@tempfile.path}").and_return(true)
124
- IO.should_receive(:read).with(@tempfile.path).and_return(json_from_editor)
123
+ expect(@ui).to receive(:system).with("#{my_editor} #{@tempfile.path}").and_return(true)
124
+ expect(IO).to receive(:read).with(@tempfile.path).and_return(json_from_editor)
125
125
  end
126
126
 
127
127
  context "when parse_output is false" do
@@ -153,33 +153,33 @@ describe Chef::Knife::UI do
153
153
  describe "format_list_for_display" do
154
154
  it "should print the full hash if --with-uri is true" do
155
155
  @ui.config[:with_uri] = true
156
- @ui.format_list_for_display({ :marcy => :playground }).should == { :marcy => :playground }
156
+ expect(@ui.format_list_for_display({ :marcy => :playground })).to eq({ :marcy => :playground })
157
157
  end
158
158
 
159
159
  it "should print only the keys if --with-uri is false" do
160
160
  @ui.config[:with_uri] = false
161
- @ui.format_list_for_display({ :marcy => :playground }).should == [ :marcy ]
161
+ expect(@ui.format_list_for_display({ :marcy => :playground })).to eq([ :marcy ])
162
162
  end
163
163
  end
164
164
 
165
165
  shared_examples "an output mehthod handling IO exceptions" do |method|
166
166
  it "should throw Errno::EIO exceptions" do
167
- @out.stub(:puts).and_raise(Errno::EIO)
168
- @err.stub(:puts).and_raise(Errno::EIO)
169
- lambda {@ui.send(method, "hi")}.should raise_error(Errno::EIO)
167
+ allow(@out).to receive(:puts).and_raise(Errno::EIO)
168
+ allow(@err).to receive(:puts).and_raise(Errno::EIO)
169
+ expect {@ui.send(method, "hi")}.to raise_error(Errno::EIO)
170
170
  end
171
171
 
172
172
  it "should ignore Errno::EPIPE exceptions (CHEF-3516)" do
173
- @out.stub(:puts).and_raise(Errno::EPIPE)
174
- @err.stub(:puts).and_raise(Errno::EPIPE)
175
- lambda {@ui.send(method, "hi")}.should raise_error(SystemExit)
173
+ allow(@out).to receive(:puts).and_raise(Errno::EPIPE)
174
+ allow(@err).to receive(:puts).and_raise(Errno::EPIPE)
175
+ expect {@ui.send(method, "hi")}.to raise_error(SystemExit)
176
176
  end
177
177
 
178
178
  it "should throw Errno::EPIPE exceptions with -VV (CHEF-3516)" do
179
179
  @config[:verbosity] = 2
180
- @out.stub(:puts).and_raise(Errno::EPIPE)
181
- @err.stub(:puts).and_raise(Errno::EPIPE)
182
- lambda {@ui.send(method, "hi")}.should raise_error(Errno::EPIPE)
180
+ allow(@out).to receive(:puts).and_raise(Errno::EPIPE)
181
+ allow(@err).to receive(:puts).and_raise(Errno::EPIPE)
182
+ expect {@ui.send(method, "hi")}.to raise_error(Errno::EPIPE)
183
183
  end
184
184
  end
185
185
 
@@ -188,12 +188,12 @@ describe Chef::Knife::UI do
188
188
 
189
189
  it "formats strings appropriately" do
190
190
  @ui.output("hi")
191
- @out.string.should == "hi\n"
191
+ expect(@out.string).to eq("hi\n")
192
192
  end
193
193
 
194
194
  it "formats hashes appropriately" do
195
195
  @ui.output({'hi' => 'a', 'lo' => 'b' })
196
- @out.string.should == <<EOM
196
+ expect(@out.string).to eq <<EOM
197
197
  hi: a
198
198
  lo: b
199
199
  EOM
@@ -201,12 +201,12 @@ EOM
201
201
 
202
202
  it "formats empty hashes appropriately" do
203
203
  @ui.output({})
204
- @out.string.should == "\n"
204
+ expect(@out.string).to eq("\n")
205
205
  end
206
206
 
207
207
  it "formats arrays appropriately" do
208
208
  @ui.output([ 'a', 'b' ])
209
- @out.string.should == <<EOM
209
+ expect(@out.string).to eq <<EOM
210
210
  a
211
211
  b
212
212
  EOM
@@ -214,22 +214,22 @@ EOM
214
214
 
215
215
  it "formats empty arrays appropriately" do
216
216
  @ui.output([ ])
217
- @out.string.should == "\n"
217
+ expect(@out.string).to eq("\n")
218
218
  end
219
219
 
220
220
  it "formats single-member arrays appropriately" do
221
221
  @ui.output([ 'a' ])
222
- @out.string.should == "a\n"
222
+ expect(@out.string).to eq("a\n")
223
223
  end
224
224
 
225
225
  it "formats nested single-member arrays appropriately" do
226
226
  @ui.output([ [ 'a' ] ])
227
- @out.string.should == "a\n"
227
+ expect(@out.string).to eq("a\n")
228
228
  end
229
229
 
230
230
  it "formats nested arrays appropriately" do
231
231
  @ui.output([ [ 'a', 'b' ], [ 'c', 'd' ]])
232
- @out.string.should == <<EOM
232
+ expect(@out.string).to eq <<EOM
233
233
  a
234
234
  b
235
235
 
@@ -240,7 +240,7 @@ EOM
240
240
 
241
241
  it "formats nested arrays with single- and empty subarrays appropriately" do
242
242
  @ui.output([ [ 'a', 'b' ], [ 'c' ], [], [ 'd', 'e' ]])
243
- @out.string.should == <<EOM
243
+ expect(@out.string).to eq <<EOM
244
244
  a
245
245
  b
246
246
 
@@ -254,7 +254,7 @@ EOM
254
254
 
255
255
  it "formats arrays of hashes with extra lines in between for readability" do
256
256
  @ui.output([ { 'a' => 'b', 'c' => 'd' }, { 'x' => 'y' }, { 'm' => 'n', 'o' => 'p' }])
257
- @out.string.should == <<EOM
257
+ expect(@out.string).to eq <<EOM
258
258
  a: b
259
259
  c: d
260
260
 
@@ -267,7 +267,7 @@ EOM
267
267
 
268
268
  it "formats hashes with empty array members appropriately" do
269
269
  @ui.output({ 'a' => [], 'b' => 'c' })
270
- @out.string.should == <<EOM
270
+ expect(@out.string).to eq <<EOM
271
271
  a:
272
272
  b: c
273
273
  EOM
@@ -275,7 +275,7 @@ EOM
275
275
 
276
276
  it "formats hashes with single-member array values appropriately" do
277
277
  @ui.output({ 'a' => [ 'foo' ], 'b' => 'c' })
278
- @out.string.should == <<EOM
278
+ expect(@out.string).to eq <<EOM
279
279
  a: foo
280
280
  b: c
281
281
  EOM
@@ -283,7 +283,7 @@ EOM
283
283
 
284
284
  it "formats hashes with array members appropriately" do
285
285
  @ui.output({ 'a' => [ 'foo', 'bar' ], 'b' => 'c' })
286
- @out.string.should == <<EOM
286
+ expect(@out.string).to eq <<EOM
287
287
  a:
288
288
  foo
289
289
  bar
@@ -293,7 +293,7 @@ EOM
293
293
 
294
294
  it "formats hashes with single-member nested array values appropriately" do
295
295
  @ui.output({ 'a' => [ [ 'foo' ] ], 'b' => 'c' })
296
- @out.string.should == <<EOM
296
+ expect(@out.string).to eq <<EOM
297
297
  a:
298
298
  foo
299
299
  b: c
@@ -304,12 +304,12 @@ EOM
304
304
  @ui.output({ 'a' => [ [ 'foo', 'bar' ], [ 'baz', 'bjork' ] ], 'b' => 'c' })
305
305
  # XXX: using a HEREDOC at this point results in a line with required spaces which auto-whitespace removal settings
306
306
  # on editors will remove and will break this test.
307
- @out.string.should == "a:\n foo\n bar\n \n baz\n bjork\nb: c\n"
307
+ expect(@out.string).to eq("a:\n foo\n bar\n \n baz\n bjork\nb: c\n")
308
308
  end
309
309
 
310
310
  it "formats hashes with hash values appropriately" do
311
311
  @ui.output({ 'a' => { 'aa' => 'bb', 'cc' => 'dd' }, 'b' => 'c' })
312
- @out.string.should == <<EOM
312
+ expect(@out.string).to eq <<EOM
313
313
  a:
314
314
  aa: bb
315
315
  cc: dd
@@ -319,7 +319,7 @@ EOM
319
319
 
320
320
  it "formats hashes with empty hash values appropriately" do
321
321
  @ui.output({ 'a' => { }, 'b' => 'c' })
322
- @out.string.should == <<EOM
322
+ expect(@out.string).to eq <<EOM
323
323
  a:
324
324
  b: c
325
325
  EOM
@@ -341,20 +341,32 @@ EOM
341
341
  describe "format_for_display" do
342
342
  it "should return the raw data" do
343
343
  input = { :gi => :go }
344
- @ui.format_for_display(input).should == input
344
+ expect(@ui.format_for_display(input)).to eq(input)
345
345
  end
346
346
 
347
347
  describe "with --attribute passed" do
348
348
  it "should return the deeply nested attribute" do
349
349
  input = { "gi" => { "go" => "ge" }, "id" => "sample-data-bag-item" }
350
350
  @ui.config[:attribute] = "gi.go"
351
- @ui.format_for_display(input).should == { "sample-data-bag-item" => { "gi.go" => "ge" } }
351
+ expect(@ui.format_for_display(input)).to eq({ "sample-data-bag-item" => { "gi.go" => "ge" } })
352
352
  end
353
353
 
354
354
  it "should return multiple attributes" do
355
355
  input = { "gi" => "go", "hi" => "ho", "id" => "sample-data-bag-item" }
356
356
  @ui.config[:attribute] = ["gi", "hi"]
357
- @ui.format_for_display(input).should == { "sample-data-bag-item" => { "gi" => "go", "hi"=> "ho" } }
357
+ expect(@ui.format_for_display(input)).to eq({ "sample-data-bag-item" => { "gi" => "go", "hi"=> "ho" } })
358
+ end
359
+
360
+ it "should handle attributes named the same as methods" do
361
+ input = { "keys" => "values", "hi" => "ho", "id" => "sample-data-bag-item" }
362
+ @ui.config[:attribute] = "keys"
363
+ expect(@ui.format_for_display(input)).to eq({ "sample-data-bag-item" => { "keys" => "values" } })
364
+ end
365
+
366
+ it "should handle nested attributes named the same as methods" do
367
+ input = { "keys" => {"keys" => "values"}, "hi" => "ho", "id" => "sample-data-bag-item" }
368
+ @ui.config[:attribute] = "keys.keys"
369
+ expect(@ui.format_for_display(input)).to eq({ "sample-data-bag-item" => { "keys.keys" => "values" } })
358
370
  end
359
371
  end
360
372
 
@@ -365,8 +377,8 @@ EOM
365
377
  input.run_list("role[monkey]", "role[churchmouse]")
366
378
  @ui.config[:run_list] = true
367
379
  response = @ui.format_for_display(input)
368
- response["sample-node"]["run_list"][0].should == "role[monkey]"
369
- response["sample-node"]["run_list"][1].should == "role[churchmouse]"
380
+ expect(response["sample-node"]["run_list"][0]).to eq("role[monkey]")
381
+ expect(response["sample-node"]["run_list"][1]).to eq("role[churchmouse]")
370
382
  end
371
383
  end
372
384
  end
@@ -388,7 +400,7 @@ EOM
388
400
  it "should return an array of the cookbooks with versions" do
389
401
  expected_response = [ "cookbook_name 3.0.0 2.0.0 1.0.0" ]
390
402
  response = @ui.format_cookbook_list_for_display(@item)
391
- response.should == expected_response
403
+ expect(response).to eq(expected_response)
392
404
  end
393
405
 
394
406
  describe "with --with-uri" do
@@ -400,15 +412,15 @@ EOM
400
412
  "3.0.0" => "http://url/cookbooks/3.0.0"}
401
413
  }
402
414
  @ui.config[:with_uri] = true
403
- @ui.format_cookbook_list_for_display(@item).should == response
415
+ expect(@ui.format_cookbook_list_for_display(@item)).to eq(response)
404
416
  end
405
417
  end
406
418
 
407
419
  context "when running on Windows" do
408
420
  before(:each) do
409
421
  stdout = double('StringIO', :tty? => true)
410
- @ui.stub(:stdout).and_return(stdout)
411
- Chef::Platform.stub(:windows?) { true }
422
+ allow(@ui).to receive(:stdout).and_return(stdout)
423
+ allow(Chef::Platform).to receive(:windows?) { true }
412
424
  Chef::Config.reset
413
425
  end
414
426
 
@@ -444,36 +456,36 @@ EOM
444
456
  let(:append_instructions) { true }
445
457
 
446
458
  def run_confirm
447
- @ui.stub(:stdout).and_return(stdout)
448
- @ui.stdin.stub(:readline).and_return(answer)
459
+ allow(@ui).to receive(:stdout).and_return(stdout)
460
+ allow(@ui.stdin).to receive(:readline).and_return(answer)
449
461
  @ui.confirm(question, append_instructions, default_choice)
450
462
  end
451
463
 
452
464
  def run_confirm_without_exit
453
- @ui.stub(:stdout).and_return(stdout)
454
- @ui.stdin.stub(:readline).and_return(answer)
465
+ allow(@ui).to receive(:stdout).and_return(stdout)
466
+ allow(@ui.stdin).to receive(:readline).and_return(answer)
455
467
  @ui.confirm_without_exit(question, append_instructions, default_choice)
456
468
  end
457
469
 
458
470
  shared_examples_for "confirm with positive answer" do
459
471
  it "confirm should return true" do
460
- run_confirm.should be_true
472
+ expect(run_confirm).to be_truthy
461
473
  end
462
474
 
463
475
  it "confirm_without_exit should return true" do
464
- run_confirm_without_exit.should be_true
476
+ expect(run_confirm_without_exit).to be_truthy
465
477
  end
466
478
  end
467
479
 
468
480
  shared_examples_for "confirm with negative answer" do
469
481
  it "confirm should exit 3" do
470
- lambda {
482
+ expect {
471
483
  run_confirm
472
- }.should raise_error(SystemExit) { |e| e.status.should == 3 }
484
+ }.to raise_error(SystemExit) { |e| expect(e.status).to eq(3) }
473
485
  end
474
486
 
475
487
  it "confirm_without_exit should return false" do
476
- run_confirm_without_exit.should be_false
488
+ expect(run_confirm_without_exit).to be_falsey
477
489
  end
478
490
  end
479
491
 
@@ -482,7 +494,7 @@ EOM
482
494
 
483
495
  it "should show 'Y/n' in the instructions" do
484
496
  run_confirm
485
- output.should include("Y/n")
497
+ expect(output).to include("Y/n")
486
498
  end
487
499
 
488
500
  describe "with empty answer" do
@@ -503,7 +515,7 @@ EOM
503
515
 
504
516
  it "should show 'y/N' in the instructions" do
505
517
  run_confirm
506
- output.should include("y/N")
518
+ expect(output).to include("y/N")
507
519
  end
508
520
 
509
521
  describe "with empty answer" do
@@ -538,8 +550,8 @@ EOM
538
550
  describe "with --y or --yes passed" do
539
551
  it "should return true" do
540
552
  @ui.config[:yes] = true
541
- run_confirm.should be_true
542
- output.should eq("")
553
+ expect(run_confirm).to be_truthy
554
+ expect(output).to eq("")
543
555
  end
544
556
  end
545
557
  end
@@ -547,18 +559,18 @@ EOM
547
559
  describe "when asking for free-form user input" do
548
560
  it "asks a question and returns the answer provided by the user" do
549
561
  out = StringIO.new
550
- @ui.stub(:stdout).and_return(out)
551
- @ui.stub(:stdin).and_return(StringIO.new("http://mychefserver.example.com\n"))
552
- @ui.ask_question("your chef server URL?").should == "http://mychefserver.example.com"
553
- out.string.should == "your chef server URL?"
562
+ allow(@ui).to receive(:stdout).and_return(out)
563
+ allow(@ui).to receive(:stdin).and_return(StringIO.new("http://mychefserver.example.com\n"))
564
+ expect(@ui.ask_question("your chef server URL?")).to eq("http://mychefserver.example.com")
565
+ expect(out.string).to eq("your chef server URL?")
554
566
  end
555
567
 
556
568
  it "suggests a default setting and returns the default when the user's response only contains whitespace" do
557
569
  out = StringIO.new
558
- @ui.stub(:stdout).and_return(out)
559
- @ui.stub(:stdin).and_return(StringIO.new(" \n"))
560
- @ui.ask_question("your chef server URL? ", :default => 'http://localhost:4000').should == "http://localhost:4000"
561
- out.string.should == "your chef server URL? [http://localhost:4000] "
570
+ allow(@ui).to receive(:stdout).and_return(out)
571
+ allow(@ui).to receive(:stdin).and_return(StringIO.new(" \n"))
572
+ expect(@ui.ask_question("your chef server URL? ", :default => 'http://localhost:4000')).to eq("http://localhost:4000")
573
+ expect(out.string).to eq("your chef server URL? [http://localhost:4000] ")
562
574
  end
563
575
  end
564
576
 
@@ -26,7 +26,7 @@ Chef::Knife::DataBagFromFile.load_deps
26
26
 
27
27
  describe Chef::Knife::DataBagFromFile do
28
28
  before :each do
29
- Chef::Platform.stub(:windows?) { false }
29
+ allow(Chef::Platform).to receive(:windows?) { false }
30
30
  Chef::Config[:node_name] = "webmonkey.example.com"
31
31
  FileUtils.mkdir_p([db_folder, db_folder2])
32
32
  db_file.write(Chef::JSONCompat.to_json(plain_data))
@@ -27,21 +27,21 @@ describe Chef::Knife::EnvironmentCompare do
27
27
  "citm" => "http://localhost:4000/environments/citm"
28
28
  }
29
29
 
30
- @knife.stub(:environment_list).and_return(@environments)
30
+ allow(@knife).to receive(:environment_list).and_return(@environments)
31
31
 
32
32
  @constraints = {
33
33
  "cita" => { "foo" => "= 1.0.1", "bar" => "= 0.0.4" },
34
34
  "citm" => { "foo" => "= 1.0.1", "bar" => "= 0.0.2" }
35
35
  }
36
36
 
37
- @knife.stub(:constraint_list).and_return(@constraints)
37
+ allow(@knife).to receive(:constraint_list).and_return(@constraints)
38
38
 
39
39
  @cookbooks = { "foo"=>"= 1.0.1", "bar"=>"= 0.0.1" }
40
40
 
41
- @knife.stub(:cookbook_list).and_return(@cookbooks)
41
+ allow(@knife).to receive(:cookbook_list).and_return(@cookbooks)
42
42
 
43
43
  @rest_double = double('rest')
44
- @knife.stub(:rest).and_return(@rest_double)
44
+ allow(@knife).to receive(:rest).and_return(@rest_double)
45
45
  @cookbook_names = ['apache2', 'mysql', 'foo', 'bar', 'dummy', 'chef_handler']
46
46
  @base_url = 'https://server.example.com/cookbooks'
47
47
  @cookbook_data = {}
@@ -51,10 +51,10 @@ describe Chef::Knife::EnvironmentCompare do
51
51
  'url' => "#{@base_url}/#{item}/1.0.1"}]}
52
52
  end
53
53
 
54
- @rest_double.stub(:get_rest).with("/cookbooks?num_versions=1").and_return(@cookbook_data)
54
+ allow(@rest_double).to receive(:get_rest).with("/cookbooks?num_versions=1").and_return(@cookbook_data)
55
55
 
56
56
  @stdout = StringIO.new
57
- @knife.ui.stub(:stdout).and_return(@stdout)
57
+ allow(@knife.ui).to receive(:stdout).and_return(@stdout)
58
58
  end
59
59
 
60
60
  describe 'run' do
@@ -62,14 +62,14 @@ describe Chef::Knife::EnvironmentCompare do
62
62
  @knife.config[:format] = 'summary'
63
63
  @knife.run
64
64
  @environments.each do |item, url|
65
- @stdout.string.should match /#{item}/ and @stdout.string.lines.count.should be 4
65
+ expect(@stdout.string).to match /#{item}/ and expect(@stdout.string.lines.count).to be 4
66
66
  end
67
67
  end
68
68
 
69
69
  it 'should display 4 number of lines' do
70
70
  @knife.config[:format] = 'summary'
71
71
  @knife.run
72
- @stdout.string.lines.count.should be 4
72
+ expect(@stdout.string.lines.count).to be 4
73
73
  end
74
74
  end
75
75
 
@@ -79,7 +79,7 @@ describe Chef::Knife::EnvironmentCompare do
79
79
  @knife.config[:mismatch] = true
80
80
  @knife.run
81
81
  @constraints.each do |item, ver|
82
- @stdout.string.should match /#{ver[1]}/
82
+ expect(@stdout.string).to match /#{ver[1]}/
83
83
  end
84
84
  end
85
85
 
@@ -87,7 +87,7 @@ describe Chef::Knife::EnvironmentCompare do
87
87
  @knife.config[:format] = 'summary'
88
88
  @knife.config[:mismatch] = true
89
89
  @knife.run
90
- @stdout.string.lines.count.should be 3
90
+ expect(@stdout.string.lines.count).to be 3
91
91
  end
92
92
  end
93
93
 
@@ -97,7 +97,7 @@ describe Chef::Knife::EnvironmentCompare do
97
97
  @knife.config[:all] = true
98
98
  @knife.run
99
99
  @constraints.each do |item, ver|
100
- @stdout.string.should match /#{ver[1]}/
100
+ expect(@stdout.string).to match /#{ver[1]}/
101
101
  end
102
102
  end
103
103
 
@@ -105,7 +105,7 @@ describe Chef::Knife::EnvironmentCompare do
105
105
  @knife.config[:format] = 'summary'
106
106
  @knife.config[:all] = true
107
107
  @knife.run
108
- @stdout.string.lines.count.should be 8
108
+ expect(@stdout.string.lines.count).to be 8
109
109
  end
110
110
  end
111
111