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
@@ -0,0 +1,60 @@
1
+
2
+ require 'chef/application/windows_service_manager'
3
+
4
+ shared_context "using Win32::Service" do
5
+ # Some helper methods.
6
+
7
+ def test_service_exists?
8
+ ::Win32::Service.exists?("spec-service")
9
+ end
10
+
11
+ def test_service_state
12
+ ::Win32::Service.status("spec-service").current_state
13
+ end
14
+
15
+ def service_manager
16
+ Chef::Application::WindowsServiceManager.new(test_service)
17
+ end
18
+
19
+ def cleanup
20
+ # Uninstall if the test service is installed.
21
+ if test_service_exists?
22
+
23
+ # We can only uninstall when the service is stopped.
24
+ if test_service_state != "stopped"
25
+ ::Win32::Service.send("stop", "spec-service")
26
+ while test_service_state != "stopped"
27
+ sleep 1
28
+ end
29
+ end
30
+
31
+ ::Win32::Service.delete("spec-service")
32
+ end
33
+
34
+ # Delete the test_service_file if it exists
35
+ if File.exists?(test_service_file)
36
+ File.delete(test_service_file)
37
+ end
38
+
39
+ end
40
+
41
+
42
+ # Definition for the test-service
43
+
44
+ let(:test_service) {
45
+ {
46
+ :service_name => "spec-service",
47
+ :service_display_name => "Spec Test Service",
48
+ :service_description => "Service for testing Chef::Application::WindowsServiceManager.",
49
+ :service_file_path => File.expand_path(File.join(File.dirname(__FILE__), '../../platforms/win32/spec_service.rb'))
50
+ }
51
+ }
52
+
53
+ # Test service creates a file for us to verify that it is running.
54
+ # Since our test service is running as Local System we should look
55
+ # for the file it creates under SYSTEM temp directory
56
+
57
+ let(:test_service_file) {
58
+ "#{ENV['SystemDrive']}\\windows\\temp\\spec_service_file"
59
+ }
60
+ end
@@ -83,29 +83,29 @@ shared_context Chef::Resource::WindowsScript do
83
83
 
84
84
  it "should create a process with the expected architecture" do
85
85
  resource.run_action(:run)
86
- get_process_architecture.should == expected_architecture_output.downcase
86
+ expect(get_process_architecture).to eq(expected_architecture_output.downcase)
87
87
  end
88
88
 
89
89
  it "should execute guards with the same architecture as the resource" do
90
90
  resource.only_if resource_guard_command
91
91
  resource.run_action(:run)
92
- get_process_architecture.should == expected_architecture_output.downcase
93
- get_guard_process_architecture.should == expected_architecture_output.downcase
94
- get_guard_process_architecture.should == get_process_architecture
92
+ expect(get_process_architecture).to eq(expected_architecture_output.downcase)
93
+ expect(get_guard_process_architecture).to eq(expected_architecture_output.downcase)
94
+ expect(get_guard_process_architecture).to eq(get_process_architecture)
95
95
  end
96
96
 
97
97
  let (:architecture) { :x86_64 }
98
98
  it "should execute a 64-bit guard if the guard's architecture is specified as 64-bit", :windows64_only do
99
99
  resource.only_if resource_guard_command, :architecture => :x86_64
100
100
  resource.run_action(:run)
101
- get_guard_process_architecture.should == 'amd64'
101
+ expect(get_guard_process_architecture).to eq('amd64')
102
102
  end
103
103
 
104
104
  let (:architecture) { :i386 }
105
105
  it "should execute a 32-bit guard if the guard's architecture is specified as 32-bit" do
106
106
  resource.only_if resource_guard_command, :architecture => :i386
107
107
  resource.run_action(:run)
108
- get_guard_process_architecture.should == 'x86'
108
+ expect(get_guard_process_architecture).to eq('x86')
109
109
  end
110
110
  end
111
111
  end
@@ -122,11 +122,11 @@ shared_context Chef::Resource::WindowsScript do
122
122
 
123
123
  context "when evaluating guards" do
124
124
  it "has a guard_interpreter attribute set to the short name of the resource" do
125
- resource.guard_interpreter.should == resource.resource_name
125
+ expect(resource.guard_interpreter).to eq(resource.resource_name)
126
126
  resource.not_if "findstr.exe /thiscommandhasnonzeroexitstatus"
127
127
  expect(Chef::Resource).to receive(:resource_for_node).and_call_original
128
128
  expect(resource.class).to receive(:new).and_call_original
129
- resource.should_skip?(:run).should be_false
129
+ expect(resource.should_skip?(:run)).to be_falsey
130
130
  end
131
131
  end
132
132
 
@@ -103,6 +103,9 @@ module KnifeSupport
103
103
  private
104
104
 
105
105
  class KnifeResult
106
+
107
+ include ::RSpec::Matchers
108
+
106
109
  def initialize(stdout, stderr, exit_code)
107
110
  @stdout = stdout
108
111
  @stderr = stderr
@@ -150,20 +153,20 @@ module KnifeSupport
150
153
  stderr_actual = @stderr.sub(/^WARNING: No knife configuration file found\n/, '')
151
154
 
152
155
  if expected[:stderr].is_a?(Regexp)
153
- stderr_actual.should =~ expected[:stderr]
156
+ expect(stderr_actual).to match(expected[:stderr])
154
157
  else
155
- stderr_actual.should == expected[:stderr]
158
+ expect(stderr_actual).to eq(expected[:stderr])
156
159
  end
157
160
  stdout_actual = @stdout
158
161
  if Chef::Platform.windows?
159
162
  stderr_actual = stderr_actual.gsub("\r\n", "\n")
160
163
  stdout_actual = stdout_actual.gsub("\r\n", "\n")
161
164
  end
162
- @exit_code.should == expected[:exit_code]
165
+ expect(@exit_code).to eq(expected[:exit_code])
163
166
  if expected[:stdout].is_a?(Regexp)
164
- stdout_actual.should =~ expected[:stdout]
167
+ expect(stdout_actual).to match(expected[:stdout])
165
168
  else
166
- stdout_actual.should == expected[:stdout]
169
+ expect(stdout_actual).to eq(expected[:stdout])
167
170
  end
168
171
  end
169
172
  end
@@ -12,12 +12,12 @@ RSpec::Matchers.define :exit_with_code do |exp_code|
12
12
  actual and actual == exp_code
13
13
  end
14
14
 
15
- failure_message_for_should do |block|
15
+ failure_message do |block|
16
16
  "expected block to call exit(#{exp_code}) but exit" +
17
17
  (actual.nil? ? " not called" : "(#{actual}) was called")
18
18
  end
19
19
 
20
- failure_message_for_should_not do |block|
20
+ failure_message_when_negated do |block|
21
21
  "expected block not to call exit(#{exp_code})"
22
22
  end
23
23
 
@@ -25,4 +25,8 @@ RSpec::Matchers.define :exit_with_code do |exp_code|
25
25
  "expect block to call exit(#{exp_code})"
26
26
  end
27
27
 
28
+ def supports_block_expectations?
29
+ true
30
+ end
31
+
28
32
  end
@@ -23,7 +23,7 @@
23
23
  # runs without error, but don't make assertions about the output. This is
24
24
  # because aspects such as how information gets formatted, what's included, etc.
25
25
  # are still in flux. When testing an inspector, change the outputter to use
26
- # STDOUT and manually check the ouput.
26
+ # STDOUT and manually check the output.
27
27
 
28
28
  shared_examples_for "an api error inspector" do
29
29
 
@@ -72,7 +72,7 @@ shared_examples_for "an api error inspector" do
72
72
  before do
73
73
  @response_body = "synchronize the clock on your host"
74
74
  @response = Net::HTTPUnauthorized.new("1.1", "401", "(response) unauthorized")
75
- @response.stub(:body).and_return(@response_body)
75
+ allow(@response).to receive(:body).and_return(@response_body)
76
76
  @exception = Net::HTTPServerException.new("(exception) unauthorized", @response)
77
77
  @inspector = described_class.new(@node_name, @exception, @config)
78
78
  @inspector.add_explanation(@description)
@@ -88,7 +88,7 @@ shared_examples_for "an api error inspector" do
88
88
  before do
89
89
  @response_body = "check your key and node name"
90
90
  @response = Net::HTTPUnauthorized.new("1.1", "401", "(response) unauthorized")
91
- @response.stub(:body).and_return(@response_body)
91
+ allow(@response).to receive(:body).and_return(@response_body)
92
92
  @exception = Net::HTTPServerException.new("(exception) unauthorized", @response)
93
93
  @inspector = described_class.new(@node_name, @exception, @config)
94
94
  @inspector.add_explanation(@description)
@@ -104,7 +104,7 @@ shared_examples_for "an api error inspector" do
104
104
  before do
105
105
  @response_body = "forbidden"
106
106
  @response = Net::HTTPForbidden.new("1.1", "403", "(response) forbidden")
107
- @response.stub(:body).and_return(@response_body)
107
+ allow(@response).to receive(:body).and_return(@response_body)
108
108
  @exception = Net::HTTPServerException.new("(exception) forbidden", @response)
109
109
  @inspector = described_class.new(@node_name, @exception, @config)
110
110
  @inspector.add_explanation(@description)
@@ -120,7 +120,7 @@ shared_examples_for "an api error inspector" do
120
120
  before do
121
121
  @response_body = "didn't like your data"
122
122
  @response = Net::HTTPBadRequest.new("1.1", "400", "(response) bad request")
123
- @response.stub(:body).and_return(@response_body)
123
+ allow(@response).to receive(:body).and_return(@response_body)
124
124
  @exception = Net::HTTPServerException.new("(exception) bad request", @response)
125
125
  @inspector = described_class.new(@node_name, @exception, @config)
126
126
  @inspector.add_explanation(@description)
@@ -136,7 +136,7 @@ shared_examples_for "an api error inspector" do
136
136
  before do
137
137
  @response_body = "probably caused by a redirect to a get"
138
138
  @response = Net::HTTPNotFound.new("1.1", "404", "(response) not found")
139
- @response.stub(:body).and_return(@response_body)
139
+ allow(@response).to receive(:body).and_return(@response_body)
140
140
  @exception = Net::HTTPServerException.new("(exception) not found", @response)
141
141
  @inspector = described_class.new(@node_name, @exception, @config)
142
142
  @inspector.add_explanation(@description)
@@ -151,7 +151,7 @@ shared_examples_for "an api error inspector" do
151
151
  before do
152
152
  @response_body = "sad trombone"
153
153
  @response = Net::HTTPInternalServerError.new("1.1", "500", "(response) internal server error")
154
- @response.stub(:body).and_return(@response_body)
154
+ allow(@response).to receive(:body).and_return(@response_body)
155
155
  @exception = Net::HTTPFatalError.new("(exception) internal server error", @response)
156
156
  @inspector = described_class.new(@node_name, @exception, @config)
157
157
  @inspector.add_explanation(@description)
@@ -166,7 +166,7 @@ shared_examples_for "an api error inspector" do
166
166
  before do
167
167
  @response_body = "sad trombone orchestra"
168
168
  @response = Net::HTTPBadGateway.new("1.1", "502", "(response) bad gateway")
169
- @response.stub(:body).and_return(@response_body)
169
+ allow(@response).to receive(:body).and_return(@response_body)
170
170
  @exception = Net::HTTPFatalError.new("(exception) bad gateway", @response)
171
171
  @inspector = described_class.new(@node_name, @exception, @config)
172
172
  @inspector.add_explanation(@description)
@@ -26,85 +26,89 @@ shared_examples_for "an execute resource" do
26
26
  end
27
27
 
28
28
  it "should create a new Chef::Resource::Execute" do
29
- @resource.should be_a_kind_of(Chef::Resource)
30
- @resource.should be_a_kind_of(Chef::Resource::Execute)
29
+ expect(@resource).to be_a_kind_of(Chef::Resource)
30
+ expect(@resource).to be_a_kind_of(Chef::Resource::Execute)
31
31
  end
32
32
 
33
33
  it "should set the command to the first argument to new" do
34
- @resource.command.should eql(resource_instance_name)
34
+ expect(@resource.command).to eql(resource_instance_name)
35
35
  end
36
36
 
37
37
  it "should accept an array on instantiation, too" do
38
38
  resource = Chef::Resource::Execute.new(%w{something else})
39
- resource.should be_a_kind_of(Chef::Resource)
40
- resource.should be_a_kind_of(Chef::Resource::Execute)
41
- resource.command.should eql(%w{something else})
39
+ expect(resource).to be_a_kind_of(Chef::Resource)
40
+ expect(resource).to be_a_kind_of(Chef::Resource::Execute)
41
+ expect(resource.command).to eql(%w{something else})
42
42
  end
43
43
 
44
44
  it "should accept a string for the command to run" do
45
45
  @resource.command "something"
46
- @resource.command.should eql("something")
46
+ expect(@resource.command).to eql("something")
47
47
  end
48
48
 
49
49
  it "should accept an array for the command to run" do
50
50
  @resource.command %w{something else}
51
- @resource.command.should eql(%w{something else})
51
+ expect(@resource.command).to eql(%w{something else})
52
52
  end
53
53
 
54
54
  it "should accept a string for the cwd" do
55
55
  @resource.cwd "something"
56
- @resource.cwd.should eql("something")
56
+ expect(@resource.cwd).to eql("something")
57
57
  end
58
58
 
59
59
  it "should accept a hash for the environment" do
60
60
  test_hash = { :one => :two }
61
61
  @resource.environment(test_hash)
62
- @resource.environment.should eql(test_hash)
62
+ expect(@resource.environment).to eql(test_hash)
63
63
  end
64
64
 
65
65
  it "allows the environment to be specified with #env" do
66
- @resource.should respond_to(:env)
66
+ expect(@resource).to respond_to(:env)
67
67
  end
68
68
 
69
69
  it "should accept a string for the group" do
70
70
  @resource.group "something"
71
- @resource.group.should eql("something")
71
+ expect(@resource.group).to eql("something")
72
72
  end
73
73
 
74
74
  it "should accept an integer for the group" do
75
75
  @resource.group 1
76
- @resource.group.should eql(1)
76
+ expect(@resource.group).to eql(1)
77
77
  end
78
78
 
79
- it "should accept an array for the execution path in Chef-12 and log deprecation message" do
79
+ it "should accept an array for the execution path in Chef-12 and log deprecation message", :chef_lt_13_only do
80
80
  expect(Chef::Log).to receive(:warn).at_least(:once)
81
81
  @resource.path ["woot"]
82
82
  expect(@resource.path).to eql(["woot"])
83
83
  end
84
84
 
85
+ it "should raise an exception in chef-13", :chef_gte_13_only do
86
+ expect(@resource.path [ "woot" ]).to raise_error
87
+ end
88
+
85
89
  it "should accept an integer for the return code" do
86
90
  @resource.returns 1
87
- @resource.returns.should eql(1)
91
+ expect(@resource.returns).to eql(1)
88
92
  end
89
93
 
90
94
  it "should accept an integer for the timeout" do
91
95
  @resource.timeout 1
92
- @resource.timeout.should eql(1)
96
+ expect(@resource.timeout).to eql(1)
93
97
  end
94
98
 
95
99
  it "should accept a string for the user" do
96
100
  @resource.user "something"
97
- @resource.user.should eql("something")
101
+ expect(@resource.user).to eql("something")
98
102
  end
99
103
 
100
104
  it "should accept an integer for the user" do
101
105
  @resource.user 1
102
- @resource.user.should eql(1)
106
+ expect(@resource.user).to eql(1)
103
107
  end
104
108
 
105
109
  it "should accept a string for creates" do
106
110
  @resource.creates "something"
107
- @resource.creates.should eql("something")
111
+ expect(@resource.creates).to eql("something")
108
112
  end
109
113
 
110
114
  describe "when it has cwd, environment, group, path, return value, and a user" do
@@ -118,7 +122,7 @@ shared_examples_for "an execute resource" do
118
122
  end
119
123
 
120
124
  it "returns the command as its identity" do
121
- @resource.identity.should == "grep"
125
+ expect(@resource.identity).to eq("grep")
122
126
  end
123
127
  end
124
128
  end
@@ -56,7 +56,7 @@ module FileSystemSupport
56
56
  def no_blocking_calls_allowed
57
57
  [ Chef::ChefFS::FileSystem::MemoryFile, Chef::ChefFS::FileSystem::MemoryDir ].each do |c|
58
58
  [ :children, :exists?, :read ].each do |m|
59
- c.any_instance.stub(m).and_raise("#{m.to_s} should not be called")
59
+ allow_any_instance_of(c).to receive(m).and_raise("#{m.to_s} should not be called")
60
60
  end
61
61
  end
62
62
  end
@@ -64,7 +64,7 @@ module FileSystemSupport
64
64
  def list_should_yield_paths(fs, pattern_str, *expected_paths)
65
65
  result_paths = []
66
66
  Chef::ChefFS::FileSystem.list(fs, pattern(pattern_str)).each { |result| result_paths << result.path }
67
- result_paths.should =~ expected_paths
67
+ expect(result_paths).to match_array(expected_paths)
68
68
  end
69
69
  end
70
70
 
@@ -44,49 +44,49 @@ shared_examples_for "a platform introspector" do
44
44
 
45
45
  it "returns a default value when there is no known platform" do
46
46
  node = Hash.new
47
- platform_introspector.value_for_platform(@platform_hash).should == "default"
47
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("default")
48
48
  end
49
49
 
50
50
  it "returns a default value when there is no known platform family" do
51
- platform_introspector.value_for_platform_family(@platform_family_hash).should == "default value"
51
+ expect(platform_introspector.value_for_platform_family(@platform_family_hash)).to eq("default value")
52
52
  end
53
53
 
54
54
  it "returns a default value when the current platform doesn't match" do
55
55
  node.automatic_attrs[:platform] = "not-a-known-platform"
56
- platform_introspector.value_for_platform(@platform_hash).should == "default"
56
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("default")
57
57
  end
58
58
 
59
59
  it "returns a default value when current platform_family doesn't match" do
60
60
  node.automatic_attrs[:platform_family] = "ultra-derived-linux"
61
- platform_introspector.value_for_platform_family(@platform_family_hash).should == "default value"
61
+ expect(platform_introspector.value_for_platform_family(@platform_family_hash)).to eq("default value")
62
62
  end
63
63
 
64
64
  it "returns a value based on the current platform" do
65
65
  node.automatic_attrs[:platform] = "openbsd"
66
- platform_introspector.value_for_platform(@platform_hash).should == "openbsd"
66
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("openbsd")
67
67
  end
68
68
 
69
69
  it "returns a value based on the current platform family" do
70
70
  node.automatic_attrs[:platform_family] = "debian"
71
- platform_introspector.value_for_platform_family(@platform_family_hash).should == "debian value"
71
+ expect(platform_introspector.value_for_platform_family(@platform_family_hash)).to eq("debian value")
72
72
  end
73
73
 
74
74
  it "returns a version-specific value based on the current platform" do
75
75
  node.automatic_attrs[:platform] = "openbsd"
76
76
  node.automatic_attrs[:platform_version] = "1.2.3"
77
- platform_introspector.value_for_platform(@platform_hash).should == "openbsd-1.2.3"
77
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("openbsd-1.2.3")
78
78
  end
79
79
 
80
80
  it "returns a value based on the current platform if version not found" do
81
81
  node.automatic_attrs[:platform] = "openbsd"
82
82
  node.automatic_attrs[:platform_version] = "0.0.0"
83
- platform_introspector.value_for_platform(@platform_hash).should == "openbsd"
83
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("openbsd")
84
84
  end
85
85
 
86
86
  it 'returns the exact match' do
87
87
  node.automatic_attrs[:platform] = 'exact_match'
88
88
  node.automatic_attrs[:platform_version] = '1.2.3'
89
- platform_introspector.value_for_platform(@platform_hash).should == 'exact'
89
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq('exact')
90
90
  end
91
91
 
92
92
  it 'raises RuntimeError' do
@@ -98,20 +98,20 @@ shared_examples_for "a platform introspector" do
98
98
  it 'should return the value for that match' do
99
99
  node.automatic_attrs[:platform] = 'successful_matches'
100
100
  node.automatic_attrs[:platform_version] = '2.9'
101
- platform_introspector.value_for_platform(@platform_hash).should == 'matched < 3.0'
101
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq('matched < 3.0')
102
102
  end
103
103
 
104
104
  describe "when platform versions is an array" do
105
105
  it "returns a version-specific value based on the current platform" do
106
106
  node.automatic_attrs[:platform] = "debian"
107
107
  node.automatic_attrs[:platform_version] = "6"
108
- platform_introspector.value_for_platform(@platform_hash).should == "debian-5/6"
108
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("debian-5/6")
109
109
  end
110
110
 
111
111
  it "returns a value based on the current platform if version not found" do
112
112
  node.automatic_attrs[:platform] = "debian"
113
113
  node.automatic_attrs[:platform_version] = "0.0.0"
114
- platform_introspector.value_for_platform(@platform_hash).should == "debian"
114
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq("debian")
115
115
  end
116
116
  end
117
117
 
@@ -119,17 +119,17 @@ shared_examples_for "a platform introspector" do
119
119
 
120
120
  it "returns true if the node is a provided platform and platforms are provided as symbols" do
121
121
  node.automatic_attrs[:platform] = 'ubuntu'
122
- platform_introspector.platform?([:redhat, :ubuntu]).should == true
122
+ expect(platform_introspector.platform?([:redhat, :ubuntu])).to eq(true)
123
123
  end
124
124
 
125
125
  it "returns true if the node is a provided platform and platforms are provided as strings" do
126
126
  node.automatic_attrs[:platform] = 'ubuntu'
127
- platform_introspector.platform?(["redhat", "ubuntu"]).should == true
127
+ expect(platform_introspector.platform?(["redhat", "ubuntu"])).to eq(true)
128
128
  end
129
129
 
130
130
  it "returns false if the node is not of the provided platforms" do
131
131
  node.automatic_attrs[:platform] = 'ubuntu'
132
- platform_introspector.platform?(:splatlinux).should == false
132
+ expect(platform_introspector.platform?(:splatlinux)).to eq(false)
133
133
  end
134
134
  end
135
135
 
@@ -137,21 +137,21 @@ shared_examples_for "a platform introspector" do
137
137
 
138
138
  it "returns true if the node is in a provided platform family and families are provided as symbols" do
139
139
  node.automatic_attrs[:platform_family] = 'debian'
140
- platform_introspector.platform_family?([:rhel, :debian]).should == true
140
+ expect(platform_introspector.platform_family?([:rhel, :debian])).to eq(true)
141
141
  end
142
142
 
143
143
  it "returns true if the node is a provided platform and platforms are provided as strings" do
144
144
  node.automatic_attrs[:platform_family] = 'rhel'
145
- platform_introspector.platform_family?(["rhel", "debian"]).should == true
145
+ expect(platform_introspector.platform_family?(["rhel", "debian"])).to eq(true)
146
146
  end
147
147
 
148
148
  it "returns false if the node is not of the provided platforms" do
149
149
  node.automatic_attrs[:platform_family] = 'suse'
150
- platform_introspector.platform_family?(:splatlinux).should == false
150
+ expect(platform_introspector.platform_family?(:splatlinux)).to eq(false)
151
151
  end
152
152
 
153
153
  it "returns false if the node is not of the provided platforms and platform_family is not set" do
154
- platform_introspector.platform_family?(:splatlinux).should == false
154
+ expect(platform_introspector.platform_family?(:splatlinux)).to eq(false)
155
155
  end
156
156
 
157
157
  end
@@ -170,13 +170,13 @@ shared_examples_for "a platform introspector" do
170
170
  it "returns the correct default for a given platform" do
171
171
  node.automatic_attrs[:platform] = "debian"
172
172
  node.automatic_attrs[:platform_version] = '9000'
173
- platform_introspector.value_for_platform(@platform_hash).should == [ :restart, :reload, :status ]
173
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq([ :restart, :reload, :status ])
174
174
  end
175
175
 
176
176
  it "returns the correct platform+version specific value " do
177
177
  node.automatic_attrs[:platform] = "debian"
178
178
  node.automatic_attrs[:platform_version] = '4.0'
179
- platform_introspector.value_for_platform(@platform_hash).should == [:restart, :reload]
179
+ expect(platform_introspector.value_for_platform(@platform_hash)).to eq([:restart, :reload])
180
180
  end
181
181
  end
182
182