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
@@ -81,12 +81,12 @@ describe Chef::Resource::RemoteDirectory do
81
81
 
82
82
  it "transfers the directory with all contents" do
83
83
  expected_files.each do |file_path|
84
- File.should exist(file_path)
84
+ expect(File).to exist(file_path)
85
85
  end
86
86
  end
87
87
 
88
88
  it "is marked as updated by last action" do
89
- resource.should be_updated_by_last_action
89
+ expect(resource).to be_updated_by_last_action
90
90
  end
91
91
  end
92
92
 
@@ -98,13 +98,13 @@ describe Chef::Resource::RemoteDirectory do
98
98
 
99
99
  it "does not modify the expected state of the directory" do
100
100
  expected_files.each do |file_path|
101
- File.should exist(file_path)
101
+ expect(File).to exist(file_path)
102
102
  end
103
103
  end
104
104
 
105
105
  it "does not remove unmanaged files" do
106
- File.should exist(@existing1)
107
- File.should exist(@existing2)
106
+ expect(File).to exist(@existing1)
107
+ expect(File).to exist(@existing2)
108
108
  end
109
109
  end
110
110
 
@@ -116,12 +116,12 @@ describe Chef::Resource::RemoteDirectory do
116
116
 
117
117
  it "does not modify the expected state of the directory" do
118
118
  expected_files.each do |file_path|
119
- File.should exist(file_path)
119
+ expect(File).to exist(file_path)
120
120
  end
121
121
  end
122
122
 
123
123
  it "is not marked as updated by last action" do
124
- resource_second_pass.should_not be_updated_by_last_action
124
+ expect(resource_second_pass).not_to be_updated_by_last_action
125
125
  end
126
126
 
127
127
  end
@@ -142,8 +142,8 @@ describe Chef::Resource::RemoteDirectory do
142
142
  modified_subdir_file_checksum = sha256_checksum(modified_subdir_file)
143
143
 
144
144
  resource.run_action(:create)
145
- sha256_checksum(modified_file).should == modified_file_checksum
146
- sha256_checksum(modified_subdir_file).should == modified_subdir_file_checksum
145
+ expect(sha256_checksum(modified_file)).to eq(modified_file_checksum)
146
+ expect(sha256_checksum(modified_subdir_file)).to eq(modified_subdir_file_checksum)
147
147
  end
148
148
  end
149
149
  end
@@ -160,7 +160,7 @@ describe Chef::Resource::RemoteDirectory do
160
160
 
161
161
  it "creates the directory contents as normal" do
162
162
  expected_files.each do |file_path|
163
- File.should exist(file_path)
163
+ expect(File).to exist(file_path)
164
164
  end
165
165
  end
166
166
 
@@ -173,18 +173,18 @@ describe Chef::Resource::RemoteDirectory do
173
173
  end
174
174
 
175
175
  it "removes unmanaged files" do
176
- File.should_not exist(@existing1)
177
- File.should_not exist(@existing2)
176
+ expect(File).not_to exist(@existing1)
177
+ expect(File).not_to exist(@existing2)
178
178
  end
179
179
 
180
180
  it "does not modify managed files" do
181
181
  expected_files.each do |file_path|
182
- File.should exist(file_path)
182
+ expect(File).to exist(file_path)
183
183
  end
184
184
  end
185
185
 
186
186
  it "is marked as updated by last action" do
187
- resource.should be_updated_by_last_action
187
+ expect(resource).to be_updated_by_last_action
188
188
  end
189
189
  end
190
190
 
@@ -204,14 +204,14 @@ describe Chef::Resource::RemoteDirectory do
204
204
  end
205
205
 
206
206
  it "removes files in subdirectories before files above" do
207
- File.should_not exist(@existing1)
208
- File.should_not exist(@existing2)
209
- File.should_not exist(@existing3)
210
- File.should_not exist(@existing4)
207
+ expect(File).not_to exist(@existing1)
208
+ expect(File).not_to exist(@existing2)
209
+ expect(File).not_to exist(@existing3)
210
+ expect(File).not_to exist(@existing4)
211
211
  end
212
212
 
213
213
  it "is marked as updated by last action" do
214
- resource.should be_updated_by_last_action
214
+ expect(resource).to be_updated_by_last_action
215
215
  end
216
216
 
217
217
  end
@@ -137,20 +137,20 @@ describe Chef::Resource::RemoteFile do
137
137
  let(:source) { 'http://localhost:9000/nyan_cat_content_length_compressed.png' }
138
138
 
139
139
  before do
140
- File.should_not exist(path)
140
+ expect(File).not_to exist(path)
141
141
  resource.run_action(:create)
142
142
  end
143
143
 
144
144
  it "should create the file" do
145
- File.should exist(path)
145
+ expect(File).to exist(path)
146
146
  end
147
147
 
148
148
  it "should mark the resource as updated" do
149
- resource.should be_updated_by_last_action
149
+ expect(resource).to be_updated_by_last_action
150
150
  end
151
151
 
152
152
  it "has the correct content" do
153
- binread(path).should == expected_content
153
+ expect(binread(path)).to eq(expected_content)
154
154
  end
155
155
  end
156
156
 
@@ -159,20 +159,20 @@ describe Chef::Resource::RemoteFile do
159
159
  let(:source) { 'http://localhost:9000/nyan_cat_content_length.png' }
160
160
 
161
161
  before do
162
- File.should_not exist(path)
162
+ expect(File).not_to exist(path)
163
163
  resource.run_action(:create)
164
164
  end
165
165
 
166
166
  it "should create the file" do
167
- File.should exist(path)
167
+ expect(File).to exist(path)
168
168
  end
169
169
 
170
170
  it "should mark the resource as updated" do
171
- resource.should be_updated_by_last_action
171
+ expect(resource).to be_updated_by_last_action
172
172
  end
173
173
 
174
174
  it "has the correct content" do
175
- binread(path).should == expected_content
175
+ expect(binread(path)).to eq(expected_content)
176
176
  end
177
177
  end
178
178
 
@@ -180,11 +180,11 @@ describe Chef::Resource::RemoteFile do
180
180
  let(:source) { 'http://localhost:9000/nyan_cat_truncated_compressed.png' }
181
181
 
182
182
  before do
183
- File.should_not exist(path)
183
+ expect(File).not_to exist(path)
184
184
  end
185
185
 
186
186
  it "should raise ContentLengthMismatch" do
187
- lambda { resource.run_action(:create) }.should raise_error(Chef::Exceptions::ContentLengthMismatch)
187
+ expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::ContentLengthMismatch)
188
188
  #File.should_not exist(path) # XXX: CHEF-5081
189
189
  end
190
190
  end
@@ -193,11 +193,11 @@ describe Chef::Resource::RemoteFile do
193
193
  let(:source) { 'http://localhost:9000/nyan_cat_truncated.png' }
194
194
 
195
195
  before do
196
- File.should_not exist(path)
196
+ expect(File).not_to exist(path)
197
197
  end
198
198
 
199
199
  it "should raise ContentLengthMismatch" do
200
- lambda { resource.run_action(:create) }.should raise_error(Chef::Exceptions::ContentLengthMismatch)
200
+ expect { resource.run_action(:create) }.to raise_error(Chef::Exceptions::ContentLengthMismatch)
201
201
  #File.should_not exist(path) # XXX: CHEF-5081
202
202
  end
203
203
  end
@@ -207,20 +207,20 @@ describe Chef::Resource::RemoteFile do
207
207
  let(:source) { 'http://localhost:9000/nyan_cat_transfer_encoding.png' }
208
208
 
209
209
  before do
210
- File.should_not exist(path)
210
+ expect(File).not_to exist(path)
211
211
  resource.run_action(:create)
212
212
  end
213
213
 
214
214
  it "should create the file" do
215
- File.should exist(path)
215
+ expect(File).to exist(path)
216
216
  end
217
217
 
218
218
  it "should mark the resource as updated" do
219
- resource.should be_updated_by_last_action
219
+ expect(resource).to be_updated_by_last_action
220
220
  end
221
221
 
222
222
  it "has the correct content" do
223
- binread(path).should == expected_content
223
+ expect(binread(path)).to eq(expected_content)
224
224
  end
225
225
  end
226
226
 
@@ -228,12 +228,12 @@ describe Chef::Resource::RemoteFile do
228
228
  let(:source) { 'http://localhost:0000/seattle_capo.png' }
229
229
 
230
230
  before do
231
- File.should_not exist(path)
231
+ expect(File).not_to exist(path)
232
232
  end
233
233
 
234
234
  it "should not create the file" do
235
235
  expect{ resource.run_action(:create) }.to raise_error
236
- File.should_not exist(path)
236
+ expect(File).not_to exist(path)
237
237
  end
238
238
  end
239
239
  end
@@ -69,7 +69,7 @@ describe Chef::Resource::Template do
69
69
  resource.source('openldap_variable_stuff.conf.erb')
70
70
  resource.variables(:secret => "nutella")
71
71
  resource.run_action(:create)
72
- IO.read(path).should == "super secret is nutella"
72
+ expect(IO.read(path)).to eq("super secret is nutella")
73
73
  end
74
74
 
75
75
  it "creates the template with the rendered content using a local erb file when the :create action is run" do
@@ -77,7 +77,7 @@ describe Chef::Resource::Template do
77
77
  resource.cookbook(nil)
78
78
  resource.local(true)
79
79
  resource.run_action(:create)
80
- IO.read(path).should == expected_content
80
+ expect(IO.read(path)).to eq(expected_content)
81
81
  end
82
82
  end
83
83
 
@@ -96,7 +96,7 @@ describe Chef::Resource::Template do
96
96
  shared_examples "a template with helpers" do
97
97
  it "generates expected content by calling helper methods" do
98
98
  resource.run_action(:create)
99
- binread(path).strip.should == expected_content
99
+ expect(binread(path).strip).to eq(expected_content)
100
100
  end
101
101
  end
102
102
 
@@ -202,7 +202,7 @@ describe Chef::Resource::Template do
202
202
  it "output should contain platform's line endings" do
203
203
  resource.run_action(:create)
204
204
  binread(path).each_line do |line|
205
- line.should end_with(Chef::Platform.windows? ? "\r\n" : "\n")
205
+ expect(line).to end_with(Chef::Platform.windows? ? "\r\n" : "\n")
206
206
  end
207
207
  end
208
208
  end
@@ -37,15 +37,15 @@ describe "Chef::Resource::User with Chef::Provider::User::Dscl provider", metada
37
37
  end
38
38
 
39
39
  def user_should_exist
40
- shell_out("/usr/bin/dscl . -ls /Users").stdout.should include username
40
+ expect(shell_out("/usr/bin/dscl . -ls /Users").stdout).to include username
41
41
  end
42
42
 
43
43
  def check_password(pass)
44
44
  # In order to test the password we use dscl passwd command since
45
45
  # that's the only command that gets the user password from CLI.
46
- shell_out("dscl . -passwd /Users/greatchef #{pass} new_password").exitstatus.should == 0
46
+ expect(shell_out("dscl . -passwd /Users/greatchef #{pass} new_password").exitstatus).to eq(0)
47
47
  # Now reset the password back
48
- shell_out("dscl . -passwd /Users/greatchef new_password #{pass}").exitstatus.should == 0
48
+ expect(shell_out("dscl . -passwd /Users/greatchef new_password #{pass}").exitstatus).to eq(0)
49
49
  end
50
50
 
51
51
  let(:node) do
@@ -191,7 +191,7 @@ c5adbbac718b7eb99463a7b679571e0f\
191
191
  user_resource.run_action(:remove)
192
192
  groups.each do |group|
193
193
  # Do not raise an error when group is empty
194
- shell_out("dscl . read /Groups/staff GroupMembership").stdout.should_not include(group)
194
+ expect(shell_out("dscl . read /Groups/staff GroupMembership").stdout).not_to include(group)
195
195
  end
196
196
  end
197
197
  end
@@ -70,9 +70,9 @@ describe Chef::Provider::User::Useradd, metadata do
70
70
 
71
71
  def password_should_be_set
72
72
  if ohai[:platform] == "aix"
73
- pw_entry.passwd.should == "!"
73
+ expect(pw_entry.passwd).to eq("!")
74
74
  else
75
- pw_entry.passwd.should == "x"
75
+ expect(pw_entry.passwd).to eq("x")
76
76
  end
77
77
  end
78
78
 
@@ -82,12 +82,25 @@ describe Chef::Provider::User::Useradd, metadata do
82
82
  end
83
83
 
84
84
  after do
85
- begin
86
- pw_entry # will raise if the user doesn't exist
87
- shell_out!("userdel", "-r", username, :returns => [0,12])
88
- rescue UserNotFound
89
- # nothing to remove
85
+ max_retries = 3
86
+ while max_retries > 0
87
+ begin
88
+ pw_entry # will raise if the user doesn't exist
89
+ status = shell_out!("userdel", "-r", username, :returns => [0,8,12])
90
+
91
+ # Error code 8 during userdel indicates that the user is logged in.
92
+ # This occurs randomly because the accounts daemon holds a lock due to which userdel fails.
93
+ # The work around is to retry userdel for 3 times.
94
+ break if status.exitstatus != 8
95
+
96
+ sleep 1
97
+ max_retries = max_retries -1
98
+ rescue UserNotFound
99
+ break
100
+ end
90
101
  end
102
+
103
+ status.error! if max_retries == 0
91
104
  end
92
105
 
93
106
  let(:node) do
@@ -145,12 +158,12 @@ describe Chef::Provider::User::Useradd, metadata do
145
158
  pending(reason)
146
159
  end
147
160
  user_resource.run_action(:create)
148
- user_resource.should be_updated_by_last_action
161
+ expect(user_resource).to be_updated_by_last_action
149
162
  end
150
163
 
151
164
 
152
165
  it "ensures the user exists" do
153
- pw_entry.name.should == username
166
+ expect(pw_entry.name).to eq(username)
154
167
  end
155
168
 
156
169
  # On Debian, the only constraints are that usernames must neither start
@@ -171,7 +184,7 @@ describe Chef::Provider::User::Useradd, metadata do
171
184
  let(:username) { "t'bilisi" }
172
185
 
173
186
  it "ensures the user exists" do
174
- pw_entry.name.should == username
187
+ expect(pw_entry.name).to eq(username)
175
188
  end
176
189
  end
177
190
 
@@ -181,7 +194,7 @@ describe Chef::Provider::User::Useradd, metadata do
181
194
  let(:uid) { 1999 }
182
195
 
183
196
  it "ensures the user has the given uid" do
184
- pw_entry.uid.should == "1999"
197
+ expect(pw_entry.uid).to eq("1999")
185
198
  end
186
199
  end
187
200
 
@@ -189,14 +202,14 @@ describe Chef::Provider::User::Useradd, metadata do
189
202
  let(:comment) { "hello this is dog" }
190
203
 
191
204
  it "ensures the comment is set" do
192
- pw_entry.gecos.should == "hello this is dog"
205
+ expect(pw_entry.gecos).to eq("hello this is dog")
193
206
  end
194
207
 
195
208
  context "in standard gecos format" do
196
209
  let(:comment) { "Bobo T. Clown,some building,555-555-5555,@boboclown" }
197
210
 
198
211
  it "ensures the comment is set" do
199
- pw_entry.gecos.should == comment
212
+ expect(pw_entry.gecos).to eq(comment)
200
213
  end
201
214
  end
202
215
 
@@ -206,7 +219,7 @@ describe Chef::Provider::User::Useradd, metadata do
206
219
  it "ensures the comment is set" do
207
220
  actual = pw_entry.gecos
208
221
  actual.force_encoding(Encoding::UTF_8) if "".respond_to?(:force_encoding)
209
- actual.should == comment
222
+ expect(actual).to eq(comment)
210
223
  end
211
224
  end
212
225
 
@@ -214,7 +227,7 @@ describe Chef::Provider::User::Useradd, metadata do
214
227
  let(:comment) { "don't go" }
215
228
 
216
229
  it "ensures the comment is set" do
217
- pw_entry.gecos.should == comment
230
+ expect(pw_entry.gecos).to eq(comment)
218
231
  end
219
232
  end
220
233
  end
@@ -223,17 +236,17 @@ describe Chef::Provider::User::Useradd, metadata do
223
236
  let(:home) { "/home/#{username}" }
224
237
 
225
238
  it "ensures the user's home is set to the given path" do
226
- pw_entry.home.should == "/home/#{username}"
239
+ expect(pw_entry.home).to eq("/home/#{username}")
227
240
  end
228
241
 
229
242
  if %w{rhel fedora}.include?(OHAI_SYSTEM["platform_family"])
230
243
  # Inconsistent behavior. See: CHEF-2205
231
244
  it "creates the home dir when not explicitly asked to on RHEL (XXX)" do
232
- File.should exist("/home/#{username}")
245
+ expect(File).to exist("/home/#{username}")
233
246
  end
234
247
  else
235
248
  it "does not create the home dir without `manage_home'" do
236
- File.should_not exist("/home/#{username}")
249
+ expect(File).not_to exist("/home/#{username}")
237
250
  end
238
251
  end
239
252
 
@@ -241,7 +254,7 @@ describe Chef::Provider::User::Useradd, metadata do
241
254
  let(:manage_home) { true }
242
255
 
243
256
  it "ensures the user's home directory exists" do
244
- File.should exist("/home/#{username}")
257
+ expect(File).to exist("/home/#{username}")
245
258
  end
246
259
  end
247
260
  end
@@ -259,7 +272,7 @@ describe Chef::Provider::User::Useradd, metadata do
259
272
 
260
273
  it "sets the user's shadow password" do
261
274
  password_should_be_set
262
- etc_shadow.should include(expected_shadow)
275
+ expect(etc_shadow).to include(expected_shadow)
263
276
  end
264
277
  end
265
278
 
@@ -284,7 +297,7 @@ describe Chef::Provider::User::Useradd, metadata do
284
297
  end
285
298
 
286
299
  it "ensures the user has the properties of a system user" do
287
- pw_entry.uid.to_i.should be < uid_min.to_i
300
+ expect(pw_entry.uid.to_i).to be < uid_min.to_i
288
301
  end
289
302
  end
290
303
  end # when the user does not exist beforehand
@@ -318,9 +331,9 @@ describe Chef::Provider::User::Useradd, metadata do
318
331
  pending(reason)
319
332
  end
320
333
  existing_user.run_action(:create)
321
- existing_user.should be_updated_by_last_action
334
+ expect(existing_user).to be_updated_by_last_action
322
335
  user_resource.run_action(:create)
323
- user_resource.updated_by_last_action?.should == expect_updated?
336
+ expect(user_resource.updated_by_last_action?).to eq(expect_updated?)
324
337
  end
325
338
 
326
339
  context "and all properties are in the desired state" do
@@ -350,7 +363,7 @@ describe Chef::Provider::User::Useradd, metadata do
350
363
  let(:expect_updated?) { false }
351
364
 
352
365
  it "does not update the user" do
353
- user_resource.should_not be_updated
366
+ expect(user_resource).not_to be_updated
354
367
  end
355
368
  end
356
369
 
@@ -359,7 +372,7 @@ describe Chef::Provider::User::Useradd, metadata do
359
372
  let(:existing_uid) { 1998 }
360
373
 
361
374
  it "ensures the uid is set to the desired value" do
362
- pw_entry.uid.should == "1999"
375
+ expect(pw_entry.uid).to eq("1999")
363
376
  end
364
377
  end
365
378
 
@@ -368,7 +381,7 @@ describe Chef::Provider::User::Useradd, metadata do
368
381
  let(:existing_comment) { "woof" }
369
382
 
370
383
  it "ensures the comment field is set to the desired value" do
371
- pw_entry.gecos.should == "hello this is dog"
384
+ expect(pw_entry.gecos).to eq("hello this is dog")
372
385
  end
373
386
  end
374
387
 
@@ -376,15 +389,15 @@ describe Chef::Provider::User::Useradd, metadata do
376
389
  let(:existing_home) { "/home/foo" }
377
390
  let(:home) { "/home/bar" }
378
391
  it "ensures the home directory is set to the desired value" do
379
- pw_entry.home.should == "/home/bar"
392
+ expect(pw_entry.home).to eq("/home/bar")
380
393
  end
381
394
 
382
395
  context "and manage_home is enabled" do
383
396
  let(:existing_manage_home) { true }
384
397
  let(:manage_home) { true }
385
398
  it "moves the home directory to the new location" do
386
- File.should_not exist("/home/foo")
387
- File.should exist("/home/bar")
399
+ expect(File).not_to exist("/home/foo")
400
+ expect(File).to exist("/home/bar")
388
401
  end
389
402
  end
390
403
 
@@ -396,19 +409,19 @@ describe Chef::Provider::User::Useradd, metadata do
396
409
  # Inconsistent behavior. See: CHEF-2205
397
410
  it "created the home dir b/c of CHEF-2205 so it still exists" do
398
411
  # This behavior seems contrary to expectation and non-convergent.
399
- File.should_not exist("/home/foo")
400
- File.should exist("/home/bar")
412
+ expect(File).not_to exist("/home/foo")
413
+ expect(File).to exist("/home/bar")
401
414
  end
402
415
  elsif ohai[:platform] == "aix"
403
416
  it "creates the home dir in the desired location" do
404
- File.should_not exist("/home/foo")
405
- File.should exist("/home/bar")
417
+ expect(File).not_to exist("/home/foo")
418
+ expect(File).to exist("/home/bar")
406
419
  end
407
420
  else
408
421
  it "does not create the home dir in the desired location (XXX)" do
409
422
  # This behavior seems contrary to expectation and non-convergent.
410
- File.should_not exist("/home/foo")
411
- File.should_not exist("/home/bar")
423
+ expect(File).not_to exist("/home/foo")
424
+ expect(File).not_to exist("/home/bar")
412
425
  end
413
426
  end
414
427
  end
@@ -419,8 +432,8 @@ describe Chef::Provider::User::Useradd, metadata do
419
432
 
420
433
  it "leaves the old home directory around (XXX)" do
421
434
  # Would it be better to remove the old home?
422
- File.should exist("/home/foo")
423
- File.should_not exist("/home/bar")
435
+ expect(File).to exist("/home/foo")
436
+ expect(File).not_to exist("/home/bar")
424
437
  end
425
438
  end
426
439
  end
@@ -439,7 +452,7 @@ describe Chef::Provider::User::Useradd, metadata do
439
452
 
440
453
  it "ensures the password is set" do
441
454
  password_should_be_set
442
- etc_shadow.should include(expected_shadow)
455
+ expect(etc_shadow).to include(expected_shadow)
443
456
  end
444
457
 
445
458
  end
@@ -468,7 +481,7 @@ describe Chef::Provider::User::Useradd, metadata do
468
481
 
469
482
  it "ensures the password is set to the desired value" do
470
483
  password_should_be_set
471
- etc_shadow.should include(expected_shadow)
484
+ expect(etc_shadow).to include(expected_shadow)
472
485
  end
473
486
  end
474
487
 
@@ -514,18 +527,18 @@ describe Chef::Provider::User::Useradd, metadata do
514
527
  def user_account_should_be_locked
515
528
  case ohai[:platform]
516
529
  when "aix"
517
- aix_user_lock_status.should == "true"
530
+ expect(aix_user_lock_status).to eq("true")
518
531
  else
519
- shadow_password.should include("!")
532
+ expect(shadow_password).to include("!")
520
533
  end
521
534
  end
522
535
 
523
536
  def user_account_should_be_unlocked
524
537
  case ohai[:platform]
525
538
  when "aix"
526
- aix_user_lock_status.should == "false"
539
+ expect(aix_user_lock_status).to eq("false")
527
540
  else
528
- shadow_password.should_not include("!")
541
+ expect(shadow_password).not_to include("!")
529
542
  end
530
543
  end
531
544
 
@@ -596,7 +609,7 @@ describe Chef::Provider::User::Useradd, metadata do
596
609
 
597
610
  let(:user_locked_context?) { true }
598
611
  it "does not update the user" do
599
- user_resource.should_not be_updated_by_last_action
612
+ expect(user_resource).not_to be_updated_by_last_action
600
613
  end
601
614
  end
602
615
  end
@@ -628,8 +641,8 @@ describe Chef::Provider::User::Useradd, metadata do
628
641
  if %w[suse opensuse].include?(OHAI_SYSTEM["platform_family"])
629
642
  # suse gets this right:
630
643
  it "errors out trying to unlock the user" do
631
- @error.should be_a(Mixlib::ShellOut::ShellCommandFailed)
632
- @error.message.should include("Cannot unlock the password")
644
+ expect(@error).to be_a(Mixlib::ShellOut::ShellCommandFailed)
645
+ expect(@error.message).to include("Cannot unlock the password")
633
646
  end
634
647
  else
635
648
 
@@ -644,13 +657,13 @@ describe Chef::Provider::User::Useradd, metadata do
644
657
  # You should set a password with usermod -p to unlock this user's password.
645
658
  # DEBUG: ---- End output of usermod -U chef-functional-test ----
646
659
  # DEBUG: Ran usermod -U chef-functional-test returned 0
647
- @error.should be_nil
660
+ expect(@error).to be_nil
648
661
  if ohai[:platform] == "aix"
649
- pw_entry.passwd.should == '*'
662
+ expect(pw_entry.passwd).to eq('*')
650
663
  user_account_should_be_unlocked
651
664
  else
652
- pw_entry.passwd.should == 'x'
653
- shadow_password.should include("!")
665
+ expect(pw_entry.passwd).to eq('x')
666
+ expect(shadow_password).to include("!")
654
667
  end
655
668
  end
656
669
  end
@@ -668,7 +681,7 @@ describe Chef::Provider::User::Useradd, metadata do
668
681
 
669
682
  context "and the user is not locked" do
670
683
  it "does not update the user" do
671
- user_resource.should_not be_updated_by_last_action
684
+ expect(user_resource).not_to be_updated_by_last_action
672
685
  end
673
686
  end
674
687