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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -28,33 +28,33 @@ describe Chef::Util::Backup do
28
28
 
29
29
  before(:each) do
30
30
  @new_resource = double("new_resource")
31
- @new_resource.should_receive(:path).at_least(:once).and_return(tempfile.path)
31
+ expect(@new_resource).to receive(:path).at_least(:once).and_return(tempfile.path)
32
32
  @backup = Chef::Util::Backup.new(@new_resource)
33
33
  end
34
34
 
35
35
  it "should store the resource passed to new as new_resource" do
36
- @backup.new_resource.should eql(@new_resource)
36
+ expect(@backup.new_resource).to eql(@new_resource)
37
37
  end
38
38
 
39
39
  describe "for cases when we don't want to back anything up" do
40
40
 
41
41
  before(:each) do
42
- @backup.should_not_receive(:do_backup)
42
+ expect(@backup).not_to receive(:do_backup)
43
43
  end
44
44
 
45
45
  it "should not attempt to backup a file if :backup is false" do
46
- @new_resource.should_receive(:backup).at_least(:once).and_return(false)
46
+ expect(@new_resource).to receive(:backup).at_least(:once).and_return(false)
47
47
  @backup.backup!
48
48
  end
49
49
 
50
50
  it "should not attempt to backup a file if :backup == 0" do
51
- @new_resource.should_receive(:backup).at_least(:once).and_return(0)
51
+ expect(@new_resource).to receive(:backup).at_least(:once).and_return(0)
52
52
  @backup.backup!
53
53
  end
54
54
 
55
55
  it "should not attempt to backup a file if it does not exist" do
56
- @new_resource.should_receive(:backup).at_least(:once).and_return(1)
57
- File.should_receive(:exist?).with(tempfile.path).at_least(:once).and_return(false)
56
+ expect(@new_resource).to receive(:backup).at_least(:once).and_return(1)
57
+ expect(File).to receive(:exist?).with(tempfile.path).at_least(:once).and_return(false)
58
58
  @backup.backup!
59
59
  end
60
60
 
@@ -62,43 +62,43 @@ describe Chef::Util::Backup do
62
62
 
63
63
  describe "for cases when we want to back things up" do
64
64
  before(:each) do
65
- @backup.should_receive(:do_backup)
65
+ expect(@backup).to receive(:do_backup)
66
66
  end
67
67
 
68
68
  describe "when the number of backups is specified as 1" do
69
69
  before(:each) do
70
- @new_resource.should_receive(:backup).at_least(:once).and_return(1)
70
+ expect(@new_resource).to receive(:backup).at_least(:once).and_return(1)
71
71
  end
72
72
 
73
73
  it "should not delete anything if this is the only backup" do
74
- @backup.should_receive(:sorted_backup_files).and_return(['a'])
75
- @backup.should_not_receive(:delete_backup)
74
+ expect(@backup).to receive(:sorted_backup_files).and_return(['a'])
75
+ expect(@backup).not_to receive(:delete_backup)
76
76
  @backup.backup!
77
77
  end
78
78
 
79
79
  it "should keep only 1 backup copy" do
80
- @backup.should_receive(:sorted_backup_files).and_return(['a', 'b', 'c'])
81
- @backup.should_receive(:delete_backup).with('b')
82
- @backup.should_receive(:delete_backup).with('c')
80
+ expect(@backup).to receive(:sorted_backup_files).and_return(['a', 'b', 'c'])
81
+ expect(@backup).to receive(:delete_backup).with('b')
82
+ expect(@backup).to receive(:delete_backup).with('c')
83
83
  @backup.backup!
84
84
  end
85
85
  end
86
86
 
87
87
  describe "when the number of backups is specified as 2" do
88
88
  before(:each) do
89
- @new_resource.should_receive(:backup).at_least(:once).and_return(2)
89
+ expect(@new_resource).to receive(:backup).at_least(:once).and_return(2)
90
90
  end
91
91
 
92
92
  it "should not delete anything if we only have one other backup" do
93
- @backup.should_receive(:sorted_backup_files).and_return(['a', 'b'])
94
- @backup.should_not_receive(:delete_backup)
93
+ expect(@backup).to receive(:sorted_backup_files).and_return(['a', 'b'])
94
+ expect(@backup).not_to receive(:delete_backup)
95
95
  @backup.backup!
96
96
  end
97
97
 
98
98
  it "should keep only 2 backup copies" do
99
- @backup.should_receive(:sorted_backup_files).and_return(['a', 'b', 'c', 'd'])
100
- @backup.should_receive(:delete_backup).with('c')
101
- @backup.should_receive(:delete_backup).with('d')
99
+ expect(@backup).to receive(:sorted_backup_files).and_return(['a', 'b', 'c', 'd'])
100
+ expect(@backup).to receive(:delete_backup).with('c')
101
+ expect(@backup).to receive(:delete_backup).with('d')
102
102
  @backup.backup!
103
103
  end
104
104
  end
@@ -106,36 +106,36 @@ describe Chef::Util::Backup do
106
106
 
107
107
  describe "backup_filename" do
108
108
  it "should return a timestamped path" do
109
- @backup.should_receive(:path).and_return('/a/b/c.txt')
110
- @backup.send(:backup_filename).should =~ %r|^/a/b/c.txt.chef-\d{14}.\d{6}$|
109
+ expect(@backup).to receive(:path).and_return('/a/b/c.txt')
110
+ expect(@backup.send(:backup_filename)).to match(%r|^/a/b/c.txt.chef-\d{14}.\d{6}$|)
111
111
  end
112
112
  it "should strip the drive letter off for windows" do
113
- @backup.should_receive(:path).and_return('c:\a\b\c.txt')
114
- @backup.send(:backup_filename).should =~ %r|^\\a\\b\\c.txt.chef-\d{14}.\d{6}$|
113
+ expect(@backup).to receive(:path).and_return('c:\a\b\c.txt')
114
+ expect(@backup.send(:backup_filename)).to match(%r|^\\a\\b\\c.txt.chef-\d{14}.\d{6}$|)
115
115
  end
116
116
  it "should strip the drive letter off for windows (with forwardslashes)" do
117
- @backup.should_receive(:path).and_return('c:/a/b/c.txt')
118
- @backup.send(:backup_filename).should =~ %r|^/a/b/c.txt.chef-\d{14}.\d{6}$|
117
+ expect(@backup).to receive(:path).and_return('c:/a/b/c.txt')
118
+ expect(@backup.send(:backup_filename)).to match(%r|^/a/b/c.txt.chef-\d{14}.\d{6}$|)
119
119
  end
120
120
  end
121
121
 
122
122
  describe "backup_path" do
123
123
  it "uses the file's directory when Chef::Config[:file_backup_path] is nil" do
124
- @backup.should_receive(:path).and_return('/a/b/c.txt')
124
+ expect(@backup).to receive(:path).and_return('/a/b/c.txt')
125
125
  Chef::Config[:file_backup_path] = nil
126
- @backup.send(:backup_path).should =~ %r|^/a/b/c.txt.chef-\d{14}.\d{6}$|
126
+ expect(@backup.send(:backup_path)).to match(%r|^/a/b/c.txt.chef-\d{14}.\d{6}$|)
127
127
  end
128
128
 
129
129
  it "uses the configured Chef::Config[:file_backup_path]" do
130
- @backup.should_receive(:path).and_return('/a/b/c.txt')
130
+ expect(@backup).to receive(:path).and_return('/a/b/c.txt')
131
131
  Chef::Config[:file_backup_path] = '/backupdir'
132
- @backup.send(:backup_path).should =~ %r|^/backupdir[\\/]+a/b/c.txt.chef-\d{14}.\d{6}$|
132
+ expect(@backup.send(:backup_path)).to match(%r|^/backupdir[\\/]+a/b/c.txt.chef-\d{14}.\d{6}$|)
133
133
  end
134
134
 
135
135
  it "uses the configured Chef::Config[:file_backup_path] and strips the drive on windows" do
136
- @backup.should_receive(:path).and_return('c:\\a\\b\\c.txt')
136
+ expect(@backup).to receive(:path).and_return('c:\\a\\b\\c.txt')
137
137
  Chef::Config[:file_backup_path] = 'c:\backupdir'
138
- @backup.send(:backup_path).should =~ %r|^c:\\backupdir[\\/]+a\\b\\c.txt.chef-\d{14}.\d{6}$|
138
+ expect(@backup.send(:backup_path)).to match(%r|^c:\\backupdir[\\/]+a\\b\\c.txt.chef-\d{14}.\d{6}$|)
139
139
  end
140
140
  end
141
141
 
@@ -105,7 +105,7 @@ shared_examples_for "a diff util" do
105
105
  end
106
106
  end
107
107
 
108
- describe "when the default external encoding is UTF-8", :ruby_gte_19_only do
108
+ describe "when the default external encoding is UTF-8" do
109
109
 
110
110
  before do
111
111
  @saved_default_external = Encoding.default_external
@@ -122,7 +122,7 @@ shared_examples_for "a diff util" do
122
122
  new_tempfile.close
123
123
  end
124
124
  it "calling for_output should return a valid diff" do
125
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
125
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
126
126
  end
127
127
  it "calling for_reporting should return a utf-8 string" do
128
128
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -135,7 +135,7 @@ shared_examples_for "a diff util" do
135
135
  new_tempfile.close
136
136
  end
137
137
  it "calling for_output should return a valid diff" do
138
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
138
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
139
139
  end
140
140
  it "calling for_reporting should return a utf-8 string" do
141
141
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -170,7 +170,7 @@ shared_examples_for "a diff util" do
170
170
 
171
171
  end
172
172
 
173
- describe "when the default external encoding is Latin-1", :ruby_gte_19_only do
173
+ describe "when the default external encoding is Latin-1" do
174
174
 
175
175
  before do
176
176
  @saved_default_external = Encoding.default_external
@@ -187,7 +187,7 @@ shared_examples_for "a diff util" do
187
187
  new_tempfile.close
188
188
  end
189
189
  it "calling for_output should return a valid diff" do
190
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
190
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
191
191
  end
192
192
  it "calling for_reporting should return a utf-8 string" do
193
193
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -213,7 +213,7 @@ shared_examples_for "a diff util" do
213
213
  new_tempfile.close
214
214
  end
215
215
  it "calling for_output should return a valid diff" do
216
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
216
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
217
217
  end
218
218
  it "calling for_reporting should return a utf-8 string" do
219
219
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -234,7 +234,7 @@ shared_examples_for "a diff util" do
234
234
  end
235
235
 
236
236
  end
237
- describe "when the default external encoding is Shift_JIS", :ruby_gte_19_only do
237
+ describe "when the default external encoding is Shift_JIS" do
238
238
 
239
239
  before do
240
240
  @saved_default_external = Encoding.default_external
@@ -251,7 +251,7 @@ shared_examples_for "a diff util" do
251
251
  new_tempfile.close
252
252
  end
253
253
  it "calling for_output should return a valid diff" do
254
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
254
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
255
255
  end
256
256
  it "calling for_reporting should return a utf-8 string" do
257
257
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -290,7 +290,7 @@ shared_examples_for "a diff util" do
290
290
  new_tempfile.close
291
291
  end
292
292
  it "calling for_output should return a valid diff" do
293
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
293
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
294
294
  end
295
295
  it "calling for_reporting should return a utf-8 string" do
296
296
  expect(differ.for_reporting.encoding).to equal(Encoding::UTF_8)
@@ -349,12 +349,12 @@ shared_examples_for "a diff util" do
349
349
  end
350
350
 
351
351
  it "calling for_output should return a unified diff" do
352
- differ.for_output.size.should eql(5)
353
- differ.for_output.join("\\n").should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
352
+ expect(differ.for_output.size).to eql(5)
353
+ expect(differ.for_output.join("\\n")).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
354
354
  end
355
355
 
356
356
  it "calling for_reporting should return a unified diff" do
357
- differ.for_reporting.should match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
357
+ expect(differ.for_reporting).to match(/\A--- .*\\n\+\+\+ .*\\n@@/m)
358
358
  end
359
359
 
360
360
  describe "when the diff output is too long" do
@@ -383,7 +383,7 @@ shared_examples_for "a diff util" do
383
383
  it "should identify zero-length files as text" do
384
384
  Tempfile.open("chef-util-diff-spec") do |file|
385
385
  file.close
386
- differ.send(:is_binary?, file.path).should be_false
386
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
387
387
  end
388
388
  end
389
389
 
@@ -391,7 +391,7 @@ shared_examples_for "a diff util" do
391
391
  Tempfile.open("chef-util-diff-spec") do |file|
392
392
  file.write(plain_ascii)
393
393
  file.close
394
- differ.send(:is_binary?, file.path).should be_false
394
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
395
395
  end
396
396
  end
397
397
 
@@ -399,7 +399,7 @@ shared_examples_for "a diff util" do
399
399
  Tempfile.open("chef-util-diff-spec") do |file|
400
400
  file.write("This is a binary file.\0")
401
401
  file.close
402
- differ.send(:is_binary?, file.path).should be_true
402
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
403
403
  end
404
404
  end
405
405
 
@@ -407,11 +407,11 @@ shared_examples_for "a diff util" do
407
407
  Tempfile.open("chef-util-diff-spec") do |file|
408
408
  file.write("This is a binary file.\nNo Really\nit is\0")
409
409
  file.close
410
- differ.send(:is_binary?, file.path).should be_true
410
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
411
411
  end
412
412
  end
413
413
 
414
- describe "when the default external encoding is UTF-8", :ruby_gte_19_only do
414
+ describe "when the default external encoding is UTF-8" do
415
415
 
416
416
  before do
417
417
  @saved_default_external = Encoding.default_external
@@ -426,7 +426,7 @@ shared_examples_for "a diff util" do
426
426
  Tempfile.open("chef-util-diff-spec") do |file|
427
427
  file.write(plain_ascii)
428
428
  file.close
429
- differ.send(:is_binary?, file.path).should be_false
429
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
430
430
  end
431
431
  end
432
432
 
@@ -434,7 +434,7 @@ shared_examples_for "a diff util" do
434
434
  Tempfile.open("chef-util-diff-spec") do |file|
435
435
  file.write(utf_8)
436
436
  file.close
437
- differ.send(:is_binary?, file.path).should be_false
437
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
438
438
  end
439
439
  end
440
440
 
@@ -442,7 +442,7 @@ shared_examples_for "a diff util" do
442
442
  Tempfile.open("chef-util-diff-spec") do |file|
443
443
  file.write(latin_1)
444
444
  file.close
445
- differ.send(:is_binary?, file.path).should be_true
445
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
446
446
  end
447
447
  end
448
448
 
@@ -450,13 +450,13 @@ shared_examples_for "a diff util" do
450
450
  Tempfile.open("chef-util-diff-spec") do |file|
451
451
  file.write(shift_jis)
452
452
  file.close
453
- differ.send(:is_binary?, file.path).should be_true
453
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
454
454
  end
455
455
  end
456
456
 
457
457
  end
458
458
 
459
- describe "when the default external encoding is Latin-1", :ruby_gte_19_only do
459
+ describe "when the default external encoding is Latin-1" do
460
460
 
461
461
  before do
462
462
  @saved_default_external = Encoding.default_external
@@ -471,7 +471,7 @@ shared_examples_for "a diff util" do
471
471
  Tempfile.open("chef-util-diff-spec") do |file|
472
472
  file.write(plain_ascii)
473
473
  file.close
474
- differ.send(:is_binary?, file.path).should be_false
474
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
475
475
  end
476
476
  end
477
477
 
@@ -479,7 +479,7 @@ shared_examples_for "a diff util" do
479
479
  Tempfile.open("chef-util-diff-spec") do |file|
480
480
  file.write(utf_8)
481
481
  file.close
482
- differ.send(:is_binary?, file.path).should be_true
482
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
483
483
  end
484
484
  end
485
485
 
@@ -487,7 +487,7 @@ shared_examples_for "a diff util" do
487
487
  Tempfile.open("chef-util-diff-spec") do |file|
488
488
  file.write(latin_1)
489
489
  file.close
490
- differ.send(:is_binary?, file.path).should be_false
490
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
491
491
  end
492
492
  end
493
493
 
@@ -495,12 +495,12 @@ shared_examples_for "a diff util" do
495
495
  Tempfile.open("chef-util-diff-spec") do |file|
496
496
  file.write(shift_jis)
497
497
  file.close
498
- differ.send(:is_binary?, file.path).should be_true
498
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
499
499
  end
500
500
  end
501
501
  end
502
502
 
503
- describe "when the default external encoding is Shift-JIS", :ruby_gte_19_only do
503
+ describe "when the default external encoding is Shift-JIS" do
504
504
 
505
505
  before do
506
506
  @saved_default_external = Encoding.default_external
@@ -515,14 +515,14 @@ shared_examples_for "a diff util" do
515
515
  Tempfile.open("chef-util-diff-spec") do |file|
516
516
  file.write(plain_ascii)
517
517
  file.close
518
- differ.send(:is_binary?, file.path).should be_false
518
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
519
519
  end
520
520
  end
521
521
  it "should identify UTF-8 that is invalid Shift-JIS as binary" do
522
522
  Tempfile.open("chef-util-diff-spec") do |file|
523
523
  file.write(utf_8)
524
524
  file.close
525
- differ.send(:is_binary?, file.path).should be_true
525
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
526
526
  end
527
527
  end
528
528
 
@@ -530,7 +530,7 @@ shared_examples_for "a diff util" do
530
530
  Tempfile.open("chef-util-diff-spec") do |file|
531
531
  file.write(latin_1)
532
532
  file.close
533
- differ.send(:is_binary?, file.path).should be_true
533
+ expect(differ.send(:is_binary?, file.path)).to be_truthy
534
534
  end
535
535
  end
536
536
 
@@ -538,7 +538,7 @@ shared_examples_for "a diff util" do
538
538
  Tempfile.open("chef-util-diff-spec") do |file|
539
539
  file.write(shift_jis)
540
540
  file.close
541
- differ.send(:is_binary?, file.path).should be_false
541
+ expect(differ.send(:is_binary?, file.path)).to be_falsey
542
542
  end
543
543
  end
544
544
 
@@ -51,9 +51,9 @@ describe Chef::Util::DSC::ConfigurationGenerator do
51
51
  context 'when strings are used as switches' do
52
52
  it 'should merge the hash if there are no restricted switches' do
53
53
  merged = conf_man.send(:get_merged_configuration_flags!, {'flag' => 'a'}, 'hello')
54
- merged.should include(:flag)
55
- merged[:flag].should eql('a')
56
- merged.should include(:outputpath)
54
+ expect(merged).to include(:flag)
55
+ expect(merged[:flag]).to eql('a')
56
+ expect(merged).to include(:outputpath)
57
57
  end
58
58
 
59
59
  it 'should raise an ArgumentError if you try to override outputpath' do
@@ -70,16 +70,16 @@ describe Chef::Util::DSC::ConfigurationGenerator do
70
70
 
71
71
  it 'should be case insensitive to switches that are allowed' do
72
72
  merged = conf_man.send(:get_merged_configuration_flags!, {'FLAG' => 'a'}, 'hello')
73
- merged.should include(:flag)
73
+ expect(merged).to include(:flag)
74
74
  end
75
75
  end
76
76
 
77
77
  context 'when symbols are used as switches' do
78
78
  it 'should merge the hash if there are no restricted switches' do
79
79
  merged = conf_man.send(:get_merged_configuration_flags!, {:flag => 'a'}, 'hello')
80
- merged.should include(:flag)
81
- merged[:flag].should eql('a')
82
- merged.should include(:outputpath)
80
+ expect(merged).to include(:flag)
81
+ expect(merged[:flag]).to eql('a')
82
+ expect(merged).to include(:outputpath)
83
83
  end
84
84
 
85
85
  it 'should raise an ArgumentError if you try to override outputpath' do
@@ -96,21 +96,21 @@ describe Chef::Util::DSC::ConfigurationGenerator do
96
96
 
97
97
  it 'should be case insensitive to switches that are allowed' do
98
98
  merged = conf_man.send(:get_merged_configuration_flags!, {:FLAG => 'a'}, 'hello')
99
- merged.should include(:flag)
99
+ expect(merged).to include(:flag)
100
100
  end
101
101
  end
102
102
 
103
103
  context 'when there are no flags' do
104
104
  it 'should supply an output path if configuration_flags is an empty hash' do
105
105
  merged = conf_man.send(:get_merged_configuration_flags!, {}, 'hello')
106
- merged.should include(:outputpath)
107
- merged.length.should eql(1)
106
+ expect(merged).to include(:outputpath)
107
+ expect(merged.length).to eql(1)
108
108
  end
109
109
 
110
110
  it 'should supply an output path if configuration_flags is an empty hash' do
111
111
  merged = conf_man.send(:get_merged_configuration_flags!, nil, 'hello')
112
- merged.should include(:outputpath)
113
- merged.length.should eql(1)
112
+ expect(merged).to include(:outputpath)
113
+ expect(merged.length).to eql(1)
114
114
  end
115
115
  end
116
116
 
@@ -130,14 +130,14 @@ describe Chef::Util::DSC::ConfigurationGenerator do
130
130
  [a,b].join("++")
131
131
  end
132
132
  allow(file_like_object).to receive(:write)
133
- conf_man.send(:write_document_generation_script, 'file', 'hello')
133
+ conf_man.send(:write_document_generation_script, 'file', 'hello', {})
134
134
  expect(file_like_object).to have_received(:write)
135
135
  end
136
136
  end
137
137
 
138
138
  describe "#find_configuration_document" do
139
139
  it "should find the mof file" do
140
- # These tests seem way too implementation specific. Unfortunatly, File and Dir
140
+ # These tests seem way too implementation specific. Unfortunately, File and Dir
141
141
  # need to be mocked because they are OS specific
142
142
  allow(File).to receive(:join) do |a, b|
143
143
  [a,b].join("++")
@@ -158,14 +158,36 @@ describe Chef::Util::DSC::ConfigurationGenerator do
158
158
 
159
159
  describe "#configuration_code" do
160
160
  it "should build dsc" do
161
- dsc = conf_man.send(:configuration_code, 'archive{}', 'hello')
161
+ dsc = conf_man.send(:configuration_code, 'archive{}', 'hello', {})
162
162
  found_configuration = false
163
163
  dsc.split(';').each do |command|
164
164
  if command.downcase =~ /\s*configuration\s+'hello'\s*\{\s*node\s+'localhost'\s*\{\s*archive\s*\{\s*\}\s*\}\s*\}\s*/
165
165
  found_configuration = true
166
166
  end
167
167
  end
168
- expect(found_configuration).to be_true
168
+ expect(found_configuration).to be_truthy
169
+ end
170
+ context "with imports" do
171
+ it "should import all resources when a module has an empty list" do
172
+ dsc = conf_man.send(:configuration_code, 'archive{}', 'hello', {'FooModule' => []})
173
+ expect(dsc).to match(/Import-DscResource -ModuleName FooModule\s*\n/)
174
+ end
175
+
176
+ it "should import all resources when a module has a list with *" do
177
+ dsc = conf_man.send(:configuration_code, 'archive{}', 'hello', {'FooModule' => ['FooResource', '*', 'BarResource']})
178
+ expect(dsc).to match(/Import-DscResource -ModuleName FooModule\s*\n/)
179
+ end
180
+
181
+ it "should import specific resources when a module has list without * that is not empty" do
182
+ dsc = conf_man.send(:configuration_code, 'archive{}', 'hello', {'FooModule' => ['FooResource', 'BarResource']})
183
+ expect(dsc).to match(/Import-DscResource -ModuleName FooModule -Name FooResource,BarResource/)
184
+ end
185
+
186
+ it "should import multiple modules with multiple import statements" do
187
+ dsc = conf_man.send(:configuration_code, 'archive{}', 'hello', {'FooModule' => ['FooResource', 'BarResource'], 'BazModule' => []})
188
+ expect(dsc).to match(/Import-DscResource -ModuleName FooModule -Name FooResource,BarResource/)
189
+ expect(dsc).to match(/Import-DscResource -ModuleName BazModule\s*\n/)
190
+ end
169
191
  end
170
192
  end
171
193
  end