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
@@ -24,29 +24,29 @@ describe Chef::Knife::CookbookDelete do
24
24
  @knife.name_args = ['foobar']
25
25
  @knife.cookbook_name = 'foobar'
26
26
  @stdout = StringIO.new
27
- @knife.ui.stub(:stdout).and_return(@stdout)
27
+ allow(@knife.ui).to receive(:stdout).and_return(@stdout)
28
28
  @stderr = StringIO.new
29
- @knife.ui.stub(:stderr).and_return(@stderr)
29
+ allow(@knife.ui).to receive(:stderr).and_return(@stderr)
30
30
  end
31
31
 
32
32
  describe 'run' do
33
33
  it 'should print usage and exit when a cookbook name is not provided' do
34
34
  @knife.name_args = []
35
- @knife.should_receive(:show_usage)
36
- @knife.ui.should_receive(:fatal)
37
- lambda { @knife.run }.should raise_error(SystemExit)
35
+ expect(@knife).to receive(:show_usage)
36
+ expect(@knife.ui).to receive(:fatal)
37
+ expect { @knife.run }.to raise_error(SystemExit)
38
38
  end
39
39
 
40
40
  describe 'when specifying a cookbook name' do
41
41
  it 'should delete the cookbook without a specific version' do
42
- @knife.should_receive(:delete_without_explicit_version)
42
+ expect(@knife).to receive(:delete_without_explicit_version)
43
43
  @knife.run
44
44
  end
45
45
 
46
46
  describe 'and a version' do
47
47
  it 'should delete the specific version of the cookbook' do
48
48
  @knife.name_args << '1.0.0'
49
- @knife.should_receive(:delete_explicit_version)
49
+ expect(@knife).to receive(:delete_explicit_version)
50
50
  @knife.run
51
51
  end
52
52
  end
@@ -54,7 +54,7 @@ describe Chef::Knife::CookbookDelete do
54
54
  describe 'with -a or --all' do
55
55
  it 'should delete all versions of the cookbook' do
56
56
  @knife.config[:all] = true
57
- @knife.should_receive(:delete_all_versions)
57
+ expect(@knife).to receive(:delete_all_versions)
58
58
  @knife.run
59
59
  end
60
60
  end
@@ -62,9 +62,9 @@ describe Chef::Knife::CookbookDelete do
62
62
  describe 'with -p or --purge' do
63
63
  it 'should prompt to purge the files' do
64
64
  @knife.config[:purge] = true
65
- @knife.should_receive(:confirm).
65
+ expect(@knife).to receive(:confirm).
66
66
  with(/.+Are you sure you want to purge files.+/)
67
- @knife.should_receive(:delete_without_explicit_version)
67
+ expect(@knife).to receive(:delete_without_explicit_version)
68
68
  @knife.run
69
69
  end
70
70
  end
@@ -75,10 +75,10 @@ describe Chef::Knife::CookbookDelete do
75
75
  it 'should delete the specific cookbook version' do
76
76
  @knife.cookbook_name = 'foobar'
77
77
  @knife.version = '1.0.0'
78
- @knife.should_receive(:delete_object).with(Chef::CookbookVersion,
78
+ expect(@knife).to receive(:delete_object).with(Chef::CookbookVersion,
79
79
  'foobar version 1.0.0',
80
80
  'cookbook').and_yield()
81
- @knife.should_receive(:delete_request).with('cookbooks/foobar/1.0.0')
81
+ expect(@knife).to receive(:delete_request).with('cookbooks/foobar/1.0.0')
82
82
  @knife.delete_explicit_version
83
83
  end
84
84
  end
@@ -86,8 +86,8 @@ describe Chef::Knife::CookbookDelete do
86
86
  describe 'delete_all_versions' do
87
87
  it 'should prompt to delete all versions of the cookbook' do
88
88
  @knife.cookbook_name = 'foobar'
89
- @knife.should_receive(:confirm).with('Do you really want to delete all versions of foobar')
90
- @knife.should_receive(:delete_all_without_confirmation)
89
+ expect(@knife).to receive(:confirm).with('Do you really want to delete all versions of foobar')
90
+ expect(@knife).to receive(:delete_all_without_confirmation)
91
91
  @knife.delete_all_versions
92
92
  end
93
93
  end
@@ -95,9 +95,9 @@ describe Chef::Knife::CookbookDelete do
95
95
  describe 'delete_all_without_confirmation' do
96
96
  it 'should delete all versions without confirmation' do
97
97
  versions = ['1.0.0', '1.1.0']
98
- @knife.should_receive(:available_versions).and_return(versions)
98
+ expect(@knife).to receive(:available_versions).and_return(versions)
99
99
  versions.each do |v|
100
- @knife.should_receive(:delete_version_without_confirmation).with(v)
100
+ expect(@knife).to receive(:delete_version_without_confirmation).with(v)
101
101
  end
102
102
  @knife.delete_all_without_confirmation
103
103
  end
@@ -105,20 +105,20 @@ describe Chef::Knife::CookbookDelete do
105
105
 
106
106
  describe 'delete_without_explicit_version' do
107
107
  it 'should exit if there are no available versions' do
108
- @knife.should_receive(:available_versions).and_return(nil)
109
- lambda { @knife.delete_without_explicit_version }.should raise_error(SystemExit)
108
+ expect(@knife).to receive(:available_versions).and_return(nil)
109
+ expect { @knife.delete_without_explicit_version }.to raise_error(SystemExit)
110
110
  end
111
111
 
112
112
  it 'should delete the version if only one is found' do
113
- @knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0'])
114
- @knife.should_receive(:delete_explicit_version)
113
+ expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0'])
114
+ expect(@knife).to receive(:delete_explicit_version)
115
115
  @knife.delete_without_explicit_version
116
116
  end
117
117
 
118
118
  it 'should ask which version(s) to delete if multiple are found' do
119
- @knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0', '1.1.0'])
120
- @knife.should_receive(:ask_which_versions_to_delete).and_return(['1.0.0', '1.1.0'])
121
- @knife.should_receive(:delete_versions_without_confirmation).with(['1.0.0', '1.1.0'])
119
+ expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0', '1.1.0'])
120
+ expect(@knife).to receive(:ask_which_versions_to_delete).and_return(['1.0.0', '1.1.0'])
121
+ expect(@knife).to receive(:delete_versions_without_confirmation).with(['1.0.0', '1.1.0'])
122
122
  @knife.delete_without_explicit_version
123
123
  end
124
124
  end
@@ -126,7 +126,7 @@ describe Chef::Knife::CookbookDelete do
126
126
  describe 'available_versions' do
127
127
  before(:each) do
128
128
  @rest_mock = double('rest')
129
- @knife.should_receive(:rest).and_return(@rest_mock)
129
+ expect(@knife).to receive(:rest).and_return(@rest_mock)
130
130
  @cookbook_data = { 'foobar' => { 'versions' => [{'version' => '1.0.0'},
131
131
  {'version' => '1.1.0'},
132
132
  {'version' => '2.0.0'} ]}
@@ -134,85 +134,85 @@ describe Chef::Knife::CookbookDelete do
134
134
  end
135
135
 
136
136
  it 'should return the list of versions of the cookbook' do
137
- @rest_mock.should_receive(:get_rest).with('cookbooks/foobar').and_return(@cookbook_data)
138
- @knife.available_versions.should == ['1.0.0', '1.1.0', '2.0.0']
137
+ expect(@rest_mock).to receive(:get_rest).with('cookbooks/foobar').and_return(@cookbook_data)
138
+ expect(@knife.available_versions).to eq(['1.0.0', '1.1.0', '2.0.0'])
139
139
  end
140
140
 
141
141
  it 'should raise if an error other than HTTP 404 is returned' do
142
142
  exception = Net::HTTPServerException.new('500 Internal Server Error', '500')
143
- @rest_mock.should_receive(:get_rest).and_raise(exception)
144
- lambda { @knife.available_versions }.should raise_error Net::HTTPServerException
143
+ expect(@rest_mock).to receive(:get_rest).and_raise(exception)
144
+ expect { @knife.available_versions }.to raise_error Net::HTTPServerException
145
145
  end
146
146
 
147
147
  describe "if the cookbook can't be found" do
148
148
  before(:each) do
149
- @rest_mock.should_receive(:get_rest).
149
+ expect(@rest_mock).to receive(:get_rest).
150
150
  and_raise(Net::HTTPServerException.new('404 Not Found', '404'))
151
151
  end
152
152
 
153
153
  it 'should print an error' do
154
154
  @knife.available_versions
155
- @stderr.string.should match /error.+cannot find a cookbook named foobar/i
155
+ expect(@stderr.string).to match /error.+cannot find a cookbook named foobar/i
156
156
  end
157
157
 
158
158
  it 'should return nil' do
159
- @knife.available_versions.should == nil
159
+ expect(@knife.available_versions).to eq(nil)
160
160
  end
161
161
  end
162
162
  end
163
163
 
164
164
  describe 'ask_which_version_to_delete' do
165
165
  before(:each) do
166
- @knife.stub(:available_versions).and_return(['1.0.0', '1.1.0', '2.0.0'])
166
+ allow(@knife).to receive(:available_versions).and_return(['1.0.0', '1.1.0', '2.0.0'])
167
167
  end
168
168
 
169
169
  it 'should prompt the user to select a version' do
170
170
  prompt = /Which version\(s\) do you want to delete\?.+1\. foobar 1\.0\.0.+2\. foobar 1\.1\.0.+3\. foobar 2\.0\.0.+4\. All versions.+/m
171
- @knife.should_receive(:ask_question).with(prompt).and_return('1')
171
+ expect(@knife).to receive(:ask_question).with(prompt).and_return('1')
172
172
  @knife.ask_which_versions_to_delete
173
173
  end
174
174
 
175
175
  it "should print an error and exit if a version wasn't specified" do
176
- @knife.should_receive(:ask_question).and_return('')
177
- @knife.ui.should_receive(:error).with(/no versions specified/i)
178
- lambda { @knife.ask_which_versions_to_delete }.should raise_error(SystemExit)
176
+ expect(@knife).to receive(:ask_question).and_return('')
177
+ expect(@knife.ui).to receive(:error).with(/no versions specified/i)
178
+ expect { @knife.ask_which_versions_to_delete }.to raise_error(SystemExit)
179
179
  end
180
180
 
181
181
  it 'should print an error if an invalid choice was selected' do
182
- @knife.should_receive(:ask_question).and_return('100')
183
- @knife.ui.should_receive(:error).with(/100 is not a valid choice/i)
182
+ expect(@knife).to receive(:ask_question).and_return('100')
183
+ expect(@knife.ui).to receive(:error).with(/100 is not a valid choice/i)
184
184
  @knife.ask_which_versions_to_delete
185
185
  end
186
186
 
187
187
  it 'should return the selected versions' do
188
- @knife.should_receive(:ask_question).and_return('1, 3')
189
- @knife.ask_which_versions_to_delete.should == ['1.0.0', '2.0.0']
188
+ expect(@knife).to receive(:ask_question).and_return('1, 3')
189
+ expect(@knife.ask_which_versions_to_delete).to eq(['1.0.0', '2.0.0'])
190
190
  end
191
191
 
192
192
  it "should return all of the versions if 'all' was selected" do
193
- @knife.should_receive(:ask_question).and_return('4')
194
- @knife.ask_which_versions_to_delete.should == [:all]
193
+ expect(@knife).to receive(:ask_question).and_return('4')
194
+ expect(@knife.ask_which_versions_to_delete).to eq([:all])
195
195
  end
196
196
  end
197
197
 
198
198
  describe 'delete_version_without_confirmation' do
199
199
  it 'should delete the cookbook version' do
200
- @knife.should_receive(:delete_request).with('cookbooks/foobar/1.0.0')
200
+ expect(@knife).to receive(:delete_request).with('cookbooks/foobar/1.0.0')
201
201
  @knife.delete_version_without_confirmation('1.0.0')
202
202
  end
203
203
 
204
204
  it 'should output that the cookbook was deleted' do
205
- @knife.stub(:delete_request)
205
+ allow(@knife).to receive(:delete_request)
206
206
  @knife.delete_version_without_confirmation('1.0.0')
207
- @stderr.string.should match /deleted cookbook\[foobar\]\[1.0.0\]/im
207
+ expect(@stderr.string).to match /deleted cookbook\[foobar\]\[1.0.0\]/im
208
208
  end
209
209
 
210
210
  describe 'with --print-after' do
211
211
  it 'should display the cookbook data' do
212
212
  object = ''
213
213
  @knife.config[:print_after] = true
214
- @knife.stub(:delete_request).and_return(object)
215
- @knife.should_receive(:format_for_display).with(object)
214
+ allow(@knife).to receive(:delete_request).and_return(object)
215
+ expect(@knife).to receive(:format_for_display).with(object)
216
216
  @knife.delete_version_without_confirmation('1.0.0')
217
217
  end
218
218
  end
@@ -222,7 +222,7 @@ describe Chef::Knife::CookbookDelete do
222
222
  it 'should delete each version without confirmation' do
223
223
  versions = ['1.0.0', '1.1.0']
224
224
  versions.each do |v|
225
- @knife.should_receive(:delete_version_without_confirmation).with(v)
225
+ expect(@knife).to receive(:delete_version_without_confirmation).with(v)
226
226
  end
227
227
  @knife.delete_versions_without_confirmation(versions)
228
228
  end
@@ -230,7 +230,7 @@ describe Chef::Knife::CookbookDelete do
230
230
  describe 'with -a or --all' do
231
231
  it 'should delete all versions without confirmation' do
232
232
  versions = [:all]
233
- @knife.should_receive(:delete_all_without_confirmation)
233
+ expect(@knife).to receive(:delete_all_without_confirmation)
234
234
  @knife.delete_versions_without_confirmation(versions)
235
235
  end
236
236
  end
@@ -22,22 +22,22 @@ describe Chef::Knife::CookbookDownload do
22
22
  before(:each) do
23
23
  @knife = Chef::Knife::CookbookDownload.new
24
24
  @stderr = StringIO.new
25
- @knife.ui.stub(:stderr).and_return(@stderr)
25
+ allow(@knife.ui).to receive(:stderr).and_return(@stderr)
26
26
  end
27
27
 
28
28
  describe 'run' do
29
29
  it 'should print usage and exit when a cookbook name is not provided' do
30
30
  @knife.name_args = []
31
- @knife.should_receive(:show_usage)
32
- @knife.ui.should_receive(:fatal).with(/must specify a cookbook name/)
33
- lambda { @knife.run }.should raise_error(SystemExit)
31
+ expect(@knife).to receive(:show_usage)
32
+ expect(@knife.ui).to receive(:fatal).with(/must specify a cookbook name/)
33
+ expect { @knife.run }.to raise_error(SystemExit)
34
34
  end
35
35
 
36
36
  it 'should exit with a fatal error when there is no cookbook on the server' do
37
37
  @knife.name_args = ['foobar', nil]
38
- @knife.should_receive(:determine_version).and_return(nil)
39
- @knife.ui.should_receive(:fatal).with('No such cookbook found')
40
- lambda { @knife.run }.should raise_error(SystemExit)
38
+ expect(@knife).to receive(:determine_version).and_return(nil)
39
+ expect(@knife.ui).to receive(:fatal).with('No such cookbook found')
40
+ expect { @knife.run }.to raise_error(SystemExit)
41
41
  end
42
42
 
43
43
  describe 'with a cookbook name' do
@@ -45,7 +45,7 @@ describe Chef::Knife::CookbookDownload do
45
45
  @knife.name_args = ['foobar']
46
46
  @knife.config[:download_directory] = '/var/tmp/chef'
47
47
  @rest_mock = double('rest')
48
- @knife.stub(:rest).and_return(@rest_mock)
48
+ allow(@knife).to receive(:rest).and_return(@rest_mock)
49
49
 
50
50
  @manifest_data = {
51
51
  :recipes => [
@@ -67,17 +67,17 @@ describe Chef::Knife::CookbookDownload do
67
67
  }
68
68
 
69
69
  @cookbook_mock = double('cookbook')
70
- @cookbook_mock.stub(:version).and_return('1.0.0')
71
- @cookbook_mock.stub(:manifest).and_return(@manifest_data)
72
- @rest_mock.should_receive(:get_rest).with('cookbooks/foobar/1.0.0').
70
+ allow(@cookbook_mock).to receive(:version).and_return('1.0.0')
71
+ allow(@cookbook_mock).to receive(:manifest).and_return(@manifest_data)
72
+ expect(@rest_mock).to receive(:get_rest).with('cookbooks/foobar/1.0.0').
73
73
  and_return(@cookbook_mock)
74
74
  end
75
75
 
76
76
  it 'should determine which version if one was not explicitly specified'do
77
- @cookbook_mock.stub(:manifest).and_return({})
78
- @knife.should_receive(:determine_version).and_return('1.0.0')
79
- File.should_receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false)
80
- Chef::CookbookVersion.stub(:COOKBOOK_SEGEMENTS).and_return([])
77
+ allow(@cookbook_mock).to receive(:manifest).and_return({})
78
+ expect(@knife).to receive(:determine_version).and_return('1.0.0')
79
+ expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false)
80
+ allow(Chef::CookbookVersion).to receive(:COOKBOOK_SEGEMENTS).and_return([])
81
81
  @knife.run
82
82
  end
83
83
 
@@ -88,50 +88,50 @@ describe Chef::Knife::CookbookDownload do
88
88
  @files_mocks = {}
89
89
  @files.map { |f| File.basename(f) }.flatten.uniq.each do |f|
90
90
  @files_mocks[f] = double("#{f}_mock")
91
- @files_mocks[f].stub(:path).and_return("/var/tmp/#{f}")
91
+ allow(@files_mocks[f]).to receive(:path).and_return("/var/tmp/#{f}")
92
92
  end
93
93
  end
94
94
 
95
95
  it 'should print an error and exit if the cookbook download directory already exists' do
96
- File.should_receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true)
97
- @knife.ui.should_receive(:fatal).with(/\/var\/tmp\/chef\/foobar-1\.0\.0 exists/i)
98
- lambda { @knife.run }.should raise_error(SystemExit)
96
+ expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true)
97
+ expect(@knife.ui).to receive(:fatal).with(/\/var\/tmp\/chef\/foobar-1\.0\.0 exists/i)
98
+ expect { @knife.run }.to raise_error(SystemExit)
99
99
  end
100
100
 
101
101
  describe 'when downloading the cookbook' do
102
102
  before(:each) do
103
103
  @files.map { |f| File.dirname(f) }.flatten.uniq.each do |dir|
104
- FileUtils.should_receive(:mkdir_p).with("/var/tmp/chef/foobar-1.0.0/#{dir}").
104
+ expect(FileUtils).to receive(:mkdir_p).with("/var/tmp/chef/foobar-1.0.0/#{dir}").
105
105
  at_least(:once)
106
106
  end
107
107
 
108
108
  @files_mocks.each_pair do |file, mock|
109
- @rest_mock.should_receive(:get_rest).with("http://example.org/files/#{file}", true).
109
+ expect(@rest_mock).to receive(:get_rest).with("http://example.org/files/#{file}", true).
110
110
  and_return(mock)
111
111
  end
112
112
 
113
- @rest_mock.should_receive(:sign_on_redirect=).with(false).at_least(:once)
113
+ expect(@rest_mock).to receive(:sign_on_redirect=).with(false).at_least(:once)
114
114
  @files.each do |f|
115
- FileUtils.should_receive(:mv).
115
+ expect(FileUtils).to receive(:mv).
116
116
  with("/var/tmp/#{File.basename(f)}", "/var/tmp/chef/foobar-1.0.0/#{f}")
117
117
  end
118
118
  end
119
119
 
120
120
  it "should download the cookbook when the cookbook download directory doesn't exist" do
121
- File.should_receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false)
121
+ expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(false)
122
122
  @knife.run
123
123
  ['attributes', 'recipes', 'templates'].each do |segment|
124
- @stderr.string.should match /downloading #{segment}/im
124
+ expect(@stderr.string).to match /downloading #{segment}/im
125
125
  end
126
- @stderr.string.should match /downloading foobar cookbook version 1\.0\.0/im
127
- @stderr.string.should match /cookbook downloaded to \/var\/tmp\/chef\/foobar-1\.0\.0/im
126
+ expect(@stderr.string).to match /downloading foobar cookbook version 1\.0\.0/im
127
+ expect(@stderr.string).to match /cookbook downloaded to \/var\/tmp\/chef\/foobar-1\.0\.0/im
128
128
  end
129
129
 
130
130
  describe 'with -f or --force' do
131
131
  it 'should remove the existing the cookbook download directory if it exists' do
132
132
  @knife.config[:force] = true
133
- File.should_receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true)
134
- FileUtils.should_receive(:rm_rf).with('/var/tmp/chef/foobar-1.0.0')
133
+ expect(File).to receive(:exists?).with('/var/tmp/chef/foobar-1.0.0').and_return(true)
134
+ expect(FileUtils).to receive(:rm_rf).with('/var/tmp/chef/foobar-1.0.0')
135
135
  @knife.run
136
136
  end
137
137
  end
@@ -145,30 +145,30 @@ describe Chef::Knife::CookbookDownload do
145
145
  describe 'determine_version' do
146
146
 
147
147
  it 'should return nil if there are no versions' do
148
- @knife.should_receive(:available_versions).and_return(nil)
149
- @knife.determine_version.should == nil
150
- @knife.version.should == nil
148
+ expect(@knife).to receive(:available_versions).and_return(nil)
149
+ expect(@knife.determine_version).to eq(nil)
150
+ expect(@knife.version).to eq(nil)
151
151
  end
152
152
 
153
153
  it 'should return and set the version if there is only one version' do
154
- @knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0'])
155
- @knife.determine_version.should == '1.0.0'
156
- @knife.version.should == '1.0.0'
154
+ expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0'])
155
+ expect(@knife.determine_version).to eq('1.0.0')
156
+ expect(@knife.version).to eq('1.0.0')
157
157
  end
158
158
 
159
159
  it 'should ask which version to download and return it if there is more than one' do
160
- @knife.should_receive(:available_versions).at_least(:once).and_return(['1.0.0', '2.0.0'])
161
- @knife.should_receive(:ask_which_version).and_return('1.0.0')
162
- @knife.determine_version.should == '1.0.0'
160
+ expect(@knife).to receive(:available_versions).at_least(:once).and_return(['1.0.0', '2.0.0'])
161
+ expect(@knife).to receive(:ask_which_version).and_return('1.0.0')
162
+ expect(@knife.determine_version).to eq('1.0.0')
163
163
  end
164
164
 
165
165
  describe 'with -N or --latest' do
166
166
  it 'should return and set the version to the latest version' do
167
167
  @knife.config[:latest] = true
168
- @knife.should_receive(:available_versions).at_least(:once).
168
+ expect(@knife).to receive(:available_versions).at_least(:once).
169
169
  and_return(['1.0.0', '1.1.0', '2.0.0'])
170
170
  @knife.determine_version
171
- @knife.version.to_s.should == '2.0.0'
171
+ expect(@knife.version.to_s).to eq('2.0.0')
172
172
  end
173
173
  end
174
174
  end
@@ -179,23 +179,23 @@ describe Chef::Knife::CookbookDownload do
179
179
  end
180
180
 
181
181
  it 'should return nil if there are no versions' do
182
- Chef::CookbookVersion.should_receive(:available_versions).
182
+ expect(Chef::CookbookVersion).to receive(:available_versions).
183
183
  with('foobar').
184
184
  and_return(nil)
185
- @knife.available_versions.should == nil
185
+ expect(@knife.available_versions).to eq(nil)
186
186
  end
187
187
 
188
188
  it 'should return the available versions' do
189
- Chef::CookbookVersion.should_receive(:available_versions).
189
+ expect(Chef::CookbookVersion).to receive(:available_versions).
190
190
  with('foobar').
191
191
  and_return(['1.1.0', '2.0.0', '1.0.0'])
192
- @knife.available_versions.should == [Chef::Version.new('1.0.0'),
192
+ expect(@knife.available_versions).to eq([Chef::Version.new('1.0.0'),
193
193
  Chef::Version.new('1.1.0'),
194
- Chef::Version.new('2.0.0')]
194
+ Chef::Version.new('2.0.0')])
195
195
  end
196
196
 
197
197
  it 'should avoid multiple API calls to the server' do
198
- Chef::CookbookVersion.should_receive(:available_versions).
198
+ expect(Chef::CookbookVersion).to receive(:available_versions).
199
199
  once.
200
200
  with('foobar').
201
201
  and_return(['1.1.0', '2.0.0', '1.0.0'])
@@ -207,31 +207,31 @@ describe Chef::Knife::CookbookDownload do
207
207
  describe 'ask_which_version' do
208
208
  before(:each) do
209
209
  @knife.cookbook_name = 'foobar'
210
- @knife.stub(:available_versions).and_return(['1.0.0', '1.1.0', '2.0.0'])
210
+ allow(@knife).to receive(:available_versions).and_return(['1.0.0', '1.1.0', '2.0.0'])
211
211
  end
212
212
 
213
213
  it 'should prompt the user to select a version' do
214
214
  prompt = /Which version do you want to download\?.+1\. foobar 1\.0\.0.+2\. foobar 1\.1\.0.+3\. foobar 2\.0\.0.+/m
215
- @knife.should_receive(:ask_question).with(prompt).and_return('1')
215
+ expect(@knife).to receive(:ask_question).with(prompt).and_return('1')
216
216
  @knife.ask_which_version
217
217
  end
218
218
 
219
219
  it "should set the version to the user's selection" do
220
- @knife.should_receive(:ask_question).and_return('1')
220
+ expect(@knife).to receive(:ask_question).and_return('1')
221
221
  @knife.ask_which_version
222
- @knife.version.should == '1.0.0'
222
+ expect(@knife.version).to eq('1.0.0')
223
223
  end
224
224
 
225
225
  it "should print an error and exit if a version wasn't specified" do
226
- @knife.should_receive(:ask_question).and_return('')
227
- @knife.ui.should_receive(:error).with(/is not a valid value/i)
228
- lambda { @knife.ask_which_version }.should raise_error(SystemExit)
226
+ expect(@knife).to receive(:ask_question).and_return('')
227
+ expect(@knife.ui).to receive(:error).with(/is not a valid value/i)
228
+ expect { @knife.ask_which_version }.to raise_error(SystemExit)
229
229
  end
230
230
 
231
231
  it 'should print an error if an invalid choice was selected' do
232
- @knife.should_receive(:ask_question).and_return('100')
233
- @knife.ui.should_receive(:error).with(/'100' is not a valid value/i)
234
- lambda { @knife.ask_which_version }.should raise_error(SystemExit)
232
+ expect(@knife).to receive(:ask_question).and_return('100')
233
+ expect(@knife.ui).to receive(:error).with(/'100' is not a valid value/i)
234
+ expect { @knife.ask_which_version }.to raise_error(SystemExit)
235
235
  end
236
236
  end
237
237