chef 16.1.0-universal-mingw32 → 16.3.38-universal-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 (424) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +4 -3
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/application.rb +12 -0
  10. data/lib/chef/application/apply.rb +2 -1
  11. data/lib/chef/application/base.rb +1 -1
  12. data/lib/chef/application/client.rb +1 -1
  13. data/lib/chef/application/windows_service_manager.rb +1 -1
  14. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  15. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  16. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  17. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  20. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  23. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +2 -2
  24. data/lib/chef/chef_fs/path_utils.rb +4 -4
  25. data/lib/chef/client.rb +3 -3
  26. data/lib/chef/cookbook/chefignore.rb +1 -1
  27. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  28. data/lib/chef/cookbook/metadata.rb +2 -2
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +16 -30
  32. data/lib/chef/cookbook_manifest.rb +1 -1
  33. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  34. data/lib/chef/cookbook_version.rb +4 -4
  35. data/lib/chef/data_bag.rb +5 -6
  36. data/lib/chef/data_collector.rb +1 -1
  37. data/lib/chef/data_collector/error_handlers.rb +1 -1
  38. data/lib/chef/decorator/lazy_array.rb +2 -2
  39. data/lib/chef/deprecated.rb +12 -0
  40. data/lib/chef/digester.rb +5 -4
  41. data/lib/chef/dsl/declare_resource.rb +1 -1
  42. data/lib/chef/dsl/platform_introspection.rb +2 -0
  43. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  44. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  45. data/lib/chef/environment.rb +1 -2
  46. data/lib/chef/exceptions.rb +3 -0
  47. data/lib/chef/file_access_control.rb +1 -1
  48. data/lib/chef/file_access_control/windows.rb +2 -2
  49. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  50. data/lib/chef/formatters/base.rb +1 -1
  51. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  52. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  53. data/lib/chef/http.rb +19 -4
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/decompressor.rb +1 -1
  56. data/lib/chef/http/http_request.rb +1 -1
  57. data/lib/chef/http/json_output.rb +1 -1
  58. data/lib/chef/http/ssl_policies.rb +18 -0
  59. data/lib/chef/json_compat.rb +1 -1
  60. data/lib/chef/key.rb +1 -1
  61. data/lib/chef/knife.rb +6 -6
  62. data/lib/chef/knife/bootstrap.rb +24 -24
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  65. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  66. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  67. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  68. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/config_get.rb +2 -1
  70. data/lib/chef/knife/config_list_profiles.rb +4 -1
  71. data/lib/chef/knife/config_use_profile.rb +15 -5
  72. data/lib/chef/knife/configure.rb +1 -1
  73. data/lib/chef/knife/cookbook_delete.rb +1 -1
  74. data/lib/chef/knife/cookbook_upload.rb +6 -14
  75. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  76. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  77. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  78. data/lib/chef/knife/core/hashed_command_loader.rb +2 -1
  79. data/lib/chef/knife/core/node_presenter.rb +1 -1
  80. data/lib/chef/knife/core/status_presenter.rb +1 -1
  81. data/lib/chef/knife/core/subcommand_loader.rb +21 -2
  82. data/lib/chef/knife/core/ui.rb +8 -2
  83. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -4
  84. data/lib/chef/knife/data_bag_create.rb +1 -1
  85. data/lib/chef/knife/key_create_base.rb +1 -1
  86. data/lib/chef/knife/key_edit_base.rb +1 -1
  87. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  88. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  89. data/lib/chef/knife/rehash.rb +3 -21
  90. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  91. data/lib/chef/knife/ssh.rb +7 -3
  92. data/lib/chef/knife/supermarket_share.rb +1 -1
  93. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  94. data/lib/chef/log.rb +8 -3
  95. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  96. data/lib/chef/mixin/checksum.rb +0 -1
  97. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  98. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  99. data/lib/chef/mixin/openssl_helper.rb +31 -9
  100. data/lib/chef/mixin/path_sanity.rb +5 -4
  101. data/lib/chef/mixin/properties.rb +2 -2
  102. data/lib/chef/mixin/securable.rb +2 -2
  103. data/lib/chef/mixin/shell_out.rb +4 -188
  104. data/lib/chef/mixin/template.rb +1 -0
  105. data/lib/chef/mixin/which.rb +6 -3
  106. data/lib/chef/mixins.rb +1 -0
  107. data/lib/chef/node.rb +36 -12
  108. data/lib/chef/node/attribute.rb +2 -2
  109. data/lib/chef/node/immutable_collections.rb +1 -1
  110. data/lib/chef/node_map.rb +21 -18
  111. data/lib/chef/platform/service_helpers.rb +31 -28
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +1 -1
  114. data/lib/chef/property.rb +2 -2
  115. data/lib/chef/provider.rb +3 -3
  116. data/lib/chef/provider/batch.rb +3 -10
  117. data/lib/chef/provider/cron.rb +2 -14
  118. data/lib/chef/provider/directory.rb +1 -1
  119. data/lib/chef/provider/execute.rb +2 -1
  120. data/lib/chef/provider/file.rb +1 -1
  121. data/lib/chef/provider/git.rb +12 -4
  122. data/lib/chef/provider/group/dscl.rb +2 -2
  123. data/lib/chef/provider/group/windows.rb +1 -1
  124. data/lib/chef/provider/ifconfig.rb +7 -7
  125. data/lib/chef/provider/mount/aix.rb +1 -1
  126. data/lib/chef/provider/mount/solaris.rb +0 -1
  127. data/lib/chef/provider/mount/windows.rb +2 -2
  128. data/lib/chef/provider/noop.rb +1 -1
  129. data/lib/chef/provider/package/chocolatey.rb +1 -1
  130. data/lib/chef/provider/package/dpkg.rb +1 -1
  131. data/lib/chef/provider/package/openbsd.rb +1 -1
  132. data/lib/chef/provider/package/portage.rb +3 -2
  133. data/lib/chef/provider/package/powershell.rb +6 -2
  134. data/lib/chef/provider/package/rubygems.rb +3 -3
  135. data/lib/chef/provider/package/snap.rb +97 -29
  136. data/lib/chef/provider/package/windows.rb +11 -6
  137. data/lib/chef/provider/package/windows/msi.rb +3 -3
  138. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  139. data/lib/chef/provider/package/yum.rb +1 -1
  140. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  141. data/lib/chef/provider/package/zypper.rb +0 -1
  142. data/lib/chef/provider/powershell_script.rb +10 -14
  143. data/lib/chef/provider/remote_directory.rb +2 -2
  144. data/lib/chef/provider/remote_file/http.rb +4 -1
  145. data/lib/chef/provider/script.rb +4 -75
  146. data/lib/chef/provider/service.rb +2 -2
  147. data/lib/chef/provider/service/arch.rb +2 -2
  148. data/lib/chef/provider/service/debian.rb +2 -2
  149. data/lib/chef/provider/service/openbsd.rb +4 -4
  150. data/lib/chef/provider/service/redhat.rb +1 -1
  151. data/lib/chef/provider/service/upstart.rb +1 -1
  152. data/lib/chef/provider/service/windows.rb +1 -1
  153. data/lib/chef/provider/subversion.rb +2 -2
  154. data/lib/chef/provider/user/aix.rb +1 -1
  155. data/lib/chef/provider/user/dscl.rb +6 -6
  156. data/lib/chef/provider/user/linux.rb +3 -3
  157. data/lib/chef/provider/user/mac.rb +15 -11
  158. data/lib/chef/provider/windows_script.rb +87 -25
  159. data/lib/chef/provider/windows_task.rb +4 -2
  160. data/lib/chef/provider/yum_repository.rb +1 -1
  161. data/lib/chef/provider/zypper_repository.rb +31 -11
  162. data/lib/chef/resource.rb +27 -14
  163. data/lib/chef/resource/alternatives.rb +1 -1
  164. data/lib/chef/resource/apt_package.rb +1 -1
  165. data/lib/chef/resource/archive_file.rb +28 -8
  166. data/lib/chef/resource/bash.rb +0 -1
  167. data/lib/chef/resource/batch.rb +4 -2
  168. data/lib/chef/resource/build_essential.rb +2 -2
  169. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  170. data/lib/chef/resource/chef_gem.rb +57 -21
  171. data/lib/chef/resource/chef_handler.rb +2 -2
  172. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  173. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  174. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  175. data/lib/chef/resource/cron/cron.rb +46 -0
  176. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  177. data/lib/chef/resource/cron_access.rb +13 -5
  178. data/lib/chef/resource/csh.rb +0 -1
  179. data/lib/chef/resource/dmg_package.rb +2 -2
  180. data/lib/chef/resource/execute.rb +480 -10
  181. data/lib/chef/resource/file.rb +10 -8
  182. data/lib/chef/resource/freebsd_package.rb +1 -1
  183. data/lib/chef/resource/gem_package.rb +35 -2
  184. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  185. data/lib/chef/resource/homebrew_package.rb +30 -1
  186. data/lib/chef/resource/homebrew_update.rb +107 -0
  187. data/lib/chef/resource/hostname.rb +7 -20
  188. data/lib/chef/resource/kernel_module.rb +14 -1
  189. data/lib/chef/resource/launchd.rb +1 -1
  190. data/lib/chef/resource/locale.rb +3 -3
  191. data/lib/chef/resource/lwrp_base.rb +1 -0
  192. data/lib/chef/resource/macos_userdefaults.rb +176 -56
  193. data/lib/chef/resource/mount.rb +1 -1
  194. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  195. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  196. data/lib/chef/resource/perl.rb +0 -1
  197. data/lib/chef/resource/plist.rb +23 -4
  198. data/lib/chef/resource/powershell_script.rb +4 -2
  199. data/lib/chef/resource/python.rb +0 -1
  200. data/lib/chef/resource/remote_file.rb +26 -10
  201. data/lib/chef/resource/ruby.rb +0 -1
  202. data/lib/chef/resource/scm/git.rb +1 -1
  203. data/lib/chef/resource/service.rb +2 -2
  204. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  205. data/lib/chef/resource/sudo.rb +30 -3
  206. data/lib/chef/resource/swap_file.rb +17 -0
  207. data/lib/chef/resource/template.rb +1 -1
  208. data/lib/chef/resource/timezone.rb +15 -0
  209. data/lib/chef/resource/user_ulimit.rb +1 -1
  210. data/lib/chef/resource/windows_ad_join.rb +30 -1
  211. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  212. data/lib/chef/resource/windows_auto_run.rb +11 -0
  213. data/lib/chef/resource/windows_certificate.rb +27 -1
  214. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  215. data/lib/chef/resource/windows_dns_record.rb +17 -0
  216. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  217. data/lib/chef/resource/windows_font.rb +3 -3
  218. data/lib/chef/resource/windows_package.rb +1 -1
  219. data/lib/chef/resource/windows_pagefile.rb +2 -2
  220. data/lib/chef/resource/windows_script.rb +2 -16
  221. data/lib/chef/resource/windows_security_policy.rb +67 -36
  222. data/lib/chef/resource/windows_shortcut.rb +1 -2
  223. data/lib/chef/resource/windows_task.rb +10 -10
  224. data/lib/chef/resource/windows_user_privilege.rb +33 -10
  225. data/lib/chef/resource/yum_repository.rb +9 -9
  226. data/lib/chef/resource_inspector.rb +11 -4
  227. data/lib/chef/resources.rb +5 -2
  228. data/lib/chef/role.rb +1 -2
  229. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  230. data/lib/chef/search/query.rb +1 -1
  231. data/lib/chef/shell/ext.rb +1 -1
  232. data/lib/chef/shell/shell_session.rb +2 -0
  233. data/lib/chef/util/diff.rb +2 -3
  234. data/lib/chef/util/windows/net_user.rb +1 -1
  235. data/lib/chef/util/windows/volume.rb +1 -1
  236. data/lib/chef/version.rb +2 -2
  237. data/lib/chef/win32/api.rb +2 -2
  238. data/lib/chef/win32/api/error.rb +3 -1
  239. data/lib/chef/win32/api/file.rb +1 -1
  240. data/lib/chef/win32/api/net.rb +1 -0
  241. data/lib/chef/win32/file.rb +1 -1
  242. data/lib/chef/win32/mutex.rb +1 -1
  243. data/lib/chef/win32/net.rb +1 -0
  244. data/lib/chef/win32/registry.rb +3 -4
  245. data/lib/chef/win32/security.rb +1 -1
  246. data/lib/chef/win32/security/sid.rb +4 -4
  247. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  248. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  249. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  250. data/spec/functional/knife/configure_spec.rb +1 -1
  251. data/spec/functional/knife/ssh_spec.rb +5 -16
  252. data/spec/functional/resource/aix_service_spec.rb +9 -2
  253. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  254. data/spec/functional/resource/apt_package_spec.rb +0 -1
  255. data/spec/functional/resource/bash_spec.rb +3 -2
  256. data/spec/functional/resource/bff_spec.rb +1 -1
  257. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  258. data/spec/functional/resource/cron_spec.rb +20 -2
  259. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  260. data/spec/functional/resource/execute_spec.rb +1 -1
  261. data/spec/functional/resource/git_spec.rb +29 -7
  262. data/spec/functional/resource/group_spec.rb +15 -3
  263. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  264. data/spec/functional/resource/insserv_spec.rb +3 -3
  265. data/spec/functional/resource/link_spec.rb +2 -5
  266. data/spec/functional/resource/mount_spec.rb +9 -1
  267. data/spec/functional/resource/msu_package_spec.rb +9 -3
  268. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  269. data/spec/functional/resource/remote_file_spec.rb +9 -15
  270. data/spec/functional/resource/rpm_spec.rb +1 -1
  271. data/spec/functional/resource/timezone_spec.rb +2 -0
  272. data/spec/functional/resource/windows_package_spec.rb +0 -1
  273. data/spec/functional/resource/windows_path_spec.rb +4 -0
  274. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  275. data/spec/functional/resource/windows_service_spec.rb +4 -0
  276. data/spec/functional/resource/windows_task_spec.rb +16 -15
  277. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  278. data/spec/functional/resource/yum_package_spec.rb +4 -1
  279. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  280. data/spec/functional/run_lock_spec.rb +2 -1
  281. data/spec/functional/shell_spec.rb +5 -6
  282. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  283. data/spec/functional/version_spec.rb +1 -1
  284. data/spec/functional/win32/crypto_spec.rb +1 -1
  285. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  286. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  287. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  288. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  289. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  290. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  291. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  292. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  293. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  294. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  295. data/spec/integration/recipes/notifies_spec.rb +1 -1
  296. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  297. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  298. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  299. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  300. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  301. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  302. data/spec/scripts/ssl-serve.rb +1 -1
  303. data/spec/spec_helper.rb +10 -4
  304. data/spec/support/chef_helpers.rb +2 -21
  305. data/spec/support/platform_helpers.rb +1 -3
  306. data/spec/support/platforms/win32/spec_service.rb +1 -1
  307. data/spec/support/shared/functional/execute_resource.rb +1 -1
  308. data/spec/support/shared/functional/file_resource.rb +0 -1
  309. data/spec/support/shared/functional/securable_resource.rb +1 -2
  310. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  311. data/spec/support/shared/functional/windows_script.rb +3 -3
  312. data/spec/support/shared/integration/knife_support.rb +2 -9
  313. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  314. data/spec/support/shared/unit/execute_resource.rb +1 -1
  315. data/spec/support/shared/unit/provider/file.rb +12 -8
  316. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  317. data/spec/unit/application/solo_spec.rb +4 -2
  318. data/spec/unit/application_spec.rb +11 -2
  319. data/spec/unit/chef_fs/config_spec.rb +2 -2
  320. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  321. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  322. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  323. data/spec/unit/client_spec.rb +4 -1
  324. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  325. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  326. data/spec/unit/data_bag_spec.rb +6 -3
  327. data/spec/unit/data_collector_spec.rb +1 -1
  328. data/spec/unit/decorator_spec.rb +23 -23
  329. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  330. data/spec/unit/environment_spec.rb +5 -1
  331. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  332. data/spec/unit/guard_interpreter_spec.rb +1 -1
  333. data/spec/unit/http/api_versions_spec.rb +1 -1
  334. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  335. data/spec/unit/json_compat_spec.rb +1 -1
  336. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  337. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  338. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  339. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  340. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  341. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  342. data/spec/unit/log/syslog_spec.rb +6 -10
  343. data/spec/unit/log/winevt_spec.rb +21 -13
  344. data/spec/unit/lwrp_spec.rb +9 -6
  345. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  346. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  347. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  348. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  349. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  350. data/spec/unit/mixin/securable_spec.rb +0 -1
  351. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  352. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  353. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  354. data/spec/unit/mixin/uris_spec.rb +1 -1
  355. data/spec/unit/mixin/user_context_spec.rb +1 -9
  356. data/spec/unit/mixin/which.rb +8 -0
  357. data/spec/unit/node/attribute_spec.rb +1 -1
  358. data/spec/unit/node_spec.rb +98 -11
  359. data/spec/unit/property_spec.rb +6 -6
  360. data/spec/unit/provider/batch_spec.rb +130 -0
  361. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  362. data/spec/unit/provider/cron_spec.rb +9 -49
  363. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  364. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  365. data/spec/unit/provider/execute_spec.rb +1 -8
  366. data/spec/unit/provider/git_spec.rb +3 -3
  367. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  368. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  369. data/spec/unit/provider/mdadm_spec.rb +1 -3
  370. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  371. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  372. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  373. data/spec/unit/provider/package/portage_spec.rb +2 -2
  374. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  375. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  376. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  377. data/spec/unit/provider/package/snap_spec.rb +1 -1
  378. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  379. data/spec/unit/provider/package/windows_spec.rb +30 -53
  380. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  381. data/spec/unit/provider/script_spec.rb +20 -110
  382. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  383. data/spec/unit/provider/service/windows_spec.rb +2 -6
  384. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  385. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  386. data/spec/unit/provider/windows_env_spec.rb +5 -4
  387. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  388. data/spec/unit/provider_spec.rb +1 -0
  389. data/spec/unit/resource/archive_file_spec.rb +11 -2
  390. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  391. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  392. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  393. data/spec/unit/resource/cron_spec.rb +2 -2
  394. data/spec/unit/resource/execute_spec.rb +10 -0
  395. data/spec/unit/resource/file/verification_spec.rb +2 -1
  396. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  397. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  398. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  399. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  400. data/spec/unit/resource/timezone_spec.rb +1 -1
  401. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  402. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  403. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  404. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  405. data/spec/unit/resource/windows_package_spec.rb +1 -0
  406. data/spec/unit/resource/windows_task_spec.rb +1 -1
  407. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  408. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  409. data/spec/unit/resource_reporter_spec.rb +1 -1
  410. data/spec/unit/resource_spec.rb +84 -1
  411. data/spec/unit/role_spec.rb +23 -21
  412. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  413. data/spec/unit/run_lock_spec.rb +1 -1
  414. data/spec/unit/scan_access_control_spec.rb +1 -1
  415. data/spec/unit/util/backup_spec.rb +1 -1
  416. data/spec/unit/util/diff_spec.rb +1 -15
  417. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  418. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  419. data/spec/unit/util/selinux_spec.rb +2 -1
  420. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  421. data/spec/unit/win32/registry_spec.rb +1 -1
  422. data/spec/unit/win32/security_spec.rb +4 -3
  423. metadata +68 -40
  424. data/lib/chef/resource/cron.rb +0 -157
@@ -22,7 +22,7 @@ describe "notifying_block" do
22
22
  include IntegrationSupport
23
23
  include Chef::Mixin::ShellOut
24
24
 
25
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
25
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
26
26
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
27
27
 
28
28
  when_the_repository "has a cookbook with partial resources" do
@@ -12,7 +12,7 @@ require "webrick/https"
12
12
 
13
13
  $ssl = true
14
14
 
15
- CHEF_SPEC_DATA = File.expand_path("../../data", __FILE__)
15
+ CHEF_SPEC_DATA = File.expand_path("../data", __dir__)
16
16
  cert_text = File.read(File.expand_path("ssl/chef-rspec.cert", CHEF_SPEC_DATA))
17
17
  cert = OpenSSL::X509::Certificate.new(cert_text)
18
18
  key_text = File.read(File.expand_path("ssl/chef-rspec.key", CHEF_SPEC_DATA))
@@ -24,10 +24,10 @@ module Shell
24
24
  IRB = nil unless defined? IRB
25
25
  end
26
26
 
27
- $LOAD_PATH.unshift File.expand_path("../..", __FILE__)
27
+ $LOAD_PATH.unshift File.expand_path("..", __dir__)
28
28
 
29
- $LOAD_PATH.unshift File.expand_path("../../chef-config/lib", __FILE__)
30
- $LOAD_PATH.unshift File.expand_path("../../chef-utils/lib", __FILE__)
29
+ $LOAD_PATH.unshift File.expand_path("../chef-config/lib", __dir__)
30
+ $LOAD_PATH.unshift File.expand_path("../chef-utils/lib", __dir__)
31
31
 
32
32
  require "rubygems"
33
33
  require "rspec/mocks"
@@ -116,6 +116,7 @@ RSpec.configure do |config|
116
116
  config.include(MockShellout::RSpec)
117
117
  config.filter_run focus: true
118
118
  config.filter_run_excluding external: true
119
+ config.raise_on_warning = true
119
120
 
120
121
  # Explicitly disable :should syntax
121
122
  # And set max_formatted_output_length to nil to prevent RSpec from doing truncation.
@@ -125,6 +126,7 @@ RSpec.configure do |config|
125
126
  end
126
127
  config.mock_with :rspec do |c|
127
128
  c.syntax = :expect
129
+ c.allow_message_expectations_on_nil = false
128
130
  end
129
131
 
130
132
  # Only run these tests on platforms that are also chef workstations
@@ -173,7 +175,6 @@ RSpec.configure do |config|
173
175
  config.filter_run_excluding requires_root: true unless root?
174
176
  config.filter_run_excluding requires_root_or_running_windows: true unless root? || windows?
175
177
  config.filter_run_excluding requires_unprivileged_user: true if root?
176
- config.filter_run_excluding uses_diff: true unless has_diff?
177
178
  config.filter_run_excluding openssl_gte_101: true unless openssl_gte_101?
178
179
  config.filter_run_excluding openssl_lt_101: true unless openssl_lt_101?
179
180
  config.filter_run_excluding aes_256_gcm_only: true unless aes_256_gcm?
@@ -239,6 +240,11 @@ RSpec.configure do |config|
239
240
 
240
241
  Chef::Config.reset
241
242
 
243
+ Chef::Log.setup!
244
+
245
+ Chef::Config[:log_level] = :fatal
246
+ Chef::Log.level(Chef::Config[:log_level])
247
+
242
248
  # By default, treat deprecation warnings as errors in tests.
243
249
  Chef::Config.treat_deprecation_warnings_as_errors(true)
244
250
 
@@ -18,16 +18,8 @@ CHEF_SPEC_DATA = File.expand_path(File.dirname(__FILE__) + "/../data/")
18
18
  CHEF_SPEC_ASSETS = File.expand_path(File.dirname(__FILE__) + "/../functional/assets/")
19
19
  CHEF_SPEC_BACKUP_PATH = File.join(Dir.tmpdir, "test-backup-path")
20
20
 
21
- Chef::Config[:log_level] = :fatal
22
- Chef::Config[:persistent_queue] = false
23
- Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
24
-
25
- Chef::Log.init(StringIO.new)
26
- Chef::Log.level(Chef::Config.log_level)
27
- Chef::Config.solo(false)
28
-
29
21
  def sha256_checksum(path)
30
- OpenSSL::Digest::SHA256.hexdigest(File.read(path))
22
+ OpenSSL::Digest.hexdigest("SHA256", File.read(path))
31
23
  end
32
24
 
33
25
  # extracted from Ruby < 2.5 to return a unique temp file name without creating it
@@ -48,22 +40,11 @@ def make_tmpname(prefix_suffix, n = nil)
48
40
  path << suffix
49
41
  end
50
42
 
51
- # NOTE:
52
- # This is a temporary fix to get tests passing on systems that have no `diff`
53
- # until we can replace shelling out to `diff` with ruby diff-lcs
54
- def has_diff?
55
- diff_cmd = Mixlib::ShellOut.new("diff -v")
56
- diff_cmd.run_command
57
- true
58
- rescue Errno::ENOENT
59
- false
60
- end
61
-
62
43
  # This is a helper to determine if the ruby in the PATH contains
63
44
  # win32/service gem. windows_service_manager tests create a windows
64
45
  # service that starts with the system ruby and requires this gem.
65
46
  def system_windows_service_gem?
66
- windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{DEV_NULL} 2>&1}
47
+ windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{File::NULL} 2>&1}
67
48
  if defined?(Bundler)
68
49
  Bundler.with_unbundled_env do
69
50
  # This returns true if the gem can be loaded
@@ -108,7 +108,7 @@ def mac_osx?
108
108
  if File.exists? "/usr/bin/sw_vers"
109
109
  result = ShellHelpers.shell_out("/usr/bin/sw_vers")
110
110
  result.stdout.each_line do |line|
111
- if line =~ /^ProductName:\sMac OS X.*$/
111
+ if /^ProductName:\sMac OS X.*$/.match?(line)
112
112
  return true
113
113
  end
114
114
  end
@@ -193,8 +193,6 @@ def supports_cloexec?
193
193
  Fcntl.const_defined?("F_SETFD") && Fcntl.const_defined?("FD_CLOEXEC")
194
194
  end
195
195
 
196
- DEV_NULL = windows? ? "NUL" : "/dev/null"
197
-
198
196
  def selinux_enabled?
199
197
  # This code is currently copied from lib/chef/util/selinux to make
200
198
  # specs independent of product.
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
19
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
20
20
  require "win32/daemon"
21
21
 
22
22
  class SpecService < ::Win32::Daemon
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
58
58
  include Chef::Mixin::ShellOut
59
59
 
60
60
  before do
61
- shell_out!("icacls \"#{script_output_dir.gsub(%r{/}, '\\')}\" /grant \"authenticated users:(F)\"")
61
+ shell_out!("icacls \"#{script_output_dir.tr("/", '\\')}\" /grant \"authenticated users:(F)\"")
62
62
  end
63
63
 
64
64
  after do
@@ -366,7 +366,6 @@ shared_examples_for "a configured file resource" do
366
366
  include_context "diff disabled"
367
367
 
368
368
  before do
369
- Chef::Log.level = :info
370
369
  Chef::Config[:ssl_verify_mode] = :verify_none
371
370
  end
372
371
 
@@ -19,7 +19,6 @@
19
19
  #
20
20
 
21
21
  require "etc"
22
- require "functional/resource/base"
23
22
 
24
23
  shared_context "setup correct permissions" do
25
24
  if windows?
@@ -135,7 +134,7 @@ shared_context "use Windows permissions", :windows_only do
135
134
  }
136
135
  end
137
136
 
138
- let (:write_flag) { 3 }
137
+ let(:write_flag) { 3 }
139
138
 
140
139
  RSpec::Matchers.define :have_expected_properties do |mask, type, flags|
141
140
  match do |ace|
@@ -1,5 +1,4 @@
1
1
 
2
- require "functional/resource/base"
3
2
 
4
3
  ALL_EXPANDED_PERMISSIONS = ["generic read",
5
4
  "generic write",
@@ -91,7 +91,7 @@ shared_context Chef::Resource::WindowsScript do
91
91
  end
92
92
 
93
93
  context "when the guard's architecture is specified as 64-bit" do
94
- let (:guard_architecture) { :x86_64 }
94
+ let(:guard_architecture) { :x86_64 }
95
95
  it "executes a 64-bit guard", :windows64_only do
96
96
  resource.only_if resource_guard_command, architecture: guard_architecture
97
97
  resource.run_action(:run)
@@ -100,7 +100,7 @@ shared_context Chef::Resource::WindowsScript do
100
100
  end
101
101
 
102
102
  context "when the guard's architecture is specified as 32-bit" do
103
- let (:guard_architecture) { :i386 }
103
+ let(:guard_architecture) { :i386 }
104
104
  it "executes a 32-bit guard" do
105
105
  resource.only_if resource_guard_command, architecture: guard_architecture
106
106
  resource.run_action(:run)
@@ -146,7 +146,7 @@ shared_context Chef::Resource::WindowsScript do
146
146
  shared_examples_for "a script whose file system location cannot be accessed by other non-admin users" do
147
147
  let(:ruby_access_command) { file_access_command }
148
148
  it "generates a script in the local file system that prevents read access to other non-admin users" do
149
- shell_out!(access_command, { user: windows_nonadmin_user, password: windows_nonadmin_user_password, returns: [access_denied_sentinel] })
149
+ shell_out!(access_command, user: windows_nonadmin_user, password: windows_nonadmin_user_password, returns: [access_denied_sentinel])
150
150
  end
151
151
  end
152
152
 
@@ -39,10 +39,7 @@ module KnifeSupport
39
39
 
40
40
  # Work on machines where we can't access /var
41
41
  Dir.mktmpdir("checksums") do |checksums_cache_dir|
42
- Chef::Config[:cache_options] = {
43
- path: checksums_cache_dir,
44
- skip_expires: true,
45
- }
42
+ Chef::Config[:syntax_check_cache_path] = checksums_cache_dir
46
43
 
47
44
  # This is Chef::Knife.run without load_commands--we'll load stuff
48
45
  # ourselves, thank you very much
@@ -55,8 +52,6 @@ module KnifeSupport
55
52
  STDIN
56
53
  end
57
54
 
58
- old_loggers = Chef::Log.loggers
59
- old_log_level = Chef::Log.level
60
55
  begin
61
56
  puts "knife: #{args.join(" ")}" if DEBUG
62
57
  subcommand_class = Chef::Knife.subcommand_class_from(args)
@@ -115,9 +110,7 @@ module KnifeSupport
115
110
  rescue SystemExit => e
116
111
  exit_code = e.status
117
112
  ensure
118
- Chef::Log.use_log_devices(old_loggers)
119
- Chef::Log.level = old_log_level
120
- Chef::Config.delete(:cache_options)
113
+ Chef::Config.delete(:syntax_check_cache_path)
121
114
  Chef::Config.delete(:concurrency)
122
115
  end
123
116
 
@@ -41,7 +41,6 @@ shared_examples_for "an application that loads a dot d" do
41
41
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_return("foo 0")
42
42
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_return("bar 0")
43
43
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_return("strings 0")
44
- allow(app).to receive(:apply_config).with(anything, Chef::Config.platform_specific_path("/etc/chef/client.rb")).and_call_original.ordered
45
44
  expect(app).to receive(:apply_config).with("foo 0", Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_call_original.ordered
46
45
  expect(app).to receive(:apply_config).with("bar 0", Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_call_original.ordered
47
46
  expect(app).to receive(:apply_config).with("strings 0", Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_call_original.ordered
@@ -75,7 +75,7 @@ shared_examples_for "an execute resource" do
75
75
  end
76
76
 
77
77
  it "the old path property (that never worked) is not supported in chef >= 13" do
78
- expect { @resource.path [ "woot" ] }.to raise_error
78
+ expect(@resource).not_to respond_to(:path)
79
79
  end
80
80
 
81
81
  it "should accept an integer for the return code" do
@@ -484,19 +484,23 @@ shared_examples_for Chef::Provider::File do
484
484
 
485
485
  it "raises an exception if any verification fails" do
486
486
  allow(File).to receive(:directory?).with("C:\\Windows\\system32/cmd.exe").and_return(false)
487
- provider.new_resource.verify windows? ? "REM" : "true"
488
- provider.new_resource.verify windows? ? "cmd.exe /c exit 1" : "false"
489
- msg = "Proposed content for #{provider.new_resource.path} failed verification #{windows? ? "cmd.exe /c exit 1" : "false"}"
490
- expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, /#{msg}/)
487
+ allow(provider).to receive(:tempfile).and_return(tempfile)
488
+ provider.new_resource.verify windows? ? "cmd.exe c exit 1" : "false"
489
+ provider.new_resource.verify.each do |v|
490
+ allow(v).to receive(:verify).and_return(false)
491
+ end
492
+ expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed)
491
493
  end
492
494
 
493
495
  it "does not show verification for sensitive resources" do
494
496
  allow(File).to receive(:directory?).with("C:\\Windows\\system32/cmd.exe").and_return(false)
495
- provider.new_resource.verify windows? ? "REM" : "true"
496
- provider.new_resource.verify windows? ? "cmd.exe /c exit 1" : "false"
497
+ allow(provider).to receive(:tempfile).and_return(tempfile)
497
498
  provider.new_resource.sensitive true
498
- msg = "Proposed content for #{provider.new_resource.path} failed verification [sensitive]\nTemporary file moved to #{backupfile}"
499
- expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, msg)
499
+ provider.new_resource.verify windows? ? "cmd.exe c exit 1" : "false"
500
+ provider.new_resource.verify.each do |v|
501
+ allow(v).to receive(:verify).and_return(false)
502
+ end
503
+ expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, /sensitive/)
500
504
  end
501
505
  end
502
506
  end
@@ -106,25 +106,25 @@ shared_examples_for "a useradd-based user provider" do |supported_useradd_option
106
106
 
107
107
  describe "when the resource has a different home directory and supports home directory management" do
108
108
  before do
109
- @new_resource.home "/wowaweea"
109
+ @new_resource.home "/banana"
110
110
  @new_resource.manage_home true
111
111
  end
112
112
 
113
113
  it "should set -m -d /homedir" do
114
- expect(provider.universal_options).to eq(%w{-d /wowaweea})
114
+ expect(provider.universal_options).to eq(%w{-d /banana})
115
115
  expect(provider.usermod_options).to eq(%w{-m})
116
116
  end
117
117
  end
118
118
 
119
119
  describe "when the resource has a different home directory and supports home directory management (using real attributes)" do
120
120
  before do
121
- @new_resource.home("/wowaweea")
121
+ @new_resource.home("/banana")
122
122
  @new_resource.manage_home true
123
123
  @new_resource.non_unique false
124
124
  end
125
125
 
126
126
  it "should set -m -d /homedir" do
127
- expect(provider.universal_options).to eq(%w{-d /wowaweea})
127
+ expect(provider.universal_options).to eq(%w{-d /banana})
128
128
  expect(provider.usermod_options).to eq(%w{-m})
129
129
  end
130
130
  end
@@ -164,6 +164,8 @@ describe Chef::Application::Solo do
164
164
  end
165
165
 
166
166
  context "in local mode" do
167
+ let(:root_path) { windows? ? "C:/var/chef" : "/var/chef" }
168
+
167
169
  before do
168
170
  Chef::Config[:solo_legacy_mode] = false
169
171
  end
@@ -197,10 +199,10 @@ describe Chef::Application::Solo do
197
199
  end
198
200
 
199
201
  it "sets the repo path" do
200
- expect(Chef::Config).to receive(:find_chef_repo_path).and_return("/var/chef")
202
+ expect(Chef::Config).to receive(:find_chef_repo_path).and_return(root_path)
201
203
  app.reconfigure
202
204
  expect(Chef::Config.key?(:chef_repo_path)).to be_truthy
203
- expect(Chef::Config[:chef_repo_path]).to eq ("/var/chef")
205
+ expect(Chef::Config[:chef_repo_path]).to eq (root_path)
204
206
  end
205
207
 
206
208
  it "runs chef-client in local mode" do
@@ -22,12 +22,10 @@ describe Chef::Application do
22
22
  before do
23
23
  @original_argv = ARGV.dup
24
24
  ARGV.clear
25
- Chef::Log.logger = Logger.new(StringIO.new)
26
25
  @app = Chef::Application.new
27
26
  allow(@app).to receive(:trap)
28
27
  allow(Dir).to receive(:chdir).and_return(0)
29
28
  allow(@app).to receive(:reconfigure)
30
- Chef::Log.init(STDERR)
31
29
  end
32
30
 
33
31
  after do
@@ -94,6 +92,13 @@ describe Chef::Application do
94
92
  end
95
93
  end
96
94
 
95
+ describe "when enforce_license is set to false" do
96
+ it "should not check the license acceptance" do
97
+ expect(@app).to_not receive(:check_license_acceptance)
98
+ @app.run(enforce_license: false)
99
+ end
100
+ end
101
+
97
102
  it "should run the actual application" do
98
103
  expect(@app).to receive(:run_application).and_return(true)
99
104
  @app.run
@@ -247,6 +252,10 @@ describe Chef::Application do
247
252
  end
248
253
 
249
254
  context "when log_level is not set" do
255
+ before do
256
+ Chef::Config.delete(:log_level)
257
+ end
258
+
250
259
  it_behaves_like "log_level_is_auto"
251
260
  end
252
261
 
@@ -203,8 +203,8 @@ describe Chef::ChefFS::Config do
203
203
  })
204
204
  end
205
205
 
206
- let (:path) { "/roles/foo.json" }
207
- let (:entry) { Entry.new(path) }
206
+ let(:path) { "/roles/foo.json" }
207
+ let(:entry) { Entry.new(path) }
208
208
 
209
209
  it "returns the entry's path if the cwd isn't in the config" do
210
210
  cfg = Chef::ChefFS::Config.new(config, "/my_repo/cookbooks")
@@ -20,17 +20,17 @@ require "spec_helper"
20
20
  require "chef/chef_fs/file_pattern"
21
21
  require "chef/chef_fs/command_line"
22
22
 
23
- # Removes the date stamp from the diff and replaces it with ' DATE'
24
- # example match: "/dev/null\t2012-10-16 16:15:54.000000000 +0000"
25
- # windows match: "--- /dev/null\tTue Oct 16 18:04:34 2012"
26
- def remove_os_differences(diff)
27
- diff = diff.gsub(/([+-]{3}.*)\t.*/, '\1 DATE')
28
- diff.gsub(/^@@ -\d(,\d)? \+\d(,\d)? @@/, "CONTEXT_LINE_NUMBERS")
29
- end
30
-
31
23
  describe "diff", uses_diff: true do
32
24
  include FileSystemSupport
33
25
 
26
+ # Removes the date stamp from the diff and replaces it with ' DATE'
27
+ # example match: "/dev/null\t2012-10-16 16:15:54.000000000 +0000"
28
+ # windows match: "--- /dev/null\tTue Oct 16 18:04:34 2012"
29
+ def remove_os_differences(diff)
30
+ diff = diff.gsub(/([+-]{3}.*)\t.*/, '\1 DATE')
31
+ diff.gsub(/^@@ -\d(,\d)? \+\d(,\d)? @@/, "CONTEXT_LINE_NUMBERS")
32
+ end
33
+
34
34
  context "with two filesystems with all types of difference" do
35
35
  let(:a) do
36
36
  memory_fs("a", {
@@ -25,11 +25,9 @@ describe Chef::ChefFS::FileSystem::OperationFailedError do
25
25
 
26
26
  context "has a cause attribute and HTTP result code is 400" do
27
27
  it "include error cause" do
28
- allow_message_expectations_on_nil
29
28
  response_body = '{"error":["Invalid key test in request body"]}'
30
- allow(@response).to receive(:code).and_return("400")
31
- allow(@response).to receive(:body).and_return(response_body)
32
- exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
29
+ response = double(:response, code: "400", body: response_body)
30
+ exception = Net::HTTPClientException.new("(exception) unauthorized", response)
33
31
  expect do
34
32
  raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
35
33
  end.to raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
@@ -405,7 +405,7 @@ describe Chef::ChefFS::Parallelizer do
405
405
  expect do
406
406
  b = enum.enum_for(:each)
407
407
  b.next
408
- end.to raise_error
408
+ end.to raise_error(RuntimeError, "each() called on parallel enumerable twice simultaneously! Bad mojo")
409
409
  end
410
410
  end
411
411
  end
@@ -749,9 +749,12 @@ describe Chef::Client do
749
749
 
750
750
  context "when any directory of cookbook_path contains no cookbook" do
751
751
  it "raises CookbookNotFound error" do
752
+ invalid_cookbook_path = windows? ? "C:/path/to/invalid/cookbook_path" : "/path/to/invalid/cookbook_path"
753
+ msg = "None of the cookbook paths set in Chef::Config[:cookbook_path], [\"#{invalid_cookbook_path}\"], contain any cookbooks"
754
+
752
755
  expect do
753
756
  client.send(:assert_cookbook_path_not_empty, nil)
754
- end.to raise_error(Chef::Exceptions::CookbookNotFound, 'None of the cookbook paths set in Chef::Config[:cookbook_path], ["/path/to/invalid/cookbook_path"], contain any cookbooks')
757
+ end.to raise_error(Chef::Exceptions::CookbookNotFound, msg)
755
758
  end
756
759
  end
757
760
  end