chef 16.2.73-universal-mingw32 → 16.4.41-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 (316) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +1 -1
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +2 -1
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +5 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  21. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  24. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  25. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  26. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  27. data/lib/chef/client.rb +14 -14
  28. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  29. data/lib/chef/cookbook/syntax_check.rb +1 -2
  30. data/lib/chef/cookbook_loader.rb +15 -29
  31. data/lib/chef/data_bag.rb +1 -2
  32. data/lib/chef/data_collector/run_end_message.rb +11 -1
  33. data/lib/chef/deprecated.rb +8 -0
  34. data/lib/chef/dsl/platform_introspection.rb +9 -7
  35. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  36. data/lib/chef/environment.rb +3 -4
  37. data/lib/chef/exceptions.rb +4 -1
  38. data/lib/chef/file_content_management/tempfile.rb +9 -9
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +11 -11
  41. data/lib/chef/http/authenticator.rb +3 -1
  42. data/lib/chef/json_compat.rb +1 -1
  43. data/lib/chef/knife.rb +4 -4
  44. data/lib/chef/knife/bootstrap.rb +6 -12
  45. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  46. data/lib/chef/knife/config_get.rb +1 -0
  47. data/lib/chef/knife/config_list_profiles.rb +4 -1
  48. data/lib/chef/knife/configure.rb +3 -1
  49. data/lib/chef/knife/cookbook_download.rb +1 -1
  50. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  51. data/lib/chef/knife/cookbook_upload.rb +28 -33
  52. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  53. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  54. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  55. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  56. data/lib/chef/knife/core/ui.rb +8 -2
  57. data/lib/chef/knife/core/windows_bootstrap_context.rb +32 -25
  58. data/lib/chef/knife/delete.rb +15 -15
  59. data/lib/chef/knife/exec.rb +2 -2
  60. data/lib/chef/knife/rehash.rb +3 -21
  61. data/lib/chef/knife/ssh.rb +11 -7
  62. data/lib/chef/knife/xargs.rb +19 -19
  63. data/lib/chef/knife/yaml_convert.rb +1 -1
  64. data/lib/chef/log.rb +7 -2
  65. data/lib/chef/mixin/checksum.rb +0 -1
  66. data/lib/chef/mixin/chef_utils_wiring.rb +40 -0
  67. data/lib/chef/mixin/deep_merge.rb +35 -6
  68. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  69. data/lib/chef/mixin/openssl_helper.rb +30 -6
  70. data/lib/chef/mixin/path_sanity.rb +5 -4
  71. data/lib/chef/mixin/shell_out.rb +4 -188
  72. data/lib/chef/mixin/template.rb +1 -0
  73. data/lib/chef/mixin/which.rb +6 -3
  74. data/lib/chef/mixins.rb +1 -0
  75. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  76. data/lib/chef/node.rb +36 -12
  77. data/lib/chef/node/attribute.rb +2 -4
  78. data/lib/chef/node_map.rb +21 -18
  79. data/lib/chef/platform/service_helpers.rb +31 -28
  80. data/lib/chef/property.rb +1 -1
  81. data/lib/chef/provider/cron/unix.rb +0 -2
  82. data/lib/chef/provider/git.rb +17 -9
  83. data/lib/chef/provider/group.rb +0 -2
  84. data/lib/chef/provider/group/suse.rb +5 -5
  85. data/lib/chef/provider/ifconfig.rb +1 -4
  86. data/lib/chef/provider/mount.rb +0 -2
  87. data/lib/chef/provider/mount/solaris.rb +0 -1
  88. data/lib/chef/provider/package.rb +0 -2
  89. data/lib/chef/provider/package/rubygems.rb +1 -1
  90. data/lib/chef/provider/package/snap.rb +3 -4
  91. data/lib/chef/provider/package/windows.rb +9 -4
  92. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  93. data/lib/chef/provider/package/zypper.rb +0 -1
  94. data/lib/chef/provider/powershell_script.rb +21 -5
  95. data/lib/chef/provider/route.rb +1 -1
  96. data/lib/chef/provider/service.rb +2 -2
  97. data/lib/chef/provider/service/arch.rb +1 -1
  98. data/lib/chef/provider/service/debian.rb +1 -1
  99. data/lib/chef/provider/service/gentoo.rb +2 -2
  100. data/lib/chef/provider/service/macosx.rb +2 -2
  101. data/lib/chef/provider/service/openbsd.rb +1 -4
  102. data/lib/chef/provider/service/redhat.rb +2 -2
  103. data/lib/chef/provider/service/upstart.rb +1 -1
  104. data/lib/chef/provider/service/windows.rb +10 -10
  105. data/lib/chef/provider/systemd_unit.rb +0 -2
  106. data/lib/chef/provider/template/content.rb +1 -0
  107. data/lib/chef/provider/user/dscl.rb +2 -2
  108. data/lib/chef/provider/user/mac.rb +9 -9
  109. data/lib/chef/provider/windows_task.rb +0 -3
  110. data/lib/chef/provider/yum_repository.rb +1 -1
  111. data/lib/chef/provider/zypper_repository.rb +1 -2
  112. data/lib/chef/providers.rb +0 -1
  113. data/lib/chef/recipe.rb +1 -1
  114. data/lib/chef/resource.rb +8 -10
  115. data/lib/chef/resource/apt_repository.rb +1 -10
  116. data/lib/chef/resource/build_essential.rb +2 -2
  117. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  118. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  119. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  120. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  121. data/lib/chef/resource/cron/cron_d.rb +1 -1
  122. data/lib/chef/resource/cron_access.rb +2 -2
  123. data/lib/chef/resource/execute.rb +4 -5
  124. data/lib/chef/resource/homebrew_update.rb +2 -2
  125. data/lib/chef/resource/hostname.rb +18 -18
  126. data/lib/chef/resource/lwrp_base.rb +1 -0
  127. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  128. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  129. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  130. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  131. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  132. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  133. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  134. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  135. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  136. data/lib/chef/resource/osx_profile.rb +227 -5
  137. data/lib/chef/resource/powershell_package_source.rb +1 -1
  138. data/lib/chef/resource/powershell_script.rb +24 -30
  139. data/lib/chef/resource/service.rb +2 -2
  140. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  141. data/lib/chef/resource/sudo.rb +2 -2
  142. data/lib/chef/resource/sysctl.rb +5 -5
  143. data/lib/chef/resource/timezone.rb +112 -73
  144. data/lib/chef/resource/user_ulimit.rb +1 -1
  145. data/lib/chef/resource/windows_ad_join.rb +2 -0
  146. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  147. data/lib/chef/resource/windows_auto_run.rb +2 -0
  148. data/lib/chef/resource/windows_certificate.rb +2 -0
  149. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  150. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  151. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  152. data/lib/chef/resource/windows_dns_record.rb +25 -5
  153. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  154. data/lib/chef/resource/windows_feature.rb +2 -0
  155. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  156. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  157. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  158. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  159. data/lib/chef/resource/windows_font.rb +3 -1
  160. data/lib/chef/resource/windows_pagefile.rb +4 -0
  161. data/lib/chef/resource/windows_printer.rb +17 -18
  162. data/lib/chef/resource/windows_printer_port.rb +14 -13
  163. data/lib/chef/resource/windows_security_policy.rb +51 -20
  164. data/lib/chef/resource/windows_share.rb +5 -3
  165. data/lib/chef/resource/windows_shortcut.rb +2 -0
  166. data/lib/chef/resource/windows_uac.rb +2 -0
  167. data/lib/chef/resource/windows_user_privilege.rb +2 -0
  168. data/lib/chef/resource/windows_workgroup.rb +2 -3
  169. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  170. data/lib/chef/resource_inspector.rb +7 -1
  171. data/lib/chef/resources.rb +1 -0
  172. data/lib/chef/role.rb +3 -4
  173. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  174. data/lib/chef/run_status.rb +2 -6
  175. data/lib/chef/server_api_versions.rb +4 -0
  176. data/lib/chef/shell.rb +1 -1
  177. data/lib/chef/shell/shell_session.rb +2 -0
  178. data/lib/chef/util/backup.rb +1 -1
  179. data/lib/chef/util/diff.rb +11 -12
  180. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  181. data/lib/chef/version.rb +2 -2
  182. data/lib/chef/win32/file.rb +2 -2
  183. data/lib/chef/win32/file/version_info.rb +5 -5
  184. data/lib/chef/win32/registry.rb +1 -2
  185. data/spec/data/ssl/chef-rspec.cert +15 -15
  186. data/spec/functional/knife/ssh_spec.rb +5 -16
  187. data/spec/functional/resource/aix_service_spec.rb +0 -2
  188. data/spec/functional/resource/aixinit_service_spec.rb +7 -8
  189. data/spec/functional/resource/apt_package_spec.rb +0 -1
  190. data/spec/functional/resource/bff_spec.rb +2 -2
  191. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  192. data/spec/functional/resource/cron_spec.rb +0 -1
  193. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  194. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  195. data/spec/functional/resource/git_spec.rb +23 -1
  196. data/spec/functional/resource/group_spec.rb +12 -8
  197. data/spec/functional/resource/insserv_spec.rb +4 -5
  198. data/spec/functional/resource/link_spec.rb +20 -20
  199. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  200. data/spec/functional/resource/remote_file_spec.rb +1 -7
  201. data/spec/functional/resource/rpm_spec.rb +2 -2
  202. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  203. data/spec/functional/resource/windows_font_spec.rb +49 -0
  204. data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
  205. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -1
  206. data/spec/functional/run_lock_spec.rb +26 -25
  207. data/spec/functional/shell_spec.rb +5 -5
  208. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  209. data/spec/functional/version_spec.rb +1 -1
  210. data/spec/functional/win32/registry_spec.rb +8 -8
  211. data/spec/functional/win32/service_manager_spec.rb +1 -1
  212. data/spec/integration/knife/common_options_spec.rb +12 -12
  213. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  214. data/spec/integration/knife/config_get_spec.rb +126 -125
  215. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  216. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  217. data/spec/integration/knife/cookbook_upload_spec.rb +27 -0
  218. data/spec/integration/knife/diff_spec.rb +3 -1
  219. data/spec/integration/knife/download_spec.rb +3 -1
  220. data/spec/integration/knife/serve_spec.rb +5 -5
  221. data/spec/integration/knife/upload_spec.rb +3 -1
  222. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  223. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  224. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  225. data/spec/integration/recipes/notifies_spec.rb +1 -1
  226. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  227. data/spec/integration/recipes/recipe_dsl_spec.rb +1 -1
  228. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  229. data/spec/integration/recipes/resource_load_spec.rb +2 -0
  230. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  231. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  232. data/spec/scripts/ssl-serve.rb +1 -1
  233. data/spec/spec_helper.rb +16 -10
  234. data/spec/support/chef_helpers.rb +1 -20
  235. data/spec/support/platform_helpers.rb +9 -11
  236. data/spec/support/platforms/win32/spec_service.rb +1 -1
  237. data/spec/support/shared/functional/directory_resource.rb +1 -1
  238. data/spec/support/shared/functional/execute_resource.rb +1 -1
  239. data/spec/support/shared/functional/file_resource.rb +20 -21
  240. data/spec/support/shared/functional/win32_service.rb +1 -1
  241. data/spec/support/shared/functional/windows_script.rb +3 -3
  242. data/spec/support/shared/integration/integration_helper.rb +22 -52
  243. data/spec/support/shared/integration/knife_support.rb +2 -9
  244. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  245. data/spec/support/shared/unit/script_resource.rb +6 -20
  246. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  247. data/spec/unit/application_spec.rb +4 -2
  248. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  249. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  250. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  251. data/spec/unit/data_collector_spec.rb +29 -1
  252. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  253. data/spec/unit/environment_spec.rb +7 -7
  254. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  255. data/spec/unit/http/api_versions_spec.rb +19 -1
  256. data/spec/unit/json_compat_spec.rb +1 -1
  257. data/spec/unit/knife/bootstrap_spec.rb +16 -20
  258. data/spec/unit/knife/cookbook_download_spec.rb +4 -4
  259. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  260. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  261. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  262. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  263. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  264. data/spec/unit/log/syslog_spec.rb +6 -10
  265. data/spec/unit/log/winevt_spec.rb +21 -13
  266. data/spec/unit/lwrp_spec.rb +4 -4
  267. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  268. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  269. data/spec/unit/mixin/securable_spec.rb +0 -1
  270. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  271. data/spec/unit/mixin/template_spec.rb +30 -30
  272. data/spec/unit/mixin/which.rb +8 -0
  273. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  274. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  275. data/spec/unit/node_spec.rb +103 -16
  276. data/spec/unit/property_spec.rb +5 -5
  277. data/spec/unit/provider/execute_spec.rb +0 -7
  278. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  279. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  280. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  281. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  282. data/spec/unit/provider/package/windows_spec.rb +30 -53
  283. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  284. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  285. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  286. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  287. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  288. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  289. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  290. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  291. data/spec/unit/provider/service/windows_spec.rb +2 -6
  292. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  293. data/spec/unit/provider_resolver_spec.rb +6 -6
  294. data/spec/unit/provider_spec.rb +1 -0
  295. data/spec/unit/resource/batch_spec.rb +6 -6
  296. data/spec/unit/resource/execute_spec.rb +123 -118
  297. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  298. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  299. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  300. data/spec/unit/resource/script_spec.rb +6 -1
  301. data/spec/unit/resource/timezone_spec.rb +63 -0
  302. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  303. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  304. data/spec/unit/resource/windows_package_spec.rb +1 -0
  305. data/spec/unit/resource_reporter_spec.rb +1 -1
  306. data/spec/unit/role_spec.rb +11 -11
  307. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  308. data/spec/unit/run_lock_spec.rb +1 -1
  309. data/spec/unit/scan_access_control_spec.rb +1 -1
  310. data/spec/unit/server_api_spec.rb +43 -16
  311. data/spec/unit/util/diff_spec.rb +1 -15
  312. data/spec/unit/win32/security_spec.rb +4 -3
  313. data/tasks/rspec.rb +1 -1
  314. metadata +39 -31
  315. data/lib/chef/provider/osx_profile.rb +0 -255
  316. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -61,6 +61,7 @@ describe Chef::EventDispatch::Dispatcher do
61
61
  let(:event_sink) do
62
62
  Class.new(Chef::EventDispatch::Base) do
63
63
  attr_reader :synchronized_cookbook_args
64
+
64
65
  def synchronized_cookbook(cookbook_name)
65
66
  @synchronized_cookbook_args = [cookbook_name]
66
67
  end
@@ -79,6 +80,7 @@ describe Chef::EventDispatch::Dispatcher do
79
80
  let(:event_sink_1) do
80
81
  Class.new(Chef::EventDispatch::Base) do
81
82
  attr_reader :synchronized_cookbook_args
83
+
82
84
  def synchronized_cookbook(cookbook_name)
83
85
  @synchronized_cookbook_args = [cookbook_name]
84
86
  end
@@ -87,6 +89,7 @@ describe Chef::EventDispatch::Dispatcher do
87
89
  let(:event_sink_2) do
88
90
  Class.new(Chef::EventDispatch::Base) do
89
91
  attr_reader :synchronized_cookbook_args
92
+
90
93
  def synchronized_cookbook(cookbook_name, cookbook)
91
94
  @synchronized_cookbook_args = [cookbook_name, cookbook]
92
95
  end
@@ -53,8 +53,26 @@ describe Chef::HTTP::APIVersions do
53
53
  m
54
54
  end
55
55
 
56
+ let(:version_class) do
57
+ Class.new do
58
+ extend Chef::Mixin::VersionedAPIFactory
59
+
60
+ version_class_v0 = Class.new do
61
+ extend Chef::Mixin::VersionedAPI
62
+ minimum_api_version 0
63
+ end
64
+ add_versioned_api_class version_class_v0
65
+
66
+ version_class_v2 = Class.new do
67
+ extend Chef::Mixin::VersionedAPI
68
+ minimum_api_version 2
69
+ end
70
+ add_versioned_api_class version_class_v2
71
+ end
72
+ end
73
+
56
74
  let(:client) do
57
- TestVersionClient.new(url, { version_class: VersionedClassVersions })
75
+ TestVersionClient.new(url, { version_class: version_class })
58
76
  end
59
77
 
60
78
  let(:middleware) do
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require_relative "../spec_helper"
19
+ require "spec_helper"
20
20
  require "chef/json_compat"
21
21
 
22
22
  describe Chef::JSONCompat do
@@ -206,7 +206,7 @@ describe Chef::Knife::Bootstrap do
206
206
  end
207
207
 
208
208
  before(:each) do
209
- expect(File).to receive(:exists?).with(bootstrap_template).and_return(false)
209
+ expect(File).to receive(:exist?).with(bootstrap_template).and_return(false)
210
210
  end
211
211
 
212
212
  context "when file is available everywhere" do
@@ -215,7 +215,7 @@ describe Chef::Knife::Bootstrap do
215
215
  configure_env_home
216
216
  configure_gem_files
217
217
 
218
- expect(File).to receive(:exists?).with(builtin_template_path).and_return(true)
218
+ expect(File).to receive(:exist?).with(builtin_template_path).and_return(true)
219
219
  end
220
220
 
221
221
  it "should load the template from built-in templates" do
@@ -229,8 +229,8 @@ describe Chef::Knife::Bootstrap do
229
229
  configure_env_home
230
230
  configure_gem_files
231
231
 
232
- expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
233
- expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(true)
232
+ expect(File).to receive(:exist?).with(builtin_template_path).and_return(false)
233
+ expect(File).to receive(:exist?).with(chef_config_dir_template_path).and_return(true)
234
234
 
235
235
  it "should load the template from chef_config_dir" do
236
236
  knife.find_template.should eq(chef_config_dir_template_path)
@@ -244,9 +244,9 @@ describe Chef::Knife::Bootstrap do
244
244
  configure_env_home
245
245
  configure_gem_files
246
246
 
247
- expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
248
- expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
249
- expect(File).to receive(:exists?).with(env_home_template_path).and_return(true)
247
+ expect(File).to receive(:exist?).with(builtin_template_path).and_return(false)
248
+ expect(File).to receive(:exist?).with(chef_config_dir_template_path).and_return(false)
249
+ expect(File).to receive(:exist?).with(env_home_template_path).and_return(true)
250
250
  end
251
251
 
252
252
  it "should load the template from chef_config_dir" do
@@ -260,10 +260,10 @@ describe Chef::Knife::Bootstrap do
260
260
  configure_env_home
261
261
  configure_gem_files
262
262
 
263
- expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
264
- expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
265
- expect(File).to receive(:exists?).with(env_home_template_path).and_return(false)
266
- expect(File).to receive(:exists?).with(gem_files_template_path).and_return(true)
263
+ expect(File).to receive(:exist?).with(builtin_template_path).and_return(false)
264
+ expect(File).to receive(:exist?).with(chef_config_dir_template_path).and_return(false)
265
+ expect(File).to receive(:exist?).with(env_home_template_path).and_return(false)
266
+ expect(File).to receive(:exist?).with(gem_files_template_path).and_return(true)
267
267
  end
268
268
 
269
269
  it "should load the template from Gem files" do
@@ -277,9 +277,9 @@ describe Chef::Knife::Bootstrap do
277
277
  configure_gem_files
278
278
  allow(Chef::Util::PathHelper).to receive(:home).with(".chef", "bootstrap", "example.erb").and_return(nil)
279
279
 
280
- expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
281
- expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
282
- expect(File).to receive(:exists?).with(gem_files_template_path).and_return(true)
280
+ expect(File).to receive(:exist?).with(builtin_template_path).and_return(false)
281
+ expect(File).to receive(:exist?).with(chef_config_dir_template_path).and_return(false)
282
+ expect(File).to receive(:exist?).with(gem_files_template_path).and_return(true)
283
283
  end
284
284
 
285
285
  it "should load the template from Gem files" do
@@ -1861,12 +1861,10 @@ describe Chef::Knife::Bootstrap do
1861
1861
  let(:connection_protocol) { "ssh" }
1862
1862
 
1863
1863
  it "warns, prompts for password, then reconnects with a password-enabled configuration using the new password" do
1864
- question_mock = double("question")
1865
1864
  expect(knife).to receive(:do_connect).and_raise(expected_error_password_prompt)
1866
1865
  expect(knife.ui).to receive(:warn).with(/Failed to auth.*/)
1867
- expect(knife.ui).to receive(:ask).and_yield(question_mock).and_return("newpassword")
1866
+ expect(knife.ui).to receive(:ask).and_return("newpassword")
1868
1867
  # Ensure that we set echo off to prevent showing password on the screen
1869
- expect(question_mock).to receive(:echo=).with false
1870
1868
  expect(knife).to receive(:do_connect) do |opts|
1871
1869
  expect(opts[:password]).to eq "newpassword"
1872
1870
  end
@@ -1878,12 +1876,10 @@ describe Chef::Knife::Bootstrap do
1878
1876
  let(:connection_protocol) { "winrm" }
1879
1877
 
1880
1878
  it "warns, prompts for password, then reconnects with a password-enabled configuration using the new password for" do
1881
- question_mock = double("question")
1882
1879
  expect(knife).to receive(:do_connect).and_raise(expected_error_password_prompt_winrm)
1883
1880
  expect(knife.ui).to receive(:warn).with(/Failed to auth.*/)
1884
- expect(knife.ui).to receive(:ask).and_yield(question_mock).and_return("newpassword")
1881
+ expect(knife.ui).to receive(:ask).and_return("newpassword")
1885
1882
  # Ensure that we set echo off to prevent showing password on the screen
1886
- expect(question_mock).to receive(:echo=).with false
1887
1883
  expect(knife).to receive(:do_connect) do |opts|
1888
1884
  expect(opts[:password]).to eq "newpassword"
1889
1885
  end
@@ -94,7 +94,7 @@ describe Chef::Knife::CookbookDownload do
94
94
  let(:manifest_data) { { all_files: [] } }
95
95
  it "should determine which version to download" do
96
96
  expect(@knife).to receive(:determine_version).and_return("1.0.0")
97
- expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
97
+ expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
98
98
  @knife.run
99
99
  end
100
100
  end
@@ -111,7 +111,7 @@ describe Chef::Knife::CookbookDownload do
111
111
  end
112
112
 
113
113
  it "should print an error and exit if the cookbook download directory already exists" do
114
- expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
114
+ expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
115
115
  expect(@knife.ui).to receive(:fatal).with(%r{/var/tmp/chef/foobar-1\.0\.0 exists}i)
116
116
  expect { @knife.run }.to raise_error(SystemExit)
117
117
  end
@@ -135,7 +135,7 @@ describe Chef::Knife::CookbookDownload do
135
135
  end
136
136
 
137
137
  it "should download the cookbook when the cookbook download directory doesn't exist" do
138
- expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
138
+ expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
139
139
  @knife.run
140
140
  %w{attributes recipes templates}.each do |segment|
141
141
  expect(@stderr.string).to match /downloading #{segment}/im
@@ -147,7 +147,7 @@ describe Chef::Knife::CookbookDownload do
147
147
  describe "with -f or --force" do
148
148
  it "should remove the existing the cookbook download directory if it exists" do
149
149
  @knife.config[:force] = true
150
- expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
150
+ expect(File).to receive(:exist?).with("/var/tmp/chef/foobar-1.0.0").and_return(true)
151
151
  expect(FileUtils).to receive(:rm_rf).with("/var/tmp/chef/foobar-1.0.0")
152
152
  @knife.run
153
153
  end
@@ -34,7 +34,7 @@ describe Chef::Knife::CookbookMetadataFromFile do
34
34
  end
35
35
 
36
36
  after do
37
- if File.exists?(@tgt)
37
+ if File.exist?(@tgt)
38
38
  File.unlink(@tgt)
39
39
  end
40
40
  end
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "spec_helper"))
20
+ require "spec_helper"
21
21
 
22
22
  require "chef/cookbook_uploader"
23
23
  require "timeout"
@@ -40,7 +40,6 @@ describe Chef::Knife::CookbookUpload do
40
40
  allow(cookbook_loader).to receive(:load_cookbooks).and_return(cookbook_loader)
41
41
  allow(cookbook_loader).to receive(:compile_metadata).and_return(nil)
42
42
  allow(cookbook_loader).to receive(:freeze_versions).and_return(nil)
43
- allow(cookbook_loader).to receive(:unlink!).and_return(nil)
44
43
  cookbook_loader
45
44
  end
46
45
 
@@ -60,7 +59,7 @@ describe Chef::Knife::CookbookUpload do
60
59
 
61
60
  before(:each) do
62
61
  allow(Chef::CookbookLoader).to receive(:new).and_return(cookbook_loader)
63
- allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_return(cookbook_loader)
62
+ allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_yield(cookbook_loader)
64
63
  end
65
64
 
66
65
  describe "with --concurrency" do
@@ -70,7 +69,6 @@ describe Chef::Knife::CookbookUpload do
70
69
  test_cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
71
70
  allow(cookbook_loader).to receive(:each).and_yield("test_cookbook", test_cookbook)
72
71
  allow(cookbook_loader).to receive(:cookbook_names).and_return(["test_cookbook"])
73
- allow(cookbook_loader).to receive(:tmp_working_dir_path).and_return("/tmp/blah")
74
72
  expect(Chef::CookbookUploader).to receive(:new)
75
73
  .with( kind_of(Array), { force: nil, concurrency: 3 })
76
74
  .and_return(double("Chef::CookbookUploader", upload_cookbooks: true))
@@ -323,19 +321,18 @@ describe Chef::Knife::CookbookUpload do
323
321
 
324
322
  context "when cookbook path is an array" do
325
323
  it "should warn users that no cookbooks exist" do
326
- knife.config[:cookbook_path] = ["/chef-repo/cookbooks", "/home/user/cookbooks"]
327
- expect(knife.ui).to receive(:warn).with(
328
- /Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(', ')}'\. Use --cookbook-path to specify the desired path\./
329
- )
324
+ cookbook_path = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
325
+ knife.config[:cookbook_path] = [cookbook_path, "/home/user/cookbooks"]
326
+ expect(knife.ui).to receive(:warn).with("Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(", ")}'. Use --cookbook-path to specify the desired path.")
330
327
  knife.run
331
328
  end
332
329
  end
333
330
 
334
331
  context "when cookbook path is a string" do
335
332
  it "should warn users that no cookbooks exist" do
336
- knife.config[:cookbook_path] = "/chef-repo/cookbooks"
333
+ knife.config[:cookbook_path] = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
337
334
  expect(knife.ui).to receive(:warn).with(
338
- /Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'\. Use --cookbook-path to specify the desired path\./
335
+ "Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'. Use --cookbook-path to specify the desired path."
339
336
  )
340
337
  knife.run
341
338
  end
@@ -50,7 +50,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
50
50
 
51
51
  describe "#list_commands" do
52
52
  before do
53
- allow(File).to receive(:exists?).and_return(true)
53
+ allow(File).to receive(:exist?).and_return(true)
54
54
  end
55
55
 
56
56
  it "lists all commands by category when no argument is given" do
@@ -63,7 +63,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
63
63
 
64
64
  context "when the plugin path is invalid" do
65
65
  before do
66
- expect(File).to receive(:exists?).with("/file/for/plugin/b").and_return(false)
66
+ expect(File).to receive(:exist?).with("/file/for/plugin/b").and_return(false)
67
67
  end
68
68
 
69
69
  it "lists all commands by category when no argument is given" do
@@ -90,7 +90,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
90
90
  end
91
91
 
92
92
  it "loads the correct file and returns true if the command exists" do
93
- allow(File).to receive(:exists?).and_return(true)
93
+ allow(File).to receive(:exist?).and_return(true)
94
94
  expect(Kernel).to receive(:load).with("/file/for/plugin/a").and_return(true)
95
95
  expect(loader.load_command(["cool_a"])).to eq(true)
96
96
  end
@@ -148,24 +148,28 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
148
148
 
149
149
  describe "#config_content" do
150
150
  before do
151
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_level: :info,
152
- config_log_location: STDOUT,
153
- chef_server_url: "http://chef.example.com:4444",
154
- validation_client_name: "chef-validator-testing",
155
- file_cache_path: "c:/chef/cache",
156
- file_backup_path: "c:/chef/backup",
157
- cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })))
151
+ bootstrap_context.instance_variable_set(
152
+ :@chef_config, Mash.new(
153
+ config_log_level: :info,
154
+ config_log_location: STDOUT,
155
+ chef_server_url: "http://chef.example.com:4444",
156
+ validation_client_name: "chef-validator-testing",
157
+ file_cache_path: "c:/chef/cache",
158
+ file_backup_path: "c:/chef/backup",
159
+ cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })
160
+ )
161
+ )
158
162
  end
159
163
 
160
164
  it "generates the config file data" do
161
165
  expected = <<~EXPECTED
162
166
  echo.chef_server_url "http://chef.example.com:4444"
163
167
  echo.validation_client_name "chef-validator-testing"
164
- echo.file_cache_path "C:/chef/cache"
165
- echo.file_backup_path "C:/chef/backup"
166
- echo.cache_options ^({:path =^> "C:/chef/cache/checksums", :skip_expires =^> true}^)
168
+ echo.file_cache_path "C:\\\\chef\\\\cache"
169
+ echo.file_backup_path "C:\\\\chef\\\\backup"
170
+ echo.cache_options ^({:path =^> "C:\\\\chef\\\\cache\\\\checksums", :skip_expires =^> true}^)
167
171
  echo.# Using default node name ^(fqdn^)
168
- echo.log_level :info
172
+ echo.log_level :auto
169
173
  echo.log_location STDOUT
170
174
  EXPECTED
171
175
  expect(bootstrap_context.config_content).to eq expected
@@ -183,7 +187,12 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
183
187
 
184
188
  describe "#start_chef" do
185
189
  it "returns the expected string" do
186
- expect(bootstrap_context.start_chef).to match(%r{SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\/opscode\/chef\\bin;C:\/opscode\/chef\\embedded\\bin\;%PATH%\"\n})
190
+ expect(bootstrap_context.start_chef).to eq(
191
+ <<~EOH
192
+ SET "PATH=%SYSTEM32%;%SystemRoot%;%SYSTEM32%\\Wbem;%SYSTEM32%\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin;%PATH%"
193
+ chef-client -c C:\\chef\\client.rb -j C:\\chef\\first-boot.json
194
+ EOH
195
+ )
187
196
  end
188
197
  end
189
198
 
@@ -108,7 +108,7 @@ describe Chef::Knife::SupermarketShare do
108
108
  expect { @knife.run }.to raise_error(SystemExit)
109
109
  end
110
110
 
111
- if File.exists?("/usr/bin/gnutar") || File.exists?("/bin/gnutar")
111
+ if File.exist?("/usr/bin/gnutar") || File.exist?("/bin/gnutar")
112
112
  it "should use gnutar to make a tarball of the cookbook" do
113
113
  expect(@knife).to receive(:shell_out!) do |args|
114
114
  expect(args.to_s).to match(/gnutar -czf/)
@@ -23,25 +23,21 @@ describe "Chef::Log::Syslog", unix_only: true do
23
23
 
24
24
  before do
25
25
  Chef::Log.init(MonoLogger.new(syslog))
26
- @old_log_level = Chef::Log.level
27
26
  Chef::Log.level = :info
28
- @old_loggers = Chef::Log.loggers
29
- Chef::Log.use_log_devices([syslog])
30
- end
31
-
32
- after do
33
- Chef::Log.level = @old_log_level
34
- Chef::Log.use_log_devices(@old_loggers)
35
27
  end
36
28
 
37
29
  it "should send message with severity info to syslog." do
38
30
  expect(syslog).to receive(:add).with(1, "*** Chef 12.4.0.dev.0 ***", nil)
39
- Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
31
+ expect {
32
+ Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
33
+ }.not_to output.to_stderr
40
34
  end
41
35
 
42
36
  it "should send message with severity warning to syslog." do
43
37
  expect(syslog).to receive(:add).with(2, "No config file found or specified on command line. Using command line options instead.", nil)
44
- Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
38
+ expect {
39
+ Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
40
+ }.not_to output.to_stderr
45
41
  end
46
42
 
47
43
  it "should fallback into send message with severity info to syslog when wrong format." do
@@ -19,32 +19,40 @@
19
19
 
20
20
  require "spec_helper"
21
21
 
22
- describe Chef::Log::WinEvt do
22
+ describe Chef::Log::WinEvt, :windows_only do
23
23
  let(:evtlog) { instance_double("Win32::EventLog") }
24
24
  let(:winevt) { Chef::Log::WinEvt.new(evtlog) }
25
25
  let(:app) { Chef::Application.new }
26
26
 
27
27
  before do
28
28
  Chef::Log.init(MonoLogger.new(winevt))
29
- @old_log_level = Chef::Log.level
30
29
  Chef::Log.level = :info
31
- @old_loggers = Chef::Log.loggers
32
- Chef::Log.use_log_devices([winevt])
33
- end
34
-
35
- after do
36
- Chef::Log.level = @old_log_level
37
- Chef::Log.use_log_devices(@old_loggers)
38
30
  end
39
31
 
40
32
  it "should send message with severity info to Windows Event Log." do
41
- expect(winevt).to receive(:add).with(1, "*** Chef 12.4.0.dev.0 ***", nil)
42
- Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
33
+ expect(evtlog).to receive(:report_event).with(
34
+ event_type: ::Win32::EventLog::INFO_TYPE,
35
+ source: Chef::Log::WinEvt::SOURCE,
36
+ event_id: Chef::Log::WinEvt::INFO_EVENT_ID,
37
+ data: ["*** Chef 12.4.0.dev.0 ***"]
38
+ )
39
+
40
+ expect {
41
+ Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
42
+ }.not_to output.to_stderr
43
43
  end
44
44
 
45
45
  it "should send message with severity warning to Windows Event Log." do
46
- expect(winevt).to receive(:add).with(2, "No config file found or specified on command line. Using command line options instead.", nil)
47
- Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
46
+ expect(evtlog).to receive(:report_event).with(
47
+ event_type: ::Win32::EventLog::WARN_TYPE,
48
+ source: Chef::Log::WinEvt::SOURCE,
49
+ event_id: Chef::Log::WinEvt::WARN_EVENT_ID,
50
+ data: ["No config file found or specified on command line. Using command line options instead."]
51
+ )
52
+
53
+ expect {
54
+ Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
55
+ }.not_to output.to_stderr
48
56
  end
49
57
 
50
58
  it "should fallback into send message with severity info to Windows Event Log when wrong format." do
@@ -140,7 +140,7 @@ describe "LWRP" do
140
140
  before do
141
141
  @tmpdir = Dir.mktmpdir("lwrp_test")
142
142
  @lwrp_path = File.join(@tmpdir, "foo.rb")
143
- content = IO.read(File.expand_path("../../data/lwrp/resources/foo.rb", __FILE__))
143
+ content = IO.read(File.expand_path("../data/lwrp/resources/foo.rb", __dir__))
144
144
  IO.write(@lwrp_path, content)
145
145
  Chef::Resource::LWRPBase.build_from_file("lwrp", @lwrp_path, nil)
146
146
  @original_resource = Chef::ResourceResolver.resolve(:lwrp_foo)
@@ -152,7 +152,7 @@ describe "LWRP" do
152
152
 
153
153
  context "And the LWRP is asked to load again, this time with different code" do
154
154
  before do
155
- content = IO.read(File.expand_path("../../data/lwrp_override/resources/foo.rb", __FILE__))
155
+ content = IO.read(File.expand_path("../data/lwrp_override/resources/foo.rb", __dir__))
156
156
  IO.write(@lwrp_path, content)
157
157
  Chef::Resource::LWRPBase.build_from_file("lwrp", @lwrp_path, nil)
158
158
  end
@@ -390,11 +390,11 @@ describe "LWRP" do
390
390
  end
391
391
 
392
392
  before(:each) do
393
- Dir[File.expand_path(File.expand_path("../../data/lwrp/resources/*", __FILE__))].each do |file|
393
+ Dir[File.expand_path(File.expand_path("../data/lwrp/resources/*", __dir__))].each do |file|
394
394
  Chef::Resource::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
395
395
  end
396
396
 
397
- Dir[File.expand_path(File.expand_path("../../data/lwrp/providers/*", __FILE__))].each do |file|
397
+ Dir[File.expand_path(File.expand_path("../data/lwrp/providers/*", __dir__))].each do |file|
398
398
  Chef::Provider::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
399
399
  end
400
400
  end