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
@@ -39,21 +39,21 @@ describe Chef::Provider::DscScript do
39
39
  it "describes the resource as converged if there were 0 DSC resources" do
40
40
  allow(provider).to receive(:run_configuration).with(:test).and_return([])
41
41
  provider.load_current_resource
42
- expect(provider.instance_variable_get('@resource_converged')).to be_true
42
+ expect(provider.instance_variable_get('@resource_converged')).to be_truthy
43
43
  end
44
44
 
45
45
  it "describes the resource as not converged if there is 1 DSC resources that is converged" do
46
46
  dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resource', false, ['nothing will change something'])
47
47
  allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info])
48
48
  provider.load_current_resource
49
- expect(provider.instance_variable_get('@resource_converged')).to be_true
49
+ expect(provider.instance_variable_get('@resource_converged')).to be_truthy
50
50
  end
51
51
 
52
52
  it "describes the resource as not converged if there is 1 DSC resources that is not converged" do
53
53
  dsc_resource_info = Chef::Util::DSC::ResourceInfo.new('resource', true, ['will change something'])
54
54
  allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info])
55
55
  provider.load_current_resource
56
- expect(provider.instance_variable_get('@resource_converged')).to be_false
56
+ expect(provider.instance_variable_get('@resource_converged')).to be_falsey
57
57
  end
58
58
 
59
59
  it "describes the resource as not converged if there are any DSC resources that are not converged" do
@@ -62,7 +62,7 @@ describe Chef::Provider::DscScript do
62
62
 
63
63
  allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info1, dsc_resource_info2])
64
64
  provider.load_current_resource
65
- expect(provider.instance_variable_get('@resource_converged')).to be_false
65
+ expect(provider.instance_variable_get('@resource_converged')).to be_falsey
66
66
  end
67
67
 
68
68
  it "describes the resource as converged if all DSC resources that are converged" do
@@ -71,7 +71,7 @@ describe Chef::Provider::DscScript do
71
71
 
72
72
  allow(provider).to receive(:run_configuration).with(:test).and_return([dsc_resource_info1, dsc_resource_info2])
73
73
  provider.load_current_resource
74
- expect(provider.instance_variable_get('@resource_converged')).to be_true
74
+ expect(provider.instance_variable_get('@resource_converged')).to be_truthy
75
75
  end
76
76
  end
77
77
 
@@ -99,7 +99,7 @@ describe Chef::Provider::DscScript do
99
99
  it 'should noop if neither code or command are provided' do
100
100
  allow(provider).to receive(:load_current_resource)
101
101
  generator = double('Chef::Util::DSC::ConfigurationGenerator')
102
- expect(generator).to receive(:configuration_document_from_script_code).with('', anything(), anything())
102
+ expect(generator).to receive(:configuration_document_from_script_code).with('', anything(), anything(), anything())
103
103
  allow(Chef::Util::DSC::ConfigurationGenerator).to receive(:new).and_return(generator)
104
104
  provider.send(:generate_configuration_document, 'tmp', nil)
105
105
  end
@@ -30,7 +30,7 @@ describe Chef::Provider::Env do
30
30
  end
31
31
 
32
32
  it "assumes the key_name exists by default" do
33
- expect(@provider.key_exists).to be_true
33
+ expect(@provider.key_exists).to be_truthy
34
34
  end
35
35
 
36
36
  describe "when loading the current status" do
@@ -55,13 +55,13 @@ describe Chef::Provider::Env do
55
55
  it "should check if the key_name exists" do
56
56
  expect(@provider).to receive(:env_key_exists).with("FOO").and_return(true)
57
57
  @provider.load_current_resource
58
- expect(@provider.key_exists).to be_true
58
+ expect(@provider.key_exists).to be_truthy
59
59
  end
60
60
 
61
61
  it "should flip the value of exists if the key does not exist" do
62
62
  expect(@provider).to receive(:env_key_exists).with("FOO").and_return(false)
63
63
  @provider.load_current_resource
64
- expect(@provider.key_exists).to be_false
64
+ expect(@provider.key_exists).to be_falsey
65
65
  end
66
66
 
67
67
  it "should return the current resource" do
@@ -230,40 +230,47 @@ describe Chef::Provider::Env do
230
230
  end
231
231
 
232
232
  it "should return false if the values are equal" do
233
- expect(@provider.requires_modify_or_create?).to be_false
233
+ expect(@provider.requires_modify_or_create?).to be_falsey
234
234
  end
235
235
 
236
236
  it "should return true if the values not are equal" do
237
237
  @new_resource.value("C:/elsewhere")
238
- expect(@provider.requires_modify_or_create?).to be_true
238
+ expect(@provider.requires_modify_or_create?).to be_truthy
239
239
  end
240
240
 
241
241
  it "should return false if the current value contains the element" do
242
242
  @new_resource.delim(";")
243
243
  @current_resource.value("C:/bar;C:/foo;C:/baz")
244
244
 
245
- expect(@provider.requires_modify_or_create?).to be_false
245
+ expect(@provider.requires_modify_or_create?).to be_falsey
246
246
  end
247
247
 
248
248
  it "should return true if the current value does not contain the element" do
249
249
  @new_resource.delim(";")
250
250
  @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
251
- expect(@provider.requires_modify_or_create?).to be_true
251
+ expect(@provider.requires_modify_or_create?).to be_truthy
252
252
  end
253
253
 
254
254
  context "when new_resource's value contains the delimiter" do
255
- it "should return false if all the current values are contained" do
255
+ it "should return false if all the current values are contained in specified order" do
256
256
  @new_resource.value("C:/biz;C:/baz")
257
257
  @new_resource.delim(";")
258
258
  @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
259
- expect(@provider.requires_modify_or_create?).to be_false
259
+ expect(@provider.requires_modify_or_create?).to be_falsey
260
260
  end
261
261
 
262
262
  it "should return true if any of the new values are not contained" do
263
263
  @new_resource.value("C:/biz;C:/baz;C:/bin")
264
264
  @new_resource.delim(";")
265
265
  @current_resource.value("C:/biz;C:/foo/bin;C:/baz")
266
- expect(@provider.requires_modify_or_create?).to be_true
266
+ expect(@provider.requires_modify_or_create?).to be_truthy
267
+ end
268
+
269
+ it "should return true if values are contained in different order" do
270
+ @new_resource.value("C:/biz;C:/baz")
271
+ @new_resource.delim(";")
272
+ @current_resource.value("C:/baz;C:/foo/bin;C:/biz")
273
+ expect(@provider.requires_modify_or_create?).to be_truthy
267
274
  end
268
275
  end
269
276
  end
@@ -286,12 +293,18 @@ describe Chef::Provider::Env do
286
293
  expect(passed_value).to eq(new_value)
287
294
  end
288
295
 
289
- it "should only add values not already contained when a delimiter is provided" do
296
+ it "should only add values not already contained" do
290
297
  @new_resource.value("C:/foo;C:/bar;C:/baz")
291
- @new_resource.delim(";")
292
- @current_resource.value("C:/foo/bar;C:/bar;C:/baz")
298
+ @current_resource.value("C:/bar;C:/baz;C:/foo/bar")
299
+ @provider.modify_env
300
+ expect(@new_resource.value).to eq("C:/foo;C:/bar;C:/baz;C:/foo/bar")
301
+ end
302
+
303
+ it "should reorder values to keep order which asked" do
304
+ @new_resource.value("C:/foo;C:/bar;C:/baz")
305
+ @current_resource.value("C:/foo/bar;C:/baz;C:/bar")
293
306
  @provider.modify_env
294
- expect(@new_resource.value).to eq("C:/foo;C:/foo/bar;C:/bar;C:/baz")
307
+ expect(@new_resource.value).to eq("C:/foo;C:/bar;C:/baz;C:/foo/bar")
295
308
  end
296
309
  end
297
310
  end
@@ -15,91 +15,162 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
19
- #require 'spec_helper'
18
+
19
+ require 'spec_helper'
20
20
 
21
21
  describe Chef::Provider::Execute do
22
- before do
23
- @node = Chef::Node.new
24
- @cookbook_collection = Chef::CookbookCollection.new([])
25
- @events = Chef::EventDispatch::Dispatcher.new
26
- @run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
27
- @new_resource = Chef::Resource::Execute.new("foo_resource", @run_context)
28
- @new_resource.timeout 3600
29
- @new_resource.returns 0
30
- @new_resource.creates "/foo_resource"
31
- @provider = Chef::Provider::Execute.new(@new_resource, @run_context)
32
- @current_resource = Chef::Resource::Ifconfig.new("foo_resource", @run_context)
33
- @provider.current_resource = @current_resource
34
- Chef::Log.level = :info
35
- # FIXME: There should be a test for how STDOUT.tty? changes the live_stream option being passed
36
- allow(STDOUT).to receive(:tty?).and_return(true)
37
- end
22
+
23
+ let(:node) { Chef::Node.new }
24
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
25
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
26
+ let(:provider) { Chef::Provider::Execute.new(new_resource, run_context) }
27
+ let(:current_resource) { Chef::Resource::Ifconfig.new("foo_resource", run_context) }
38
28
 
39
29
  let(:opts) do
40
30
  {
41
- timeout: @new_resource.timeout,
42
- returns: @new_resource.returns,
43
- log_level: :info,
44
- log_tag: @new_resource.to_s,
45
- live_stream: STDOUT
31
+ timeout: 3600,
32
+ returns: 0,
33
+ log_level: :info,
34
+ log_tag: new_resource.to_s,
35
+ live_stream: STDOUT,
46
36
  }
47
37
  end
48
38
 
49
- it "should execute foo_resource" do
50
- allow(@provider).to receive(:load_current_resource)
51
- expect(@provider).to receive(:shell_out!).with(@new_resource.command, opts)
52
- expect(@provider).to receive(:converge_by).with("execute foo_resource").and_call_original
53
- expect(Chef::Log).not_to receive(:warn)
39
+ let(:new_resource) { Chef::Resource::Execute.new("foo_resource", run_context) }
54
40
 
55
- @provider.run_action(:run)
56
- expect(@new_resource).to be_updated
41
+ before do
42
+ allow(Chef::Platform).to receive(:windows?) { false }
43
+ @original_log_level = Chef::Log.level
44
+ Chef::Log.level = :info
45
+ allow(STDOUT).to receive(:tty?).and_return(true)
57
46
  end
58
47
 
59
- it "should honor sensitive attribute" do
60
- @new_resource.sensitive true
61
- @provider = Chef::Provider::Execute.new(@new_resource, @run_context)
62
- allow(@provider).to receive(:load_current_resource)
63
- # Since the resource is sensitive, it should not have :live_stream set
64
- expect(@provider).to receive(:shell_out!).with(@new_resource.command, opts.reject { |k| k == :live_stream })
65
- expect(Chef::Log).not_to receive(:warn)
66
- expect(@provider).to receive(:converge_by).with("execute sensitive resource").and_call_original
67
- @provider.run_action(:run)
68
- expect(@new_resource).to be_updated
48
+ after do
49
+ Chef::Log.level = @original_log_level
69
50
  end
70
51
 
71
- it "should do nothing if the sentinel file exists" do
72
- allow(@provider).to receive(:load_current_resource)
73
- expect(File).to receive(:exists?).with(@new_resource.creates).and_return(true)
74
- expect(@provider).not_to receive(:shell_out!)
75
- expect(Chef::Log).not_to receive(:warn)
76
-
77
- @provider.run_action(:run)
78
- expect(@new_resource).not_to be_updated
52
+ describe "#initialize" do
53
+ it "should return a Chef::Provider::Execute provider" do
54
+ expect(provider.class).to eql(Chef::Provider::Execute)
55
+ end
79
56
  end
80
57
 
81
- it "should respect cwd options for 'creates'" do
82
- @new_resource.cwd "/tmp"
83
- @new_resource.creates "foo_resource"
84
- allow(@provider).to receive(:load_current_resource)
85
- expect(File).to receive(:exists?).with(@new_resource.creates).and_return(false)
86
- expect(File).to receive(:exists?).with(File.join("/tmp", @new_resource.creates)).and_return(true)
87
- expect(Chef::Log).not_to receive(:warn)
88
- expect(@provider).not_to receive(:shell_out!)
89
-
90
- @provider.run_action(:run)
91
- expect(@new_resource).not_to be_updated
58
+ describe "#load_current_resource" do
59
+ before do
60
+ expect(Chef::Resource::Execute).to receive(:new).with(new_resource.name).and_return(current_resource)
61
+ end
62
+
63
+ it "should return the current resource" do
64
+ expect(provider.load_current_resource).to eql(current_resource)
65
+ end
66
+
67
+ it "our timeout should default to 3600" do
68
+ provider.load_current_resource
69
+ expect(provider.timeout).to eql(3600)
70
+ end
92
71
  end
93
72
 
94
- it "should warn if user specified relative path without cwd" do
95
- @new_resource.creates "foo_resource"
96
- allow(@provider).to receive(:load_current_resource)
97
- expect(Chef::Log).to receive(:warn).with(/relative path/)
98
- expect(File).to receive(:exists?).with(@new_resource.creates).and_return(true)
99
- expect(@provider).not_to receive(:shell_out!)
73
+ describe "#action_run" do
74
+ it "runs shell_out with the default options" do
75
+ expect(provider).to receive(:shell_out!).with(new_resource.name, opts)
76
+ expect(provider).to receive(:converge_by).with("execute foo_resource").and_call_original
77
+ expect(Chef::Log).not_to receive(:warn)
78
+ provider.run_action(:run)
79
+ expect(new_resource).to be_updated
80
+ end
100
81
 
101
- @provider.run_action(:run)
102
- expect(@new_resource).not_to be_updated
82
+ it "if you pass a command attribute, it runs the command" do
83
+ new_resource.command "/usr/argelbargle/bin/oogachacka 12345"
84
+ expect(provider).to receive(:shell_out!).with(new_resource.command, opts)
85
+ expect(provider).to receive(:converge_by).with("execute #{new_resource.command}").and_call_original
86
+ expect(Chef::Log).not_to receive(:warn)
87
+ provider.run_action(:run)
88
+ expect(new_resource).to be_updated
89
+ end
90
+
91
+ it "should honor sensitive attribute" do
92
+ new_resource.sensitive true
93
+ # Since the resource is sensitive, it should not have :live_stream set
94
+ opts.delete(:live_stream)
95
+ expect(provider).to receive(:shell_out!).with(new_resource.name, opts)
96
+ expect(provider).to receive(:converge_by).with("execute sensitive resource").and_call_original
97
+ expect(Chef::Log).not_to receive(:warn)
98
+ provider.run_action(:run)
99
+ expect(new_resource).to be_updated
100
+ end
101
+
102
+ it "should do nothing if the sentinel file exists" do
103
+ new_resource.creates "/foo_resource"
104
+ expect(FileTest).to receive(:exist?).with(new_resource.creates).and_return(true)
105
+ expect(provider).not_to receive(:shell_out!)
106
+ expect(Chef::Log).not_to receive(:warn)
107
+ provider.run_action(:run)
108
+ expect(new_resource).not_to be_updated
109
+ end
110
+
111
+ describe "when the user specifies a relative path without cwd" do
112
+ before do
113
+ expect(new_resource.cwd).to be_falsey
114
+ new_resource.creates "foo_resource"
115
+ end
116
+
117
+ it "should warn in Chef-12", :chef_lt_13_only do
118
+ expect(Chef::Log).to receive(:warn).with(/relative path/)
119
+ expect(FileTest).to receive(:exist?).with(new_resource.creates).and_return(true)
120
+ expect(provider).not_to receive(:shell_out!)
121
+ provider.run_action(:run)
122
+ expect(new_resource).not_to be_updated
123
+ end
124
+
125
+ it "should raise if user specified relative path without cwd for Chef-13", :chef_gte_13_only do
126
+ expect(Chef::Log).to receive(:warn).with(/relative path/)
127
+ expect(FileTest).to receive(:exist?).with(new_resource.creates).and_return(true)
128
+ expect(provider).not_to receive(:shell_out!)
129
+ expect { provider.run_action(:run) }.to raise_error # @todo: add a real error for Chef-13
130
+ end
131
+ end
132
+
133
+ it "should respect cwd options for 'creates'" do
134
+ new_resource.cwd "/tmp"
135
+ new_resource.creates "foo_resource"
136
+ expect(FileTest).not_to receive(:exist?).with(new_resource.creates)
137
+ expect(FileTest).to receive(:exist?).with(File.join("/tmp", new_resource.creates)).and_return(true)
138
+ expect(Chef::Log).not_to receive(:warn)
139
+ expect(provider).not_to receive(:shell_out!)
140
+
141
+ provider.run_action(:run)
142
+ expect(new_resource).not_to be_updated
143
+ end
144
+
145
+ it "should unset the live_stream if STDOUT is not a tty" do
146
+ expect(STDOUT).to receive(:tty?).and_return(false)
147
+ opts.delete(:live_stream)
148
+ expect(provider).to receive(:shell_out!).with(new_resource.name, opts)
149
+ expect(provider).to receive(:converge_by).with("execute foo_resource").and_call_original
150
+ expect(Chef::Log).not_to receive(:warn)
151
+ provider.run_action(:run)
152
+ expect(new_resource).to be_updated
153
+ end
154
+
155
+ it "should unset the live_stream if chef is running as a daemon" do
156
+ allow(Chef::Config).to receive(:[]).and_call_original
157
+ expect(Chef::Config).to receive(:[]).with(:daemon).and_return(true)
158
+ opts.delete(:live_stream)
159
+ expect(provider).to receive(:shell_out!).with(new_resource.name, opts)
160
+ expect(provider).to receive(:converge_by).with("execute foo_resource").and_call_original
161
+ expect(Chef::Log).not_to receive(:warn)
162
+ provider.run_action(:run)
163
+ expect(new_resource).to be_updated
164
+ end
165
+
166
+ it "should unset the live_stream if we are not running with a log level of at least :info" do
167
+ expect(Chef::Log).to receive(:info?).and_return(false)
168
+ opts.delete(:live_stream)
169
+ expect(provider).to receive(:shell_out!).with(new_resource.name, opts)
170
+ expect(provider).to receive(:converge_by).with("execute foo_resource").and_call_original
171
+ expect(Chef::Log).not_to receive(:warn)
172
+ provider.run_action(:run)
173
+ expect(new_resource).to be_updated
174
+ end
103
175
  end
104
176
  end
105
-
@@ -66,14 +66,14 @@ describe Chef::Provider::File::Content do
66
66
 
67
67
  it "returns a tempfile in the tempdir when :file_staging_uses_destdir is not set" do
68
68
  Chef::Config[:file_staging_uses_destdir] = false
69
- expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_true
70
- expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_false
69
+ expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_truthy
70
+ expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_falsey
71
71
  end
72
72
 
73
73
  it "returns a tempfile in the destdir when :file_deployment_uses_destdir is set" do
74
74
  Chef::Config[:file_staging_uses_destdir] = true
75
- expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_false
76
- expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_true
75
+ expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_falsey
76
+ expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_truthy
77
77
  end
78
78
 
79
79
  context "when creating a tempfiles in destdir fails" do
@@ -83,8 +83,8 @@ describe Chef::Provider::File::Content do
83
83
 
84
84
  it "returns a tempfile in the tempdir when :file_deployment_uses_destdir is set to :auto" do
85
85
  Chef::Config[:file_staging_uses_destdir] = :auto
86
- expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_true
87
- expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_false
86
+ expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_truthy
87
+ expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_falsey
88
88
  end
89
89
 
90
90
  it "fails when :file_desployment_uses_destdir is set" do
@@ -93,8 +93,8 @@ describe Chef::Provider::File::Content do
93
93
  end
94
94
 
95
95
  it "returns a tempfile in the tempdir when :file_desployment_uses_destdir is not set" do
96
- expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_true
97
- expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_false
96
+ expect(content.tempfile.path.start_with?(Dir::tmpdir)).to be_truthy
97
+ expect(canonicalize_path(content.tempfile.path).start_with?(enclosing_directory)).to be_falsey
98
98
  end
99
99
  end
100
100
 
@@ -22,6 +22,7 @@ describe Chef::Provider::Git do
22
22
 
23
23
  before(:each) do
24
24
  allow(STDOUT).to receive(:tty?).and_return(true)
25
+ @original_log_level = Chef::Log.level
25
26
  Chef::Log.level = :info
26
27
 
27
28
  @current_resource = Chef::Resource::Git.new("web2.0 app")
@@ -38,6 +39,10 @@ describe Chef::Provider::Git do
38
39
  @provider.current_resource = @current_resource
39
40
  end
40
41
 
42
+ after(:each) do
43
+ Chef::Log.level = @original_log_level
44
+ end
45
+
41
46
  context "determining the revision of the currently deployed checkout" do
42
47
 
43
48
  before do
@@ -621,21 +626,21 @@ SHAS
621
626
  describe "when check remote command returns with status 2" do
622
627
  it "returns true" do
623
628
  allow(@command_response).to receive(:exitstatus) { 2 }
624
- expect(@provider.multiple_remotes?(@command_response)).to be_true
629
+ expect(@provider.multiple_remotes?(@command_response)).to be_truthy
625
630
  end
626
631
  end
627
632
 
628
633
  describe "when check remote command returns with status 0" do
629
634
  it "returns false" do
630
635
  allow(@command_response).to receive(:exitstatus) { 0 }
631
- expect(@provider.multiple_remotes?(@command_response)).to be_false
636
+ expect(@provider.multiple_remotes?(@command_response)).to be_falsey
632
637
  end
633
638
  end
634
639
 
635
640
  describe "when check remote command returns with status 0" do
636
641
  it "returns false" do
637
642
  allow(@command_response).to receive(:exitstatus) { 1 }
638
- expect(@provider.multiple_remotes?(@command_response)).to be_false
643
+ expect(@provider.multiple_remotes?(@command_response)).to be_falsey
639
644
  end
640
645
  end
641
646
  end
@@ -649,7 +654,7 @@ SHAS
649
654
  it "returns true" do
650
655
  allow(@command_response).to receive(:exitstatus) { 0 }
651
656
  allow(@command_response).to receive(:stdout) { @resource.repository }
652
- expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_true
657
+ expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_truthy
653
658
  end
654
659
  end
655
660
 
@@ -657,7 +662,7 @@ SHAS
657
662
  it "returns false" do
658
663
  allow(@command_response).to receive(:exitstatus) { 0 }
659
664
  allow(@command_response).to receive(:stdout) { @resource.repository + "test" }
660
- expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_false
665
+ expect(@provider.remote_matches?(@resource.repository, @command_response)).to be_falsey
661
666
  end
662
667
  end
663
668
  end