chef 12.13.37-universal-mingw32 → 12.14.60-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 (338) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +48 -95
  3. data/Gemfile +6 -1
  4. data/README.md +9 -11
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +0 -1
  7. data/acceptance/Gemfile +4 -7
  8. data/acceptance/Gemfile.lock +59 -92
  9. data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +8 -0
  10. data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +8 -0
  11. data/acceptance/fips/test/integration/fips-integration/serverspec/Gemfile +6 -0
  12. data/acceptance/fips/test/integration/fips-unit-functional/serverspec/Gemfile +4 -0
  13. data/chef.gemspec +3 -2
  14. data/lib/chef/application/client.rb +4 -4
  15. data/lib/chef/application/solo.rb +2 -2
  16. data/lib/chef/chef_fs/command_line.rb +36 -34
  17. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +2 -2
  18. data/lib/chef/chef_fs/file_pattern.rb +1 -1
  19. data/lib/chef/chef_fs/file_system.rb +139 -137
  20. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +2 -6
  21. data/lib/chef/cookbook/cookbook_version_loader.rb +27 -22
  22. data/lib/chef/cookbook/metadata.rb +1 -1
  23. data/lib/chef/cookbook/synchronizer.rb +3 -3
  24. data/lib/chef/cookbook_site_streaming_uploader.rb +3 -3
  25. data/lib/chef/cookbook_uploader.rb +1 -1
  26. data/lib/chef/cookbook_version.rb +6 -6
  27. data/lib/chef/dsl/powershell.rb +1 -1
  28. data/lib/chef/event_dispatch/base.rb +2 -2
  29. data/lib/chef/exceptions.rb +1 -1
  30. data/lib/chef/file_cache.rb +1 -1
  31. data/lib/chef/formatters/base.rb +2 -2
  32. data/lib/chef/formatters/doc.rb +2 -2
  33. data/lib/chef/http.rb +48 -18
  34. data/lib/chef/http/auth_credentials.rb +1 -1
  35. data/lib/chef/http/basic_client.rb +11 -2
  36. data/lib/chef/http/socketless_chef_zero_client.rb +2 -2
  37. data/lib/chef/key.rb +55 -56
  38. data/lib/chef/knife.rb +70 -61
  39. data/lib/chef/knife/client_delete.rb +2 -2
  40. data/lib/chef/knife/cookbook_bulk_delete.rb +1 -1
  41. data/lib/chef/knife/cookbook_show.rb +1 -1
  42. data/lib/chef/knife/core/gem_glob_loader.rb +3 -3
  43. data/lib/chef/knife/search.rb +2 -2
  44. data/lib/chef/knife/ssh.rb +19 -21
  45. data/lib/chef/knife/status.rb +2 -2
  46. data/lib/chef/mixin/command/unix.rb +2 -2
  47. data/lib/chef/mixin/powershell_type_coercions.rb +1 -1
  48. data/lib/chef/mixin/properties.rb +3 -0
  49. data/lib/chef/mixin/securable.rb +2 -2
  50. data/lib/chef/mixin/shell_out.rb +30 -0
  51. data/lib/chef/mixin/uris.rb +2 -1
  52. data/lib/chef/mixin/windows_architecture_helper.rb +3 -4
  53. data/lib/chef/monkey_patches/webrick-utils.rb +2 -2
  54. data/lib/chef/monologger.rb +1 -1
  55. data/lib/chef/node.rb +2 -2
  56. data/lib/chef/node/attribute.rb +3 -3
  57. data/lib/chef/platform/provider_mapping.rb +5 -2
  58. data/lib/chef/property.rb +14 -3
  59. data/lib/chef/provider/apt_repository.rb +3 -7
  60. data/lib/chef/provider/apt_update.rb +4 -6
  61. data/lib/chef/provider/cron.rb +1 -2
  62. data/lib/chef/provider/dsc_script.rb +4 -4
  63. data/lib/chef/provider/group/usermod.rb +1 -1
  64. data/lib/chef/provider/link.rb +10 -3
  65. data/lib/chef/provider/osx_profile.rb +10 -10
  66. data/lib/chef/provider/package.rb +2 -12
  67. data/lib/chef/provider/package/rubygems.rb +17 -16
  68. data/lib/chef/provider/package/windows.rb +2 -0
  69. data/lib/chef/provider/package/windows/exe.rb +1 -1
  70. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +0 -2
  71. data/lib/chef/provider/package/yum/rpm_utils.rb +8 -8
  72. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  73. data/lib/chef/provider/remote_file/ftp.rb +2 -2
  74. data/lib/chef/provider/remote_file/sftp.rb +2 -2
  75. data/lib/chef/provider/service/debian.rb +2 -2
  76. data/lib/chef/provider/service/simple.rb +4 -3
  77. data/lib/chef/provider/service/solaris.rb +1 -1
  78. data/lib/chef/provider/service/systemd.rb +2 -2
  79. data/lib/chef/provider/service/upstart.rb +8 -5
  80. data/lib/chef/provider/support/yum_repo.erb +125 -0
  81. data/lib/chef/provider/systemd_unit.rb +11 -2
  82. data/lib/chef/provider/template_finder.rb +1 -1
  83. data/lib/chef/provider/user.rb +20 -16
  84. data/lib/chef/provider/user/aix.rb +5 -2
  85. data/lib/chef/provider/user/dscl.rb +1 -0
  86. data/lib/chef/provider/user/linux.rb +128 -0
  87. data/lib/chef/provider/user/pw.rb +2 -1
  88. data/lib/chef/provider/user/solaris.rb +3 -2
  89. data/lib/chef/provider/user/useradd.rb +5 -4
  90. data/lib/chef/provider/user/windows.rb +1 -1
  91. data/lib/chef/provider/windows_script.rb +5 -2
  92. data/lib/chef/provider/yum_repository.rb +121 -0
  93. data/lib/chef/providers.rb +4 -2
  94. data/lib/chef/resource.rb +7 -9
  95. data/lib/chef/resource/conditional.rb +9 -1
  96. data/lib/chef/resource/launchd.rb +1 -1
  97. data/lib/chef/resource/user.rb +3 -3
  98. data/lib/chef/resource/user/aix_user.rb +31 -0
  99. data/lib/chef/resource/user/dscl_user.rb +31 -0
  100. data/lib/chef/resource/user/linux_user.rb +51 -0
  101. data/lib/chef/resource/user/pw_user.rb +31 -0
  102. data/lib/chef/resource/user/solaris_user.rb +31 -0
  103. data/lib/chef/resource/user/windows_user.rb +31 -0
  104. data/lib/chef/resource/yum_package.rb +13 -12
  105. data/lib/chef/resource/yum_repository.rb +76 -0
  106. data/lib/chef/resource_builder.rb +1 -1
  107. data/lib/chef/resource_collection/stepable_iterator.rb +1 -3
  108. data/lib/chef/resource_reporter.rb +5 -5
  109. data/lib/chef/resources.rb +7 -0
  110. data/lib/chef/run_context.rb +5 -3
  111. data/lib/chef/run_context/cookbook_compiler.rb +3 -2
  112. data/lib/chef/run_list.rb +2 -2
  113. data/lib/chef/search/query.rb +11 -8
  114. data/lib/chef/shell/ext.rb +2 -2
  115. data/lib/chef/shell/shell_session.rb +1 -1
  116. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  117. data/lib/chef/util/powershell/cmdlet.rb +5 -2
  118. data/lib/chef/util/selinux.rb +1 -1
  119. data/lib/chef/version.rb +1 -1
  120. data/lib/chef/version_class.rb +2 -2
  121. data/lib/chef/version_constraint.rb +2 -2
  122. data/lib/chef/win32/api/error.rb +2 -2
  123. data/lib/chef/win32/api/net.rb +1 -1
  124. data/lib/chef/win32/eventlog.rb +1 -1
  125. data/lib/chef/win32/net.rb +1 -1
  126. data/lib/chef/win32/security/sid.rb +1 -1
  127. data/spec/functional/assets/testchefsubsys +2 -3
  128. data/spec/functional/event_loggers/windows_eventlog_spec.rb +11 -8
  129. data/spec/functional/file_content_management/deploy_strategies_spec.rb +1 -1
  130. data/spec/functional/http/simple_spec.rb +2 -2
  131. data/spec/functional/knife/cookbook_delete_spec.rb +5 -5
  132. data/spec/functional/knife/exec_spec.rb +6 -6
  133. data/spec/functional/knife/ssh_spec.rb +4 -4
  134. data/spec/functional/notifications_spec.rb +2 -2
  135. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  136. data/spec/functional/rebooter_spec.rb +5 -5
  137. data/spec/functional/resource/bash_spec.rb +2 -2
  138. data/spec/functional/resource/deploy_revision_spec.rb +1 -1
  139. data/spec/functional/resource/dpkg_package_spec.rb +2 -2
  140. data/spec/functional/resource/dsc_resource_spec.rb +5 -5
  141. data/spec/functional/resource/dsc_script_spec.rb +27 -22
  142. data/spec/functional/resource/env_spec.rb +4 -4
  143. data/spec/functional/resource/execute_spec.rb +4 -4
  144. data/spec/functional/resource/group_spec.rb +20 -8
  145. data/spec/functional/resource/link_spec.rb +34 -0
  146. data/spec/functional/resource/ohai_spec.rb +6 -6
  147. data/spec/functional/resource/reboot_spec.rb +2 -2
  148. data/spec/functional/resource/remote_file_spec.rb +16 -7
  149. data/spec/functional/resource/user/dscl_spec.rb +3 -3
  150. data/spec/functional/resource/user/useradd_spec.rb +32 -26
  151. data/spec/functional/resource/windows_service_spec.rb +15 -15
  152. data/spec/functional/rest_spec.rb +2 -2
  153. data/spec/functional/run_lock_spec.rb +9 -9
  154. data/spec/functional/tiny_server_spec.rb +9 -8
  155. data/spec/functional/win32/crypto_spec.rb +1 -1
  156. data/spec/functional/win32/security_spec.rb +8 -8
  157. data/spec/integration/client/client_spec.rb +6 -4
  158. data/spec/integration/knife/chef_repo_path_spec.rb +70 -1
  159. data/spec/integration/knife/upload_spec.rb +1 -1
  160. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +6 -6
  161. data/spec/integration/recipes/noop_resource_spec.rb +4 -4
  162. data/spec/integration/recipes/provider_choice.rb +3 -3
  163. data/spec/integration/recipes/recipe_dsl_spec.rb +318 -317
  164. data/spec/integration/recipes/resource_action_spec.rb +50 -54
  165. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +34 -34
  166. data/spec/integration/recipes/resource_load_spec.rb +24 -24
  167. data/spec/integration/solo/solo_spec.rb +21 -30
  168. data/spec/scripts/ssl-serve.rb +1 -1
  169. data/spec/spec_helper.rb +1 -0
  170. data/spec/stress/win32/security_spec.rb +4 -4
  171. data/spec/support/chef_helpers.rb +22 -0
  172. data/spec/support/platform_helpers.rb +5 -1
  173. data/spec/support/shared/context/client.rb +3 -2
  174. data/spec/support/shared/functional/file_resource.rb +5 -4
  175. data/spec/support/shared/functional/http.rb +16 -16
  176. data/spec/support/shared/functional/securable_resource.rb +5 -5
  177. data/spec/support/shared/functional/win32_service.rb +5 -7
  178. data/spec/support/shared/integration/app_server_support.rb +1 -3
  179. data/spec/support/shared/integration/knife_support.rb +0 -2
  180. data/spec/support/shared/shared_examples.rb +2 -2
  181. data/spec/support/shared/unit/api_versioning.rb +2 -2
  182. data/spec/support/shared/unit/application_dot_d.rb +9 -6
  183. data/spec/support/shared/unit/provider/file.rb +2 -2
  184. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +49 -80
  185. data/spec/support/shared/unit/resource/static_provider_resolution.rb +2 -2
  186. data/spec/support/shared/unit/script_resource.rb +4 -4
  187. data/spec/support/shared/unit/user_and_client_shared.rb +4 -4
  188. data/spec/tiny_server.rb +51 -66
  189. data/spec/unit/api_client_v1_spec.rb +2 -2
  190. data/spec/unit/application_spec.rb +1 -1
  191. data/spec/unit/audit/audit_event_proxy_spec.rb +34 -27
  192. data/spec/unit/audit/audit_reporter_spec.rb +32 -23
  193. data/spec/unit/audit/control_group_data_spec.rb +19 -14
  194. data/spec/unit/chef_class_spec.rb +1 -1
  195. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +1 -1
  196. data/spec/unit/chef_fs/diff_spec.rb +4 -4
  197. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +4 -4
  198. data/spec/unit/chef_fs/file_system_spec.rb +2 -2
  199. data/spec/unit/chef_fs/parallelizer.rb +5 -7
  200. data/spec/unit/cookbook/metadata_spec.rb +98 -98
  201. data/spec/unit/cookbook/synchronizer_spec.rb +7 -0
  202. data/spec/unit/cookbook_loader_spec.rb +24 -24
  203. data/spec/unit/cookbook_version_file_specificity_spec.rb +8 -8
  204. data/spec/unit/daemon_spec.rb +1 -1
  205. data/spec/unit/data_bag_item_spec.rb +18 -18
  206. data/spec/unit/data_bag_spec.rb +2 -2
  207. data/spec/unit/data_collector/messages/helpers_spec.rb +9 -9
  208. data/spec/unit/data_collector/messages_spec.rb +2 -2
  209. data/spec/unit/data_collector_spec.rb +19 -19
  210. data/spec/unit/dsl/audit_spec.rb +3 -3
  211. data/spec/unit/dsl/data_query_spec.rb +3 -2
  212. data/spec/unit/dsl/declare_resource_spec.rb +10 -10
  213. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +3 -2
  214. data/spec/unit/encrypted_data_bag_item_spec.rb +3 -2
  215. data/spec/unit/environment_spec.rb +6 -6
  216. data/spec/unit/event_dispatch/dispatcher_spec.rb +2 -2
  217. data/spec/unit/file_access_control_spec.rb +3 -3
  218. data/spec/unit/file_content_management/tempfile_spec.rb +2 -2
  219. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +2 -2
  220. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +2 -2
  221. data/spec/unit/http/basic_client_spec.rb +20 -0
  222. data/spec/unit/http/validate_content_length_spec.rb +8 -8
  223. data/spec/unit/http_spec.rb +14 -0
  224. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +2 -2
  225. data/spec/unit/knife/bootstrap/client_builder_spec.rb +2 -2
  226. data/spec/unit/knife/bootstrap_spec.rb +8 -6
  227. data/spec/unit/knife/client_bulk_delete_spec.rb +8 -8
  228. data/spec/unit/knife/client_edit_spec.rb +2 -2
  229. data/spec/unit/knife/configure_client_spec.rb +2 -2
  230. data/spec/unit/knife/cookbook_metadata_spec.rb +4 -4
  231. data/spec/unit/knife/cookbook_site_install_spec.rb +6 -5
  232. data/spec/unit/knife/cookbook_site_share_spec.rb +2 -2
  233. data/spec/unit/knife/core/hashed_command_loader_spec.rb +5 -4
  234. data/spec/unit/knife/core/node_editor_spec.rb +3 -3
  235. data/spec/unit/knife/core/ui_spec.rb +2 -2
  236. data/spec/unit/knife/data_bag_from_file_spec.rb +4 -3
  237. data/spec/unit/knife/data_bag_show_spec.rb +3 -2
  238. data/spec/unit/knife/key_create_spec.rb +14 -14
  239. data/spec/unit/knife/key_delete_spec.rb +2 -2
  240. data/spec/unit/knife/key_edit_spec.rb +16 -16
  241. data/spec/unit/knife/key_list_spec.rb +6 -6
  242. data/spec/unit/knife/key_show_spec.rb +4 -4
  243. data/spec/unit/knife/status_spec.rb +3 -2
  244. data/spec/unit/knife/user_create_spec.rb +4 -4
  245. data/spec/unit/knife_spec.rb +7 -6
  246. data/spec/unit/lwrp_spec.rb +6 -6
  247. data/spec/unit/mixin/api_version_request_handling_spec.rb +2 -2
  248. data/spec/unit/mixin/command_spec.rb +17 -14
  249. data/spec/unit/mixin/deprecation_spec.rb +1 -1
  250. data/spec/unit/mixin/homebrew_user_spec.rb +2 -2
  251. data/spec/unit/mixin/params_validate_spec.rb +53 -52
  252. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  253. data/spec/unit/mixin/powershell_type_coercions_spec.rb +2 -2
  254. data/spec/unit/mixin/shell_out_spec.rb +1 -1
  255. data/spec/unit/mixin/xml_escape_spec.rb +3 -3
  256. data/spec/unit/node_spec.rb +2 -2
  257. data/spec/unit/platform/query_helpers_spec.rb +3 -3
  258. data/spec/unit/property_spec.rb +4 -4
  259. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  260. data/spec/unit/provider/cron/unix_spec.rb +4 -4
  261. data/spec/unit/provider/cron_spec.rb +2 -2
  262. data/spec/unit/provider/deploy_spec.rb +8 -8
  263. data/spec/unit/provider/dsc_resource_spec.rb +11 -10
  264. data/spec/unit/provider/dsc_script_spec.rb +9 -9
  265. data/spec/unit/provider/env/windows_spec.rb +8 -8
  266. data/spec/unit/provider/file/content_spec.rb +6 -6
  267. data/spec/unit/provider/file_spec.rb +4 -4
  268. data/spec/unit/provider/launchd_spec.rb +2 -1
  269. data/spec/unit/provider/link_spec.rb +155 -0
  270. data/spec/unit/provider/mount/mount_spec.rb +5 -5
  271. data/spec/unit/provider/mount/solaris_spec.rb +48 -48
  272. data/spec/unit/provider/osx_profile_spec.rb +6 -0
  273. data/spec/unit/provider/package/chocolatey_spec.rb +4 -4
  274. data/spec/unit/provider/package/freebsd/port_spec.rb +4 -4
  275. data/spec/unit/provider/package/rubygems_spec.rb +50 -44
  276. data/spec/unit/provider/package/windows/exe_spec.rb +9 -0
  277. data/spec/unit/provider/package/yum_spec.rb +61 -60
  278. data/spec/unit/provider/package_spec.rb +2 -2
  279. data/spec/unit/provider/powershell_script_spec.rb +4 -4
  280. data/spec/unit/provider/remote_directory_spec.rb +1 -1
  281. data/spec/unit/provider/remote_file/ftp_spec.rb +4 -4
  282. data/spec/unit/provider/remote_file/local_file_spec.rb +4 -2
  283. data/spec/unit/provider/remote_file/sftp_spec.rb +4 -4
  284. data/spec/unit/provider/remote_file_spec.rb +4 -4
  285. data/spec/unit/provider/script_spec.rb +4 -4
  286. data/spec/unit/provider/service/debian_service_spec.rb +4 -4
  287. data/spec/unit/provider/service/freebsd_service_spec.rb +12 -8
  288. data/spec/unit/provider/service/openbsd_service_spec.rb +12 -8
  289. data/spec/unit/provider/service/systemd_service_spec.rb +4 -4
  290. data/spec/unit/provider/service/upstart_service_spec.rb +27 -12
  291. data/spec/unit/provider/service/windows_spec.rb +10 -10
  292. data/spec/unit/provider/systemd_unit_spec.rb +2 -2
  293. data/spec/unit/provider/template/content_spec.rb +8 -8
  294. data/spec/unit/provider/template_spec.rb +8 -8
  295. data/spec/unit/provider/user/dscl_spec.rb +51 -51
  296. data/spec/unit/provider/user/linux_spec.rb +76 -0
  297. data/spec/unit/provider/user/pw_spec.rb +3 -6
  298. data/spec/unit/provider/user/solaris_spec.rb +5 -5
  299. data/spec/unit/provider/user/windows_spec.rb +3 -3
  300. data/spec/unit/provider/user_spec.rb +2 -2
  301. data/spec/unit/provider/yum_repository_spec.rb +35 -0
  302. data/spec/unit/provider_resolver_spec.rb +306 -264
  303. data/spec/unit/recipe_spec.rb +8 -7
  304. data/spec/unit/resource/apt_repository_spec.rb +4 -4
  305. data/spec/unit/resource/apt_update_spec.rb +4 -4
  306. data/spec/unit/resource/conditional_spec.rb +46 -0
  307. data/spec/unit/resource/dsc_resource_spec.rb +8 -8
  308. data/spec/unit/resource/dsc_script_spec.rb +4 -4
  309. data/spec/unit/resource/freebsd_package_spec.rb +6 -6
  310. data/spec/unit/resource/launchd_spec.rb +3 -2
  311. data/spec/unit/resource/osx_profile_spec.rb +3 -2
  312. data/spec/unit/resource/remote_file_spec.rb +6 -6
  313. data/spec/unit/resource/service_spec.rb +14 -14
  314. data/spec/unit/resource/user_spec.rb +1 -1
  315. data/spec/unit/resource/yum_repository_spec.rb +49 -0
  316. data/spec/unit/resource_collection_spec.rb +4 -4
  317. data/spec/unit/resource_definition_spec.rb +11 -11
  318. data/spec/unit/resource_reporter_spec.rb +4 -4
  319. data/spec/unit/resource_resolver_spec.rb +6 -6
  320. data/spec/unit/resource_spec.rb +36 -16
  321. data/spec/unit/run_context/child_run_context_spec.rb +4 -4
  322. data/spec/unit/run_context/cookbook_compiler_spec.rb +43 -1
  323. data/spec/unit/run_context_spec.rb +8 -8
  324. data/spec/unit/run_list/run_list_expansion_spec.rb +2 -2
  325. data/spec/unit/runner_spec.rb +2 -2
  326. data/spec/unit/search/query_spec.rb +15 -14
  327. data/spec/unit/user_v1_spec.rb +8 -8
  328. data/spec/unit/util/dsc/configuration_generator_spec.rb +12 -12
  329. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +12 -9
  330. data/spec/unit/util/dsc/resource_store.rb +8 -6
  331. data/spec/unit/util/editor_spec.rb +6 -6
  332. data/spec/unit/util/powershell/cmdlet_spec.rb +10 -10
  333. data/tasks/bin/bundle-platform +1 -0
  334. data/tasks/bin/bundler_patch.rb +27 -0
  335. data/tasks/cbgb.rb +2 -2
  336. data/tasks/maintainers.rb +2 -2
  337. metadata +37 -8
  338. data/spec/unit/provider/user/useradd_spec.rb +0 -51
@@ -20,7 +20,7 @@ require "spec_helper"
20
20
  describe Chef::Provider::PowershellScript, "action_run" do
21
21
 
22
22
  let(:powershell_version) { nil }
23
- let(:node) {
23
+ let(:node) do
24
24
  node = Chef::Node.new
25
25
  node.default["kernel"] = Hash.new
26
26
  node.default["kernel"][:machine] = :x86_64.to_s
@@ -28,14 +28,14 @@ describe Chef::Provider::PowershellScript, "action_run" do
28
28
  node.default[:languages] = { :powershell => { :version => powershell_version } }
29
29
  end
30
30
  node
31
- }
31
+ end
32
32
 
33
- let(:provider) {
33
+ let(:provider) do
34
34
  empty_events = Chef::EventDispatch::Dispatcher.new
35
35
  run_context = Chef::RunContext.new(node, {}, empty_events)
36
36
  new_resource = Chef::Resource::PowershellScript.new("run some powershell code", run_context)
37
37
  Chef::Provider::PowershellScript.new(new_resource, run_context)
38
- }
38
+ end
39
39
 
40
40
  context "when setting interpreter flags" do
41
41
  context "on nano" do
@@ -121,7 +121,7 @@ describe Chef::Provider::RemoteDirectory do
121
121
  @node.automatic_attrs[:platform] = :just_testing
122
122
  @node.automatic_attrs[:platform_version] = :just_testing
123
123
 
124
- @destination_dir = Dir.mktmpdir << "/remote_directory_test"
124
+ @destination_dir = make_canonical_temp_directory << "/remote_directory_test"
125
125
  @resource.path(@destination_dir)
126
126
  end
127
127
 
@@ -19,12 +19,12 @@
19
19
  require "spec_helper"
20
20
 
21
21
  describe Chef::Provider::RemoteFile::FTP do
22
- let(:enclosing_directory) {
22
+ let(:enclosing_directory) do
23
23
  canonicalize_path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates")))
24
- }
25
- let(:resource_path) {
24
+ end
25
+ let(:resource_path) do
26
26
  canonicalize_path(File.expand_path(File.join(enclosing_directory, "seattle.txt")))
27
- }
27
+ end
28
28
 
29
29
  let(:new_resource) do
30
30
  r = Chef::Resource::RemoteFile.new("remote file ftp backend test (new resource)")
@@ -17,6 +17,8 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
+ require "uri"
21
+ require "addressable/uri"
20
22
 
21
23
  describe Chef::Provider::RemoteFile::LocalFile do
22
24
 
@@ -47,7 +49,7 @@ describe Chef::Provider::RemoteFile::LocalFile do
47
49
  end
48
50
 
49
51
  describe "when given local windows path with spaces" do
50
- let(:uri) { URI.parse(URI.escape("file:///z:/windows/path/foo & bar.txt")) }
52
+ let(:uri) { URI.parse(Addressable::URI.encode("file:///z:/windows/path/foo & bar.txt")) }
51
53
  it "returns a valid windows local path" do
52
54
  expect(fetcher.source_path).to eq("z:/windows/path/foo & bar.txt")
53
55
  end
@@ -61,7 +63,7 @@ describe Chef::Provider::RemoteFile::LocalFile do
61
63
  end
62
64
 
63
65
  describe "when given unc windows path with spaces" do
64
- let(:uri) { URI.parse(URI.escape("file:////server/share/windows/path/foo & bar.txt")) }
66
+ let(:uri) { URI.parse(Addressable::URI.encode("file:////server/share/windows/path/foo & bar.txt")) }
65
67
  it "returns a valid windows unc path" do
66
68
  expect(fetcher.source_path).to eq("//server/share/windows/path/foo & bar.txt")
67
69
  end
@@ -20,12 +20,12 @@ require "spec_helper"
20
20
 
21
21
  describe Chef::Provider::RemoteFile::SFTP do
22
22
  #built out dependencies
23
- let(:enclosing_directory) {
23
+ let(:enclosing_directory) do
24
24
  canonicalize_path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates")))
25
- }
26
- let(:resource_path) {
25
+ end
26
+ let(:resource_path) do
27
27
  canonicalize_path(File.expand_path(File.join(enclosing_directory, "seattle.txt")))
28
- }
28
+ end
29
29
 
30
30
  let(:new_resource) do
31
31
  r = Chef::Resource::RemoteFile.new("remote file sftp backend test (new resource)")
@@ -37,12 +37,12 @@ describe Chef::Provider::RemoteFile do
37
37
  let(:node) { double("Chef::Node") }
38
38
  let(:events) { double("Chef::Events").as_null_object } # mock all the methods
39
39
  let(:run_context) { double("Chef::RunContext", :node => node, :events => events) }
40
- let(:enclosing_directory) {
40
+ let(:enclosing_directory) do
41
41
  canonicalize_path(File.expand_path(File.join(CHEF_SPEC_DATA, "templates")))
42
- }
43
- let(:resource_path) {
42
+ end
43
+ let(:resource_path) do
44
44
  canonicalize_path(File.expand_path(File.join(enclosing_directory, "seattle.txt")))
45
- }
45
+ end
46
46
 
47
47
  subject(:provider) do
48
48
  provider = described_class.new(resource, run_context)
@@ -25,12 +25,12 @@ describe Chef::Provider::Script, "action_run" do
25
25
 
26
26
  let(:run_context) { Chef::RunContext.new(node, {}, events) }
27
27
 
28
- let(:new_resource) {
28
+ let(:new_resource) do
29
29
  new_resource = Chef::Resource::Script.new("run some perl code")
30
30
  new_resource.code "$| = 1; print 'i like beans'"
31
31
  new_resource.interpreter "perl"
32
32
  new_resource
33
- }
33
+ end
34
34
 
35
35
  let(:provider) { Chef::Provider::Script.new(new_resource, run_context) }
36
36
 
@@ -87,9 +87,9 @@ describe Chef::Provider::Script, "action_run" do
87
87
  end
88
88
 
89
89
  describe "when running the script" do
90
- let (:default_opts) {
90
+ let (:default_opts) do
91
91
  { timeout: 3600, returns: 0, log_level: :info, log_tag: "script[run some perl code]" }
92
- }
92
+ end
93
93
 
94
94
  before do
95
95
  allow(STDOUT).to receive(:tty?).and_return(false)
@@ -39,9 +39,9 @@ describe Chef::Provider::Service::Debian do
39
39
  expect(File).to receive(:exists?).with("/usr/sbin/update-rc.d") .and_return(false)
40
40
 
41
41
  @provider.define_resource_requirements
42
- expect {
42
+ expect do
43
43
  @provider.process_resource_requirements
44
- }.to raise_error(Chef::Exceptions::Service)
44
+ end.to raise_error(Chef::Exceptions::Service)
45
45
  end
46
46
 
47
47
  context "when update-rc.d shows init linked to rc*.d/" do
@@ -108,9 +108,9 @@ describe Chef::Provider::Service::Debian do
108
108
 
109
109
  it "raises an error" do
110
110
  @provider.define_resource_requirements
111
- expect {
111
+ expect do
112
112
  @provider.process_resource_requirements
113
- }.to raise_error(Chef::Exceptions::Service)
113
+ end.to raise_error(Chef::Exceptions::Service)
114
114
  end
115
115
  end
116
116
 
@@ -257,10 +257,11 @@ PS_SAMPLE
257
257
  end
258
258
 
259
259
  context "when the enable variable partial matches (left) some other service and we are disabled" do
260
- let(:lines) { [
260
+ let(:lines) do
261
+ [
261
262
  %Q{thing_#{new_resource.service_name}_enable="YES"},
262
263
  %Q{#{new_resource.service_name}_enable="NO"},
263
- ] }
264
+ ] end
264
265
  it "sets enabled based on the exact match (false)" do
265
266
  provider.determine_enabled_status!
266
267
  expect(current_resource.enabled).to be false
@@ -268,10 +269,11 @@ PS_SAMPLE
268
269
  end
269
270
 
270
271
  context "when the enable variable partial matches (right) some other service and we are disabled" do
271
- let(:lines) { [
272
+ let(:lines) do
273
+ [
272
274
  %Q{#{new_resource.service_name}_thing_enable="YES"},
273
275
  %Q{#{new_resource.service_name}_enable="NO"},
274
- ] }
276
+ ] end
275
277
  it "sets enabled based on the exact match (false)" do
276
278
  provider.determine_enabled_status!
277
279
  expect(current_resource.enabled).to be false
@@ -279,10 +281,11 @@ PS_SAMPLE
279
281
  end
280
282
 
281
283
  context "when the enable variable partial matches (left) some other disabled service and we are enabled" do
282
- let(:lines) { [
284
+ let(:lines) do
285
+ [
283
286
  %Q{thing_#{new_resource.service_name}_enable="NO"},
284
287
  %Q{#{new_resource.service_name}_enable="YES"},
285
- ] }
288
+ ] end
286
289
  it "sets enabled based on the exact match (true)" do
287
290
  provider.determine_enabled_status!
288
291
  expect(current_resource.enabled).to be true
@@ -290,10 +293,11 @@ PS_SAMPLE
290
293
  end
291
294
 
292
295
  context "when the enable variable partial matches (right) some other disabled service and we are enabled" do
293
- let(:lines) { [
296
+ let(:lines) do
297
+ [
294
298
  %Q{#{new_resource.service_name}_thing_enable="NO"},
295
299
  %Q{#{new_resource.service_name}_enable="YES"},
296
- ] }
300
+ ] end
297
301
  it "sets enabled based on the exact match (true)" do
298
302
  provider.determine_enabled_status!
299
303
  expect(current_resource.enabled).to be true
@@ -174,10 +174,11 @@ describe Chef::Provider::Service::Openbsd do
174
174
  end
175
175
 
176
176
  context "when the enable variable partial matches (left) some other service and we are disabled" do
177
- let(:lines) { [
177
+ let(:lines) do
178
+ [
178
179
  %Q{thing_#{provider.builtin_service_enable_variable_name}="YES"},
179
180
  %Q{#{provider.builtin_service_enable_variable_name}="NO"},
180
- ] }
181
+ ] end
181
182
  it "sets enabled based on the exact match (false)" do
182
183
  provider.determine_enabled_status!
183
184
  expect(current_resource.enabled).to be false
@@ -185,10 +186,11 @@ describe Chef::Provider::Service::Openbsd do
185
186
  end
186
187
 
187
188
  context "when the enable variable partial matches (right) some other service and we are disabled" do
188
- let(:lines) { [
189
+ let(:lines) do
190
+ [
189
191
  %Q{#{provider.builtin_service_enable_variable_name}_thing="YES"},
190
192
  %Q{#{provider.builtin_service_enable_variable_name}},
191
- ] }
193
+ ] end
192
194
  it "sets enabled based on the exact match (false)" do
193
195
  provider.determine_enabled_status!
194
196
  expect(current_resource.enabled).to be false
@@ -196,10 +198,11 @@ describe Chef::Provider::Service::Openbsd do
196
198
  end
197
199
 
198
200
  context "when the enable variable partial matches (left) some other disabled service and we are enabled" do
199
- let(:lines) { [
201
+ let(:lines) do
202
+ [
200
203
  %Q{thing_#{provider.builtin_service_enable_variable_name}="NO"},
201
204
  %Q{#{provider.builtin_service_enable_variable_name}="YES"},
202
- ] }
205
+ ] end
203
206
  it "sets enabled based on the exact match (true)" do
204
207
  provider.determine_enabled_status!
205
208
  expect(current_resource.enabled).to be true
@@ -207,10 +210,11 @@ describe Chef::Provider::Service::Openbsd do
207
210
  end
208
211
 
209
212
  context "when the enable variable partial matches (right) some other disabled service and we are enabled" do
210
- let(:lines) { [
213
+ let(:lines) do
214
+ [
211
215
  %Q{#{provider.builtin_service_enable_variable_name}_thing="NO"},
212
216
  %Q{#{provider.builtin_service_enable_variable_name}="YES"},
213
- ] }
217
+ ] end
214
218
  it "sets enabled based on the exact match (true)" do
215
219
  provider.determine_enabled_status!
216
220
  expect(current_resource.enabled).to be true
@@ -21,7 +21,7 @@ require "spec_helper"
21
21
 
22
22
  describe Chef::Provider::Service::Systemd do
23
23
 
24
- let(:node) {
24
+ let(:node) do
25
25
  node = Chef::Node.new
26
26
  node.default["etc"] = Hash.new
27
27
  node.default["etc"]["passwd"] = {
@@ -30,7 +30,7 @@ describe Chef::Provider::Service::Systemd do
30
30
  },
31
31
  }
32
32
  node
33
- }
33
+ end
34
34
 
35
35
  let(:events) { Chef::EventDispatch::Dispatcher.new }
36
36
 
@@ -196,14 +196,14 @@ describe Chef::Provider::Service::Systemd do
196
196
  context "when a user is specified" do
197
197
  it "should call '#{systemctl_path} --user start service_name' if no start command is specified" do
198
198
  current_resource.user("joe")
199
- expect(provider).to receive(:shell_out_with_systems_locale!).with("#{systemctl_path} --user start #{service_name}", { "environment" => { "DBUS_SESSION_BUS_ADDRESS" => "unix:path=/run/user/10000/bus" }, "user" => "joe" }).and_return(shell_out_success)
199
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("#{systemctl_path} --user start #{service_name}", { :environment => { "DBUS_SESSION_BUS_ADDRESS" => "unix:path=/run/user/10000/bus" }, :user => "joe" }).and_return(shell_out_success)
200
200
  provider.start_service
201
201
  end
202
202
 
203
203
  it "should not call '#{systemctl_path} --user start service_name' if it is already running" do
204
204
  current_resource.running(true)
205
205
  current_resource.user("joe")
206
- expect(provider).not_to receive(:shell_out_with_systems_locale!).with("#{systemctl_path} --user start #{service_name}", { "environment" => { "DBUS_SESSION_BUS_ADDRESS" => "unix:path=/run/user/10000/bus" }, "user" => "joe" })
206
+ expect(provider).not_to receive(:shell_out_with_systems_locale!).with("#{systemctl_path} --user start #{service_name}", { :environment => { "DBUS_SESSION_BUS_ADDRESS" => "unix:path=/run/user/10000/bus" }, :user => "joe" })
207
207
  provider.start_service
208
208
  end
209
209
  end
@@ -105,17 +105,21 @@ describe Chef::Provider::Service::Upstart do
105
105
  end
106
106
 
107
107
  describe "when the status command uses the new format" do
108
- before do
108
+ it "should set running to true if the goal state is 'start'" do
109
+ @stdout = StringIO.new("rsyslog start/running")
110
+ allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
111
+ @provider.load_current_resource
112
+ expect(@current_resource.running).to be_truthy
109
113
  end
110
114
 
111
- it "should set running to true if the status command returns 0" do
112
- @stdout = StringIO.new("rsyslog start/running")
115
+ it "should set running to true if the goal state is 'start' but current state is not 'running'" do
116
+ @stdout = StringIO.new("rsyslog start/starting")
113
117
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
114
118
  @provider.load_current_resource
115
119
  expect(@current_resource.running).to be_truthy
116
120
  end
117
121
 
118
- it "should set running to false if the status command returns anything except 0" do
122
+ it "should set running to false if the goal state is 'stop'" do
119
123
  @stdout = StringIO.new("rsyslog stop/waiting")
120
124
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
121
125
  @provider.load_current_resource
@@ -124,17 +128,21 @@ describe Chef::Provider::Service::Upstart do
124
128
  end
125
129
 
126
130
  describe "when the status command uses the new format with an instance" do
127
- before do
131
+ it "should set running to true if the goal state is 'start'" do
132
+ @stdout = StringIO.new("rsyslog (test) start/running, process 100")
133
+ allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
134
+ @provider.load_current_resource
135
+ expect(@current_resource.running).to be_truthy
128
136
  end
129
137
 
130
- it "should set running to true if the status command returns 0" do
131
- @stdout = StringIO.new("rsyslog (test) start/running, process 100")
138
+ it "should set running to true if the goal state is 'start' but current state is not 'running'" do
139
+ @stdout = StringIO.new("rsyslog (test) start/starting, process 100")
132
140
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
133
141
  @provider.load_current_resource
134
142
  expect(@current_resource.running).to be_truthy
135
143
  end
136
144
 
137
- it "should set running to false if the status command returns anything except 0" do
145
+ it "should set running to false if the goal state is 'stop'" do
138
146
  @stdout = StringIO.new("rsyslog (test) stop/waiting, process 100")
139
147
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
140
148
  @provider.load_current_resource
@@ -143,14 +151,21 @@ describe Chef::Provider::Service::Upstart do
143
151
  end
144
152
 
145
153
  describe "when the status command uses the old format" do
146
- it "should set running to true if the status command returns 0" do
154
+ it "should set running to true if the goal state is 'start'" do
147
155
  @stdout = StringIO.new("rsyslog (start) running, process 32225")
148
156
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
149
157
  @provider.load_current_resource
150
158
  expect(@current_resource.running).to be_truthy
151
159
  end
152
160
 
153
- it "should set running to false if the status command returns anything except 0" do
161
+ it "should set running to true if the goal state is 'start' but current state is not 'running'" do
162
+ @stdout = StringIO.new("rsyslog (start) starting, process 32225")
163
+ allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
164
+ @provider.load_current_resource
165
+ expect(@current_resource.running).to be_truthy
166
+ end
167
+
168
+ it "should set running to false if the goal state is 'stop'" do
154
169
  @stdout = StringIO.new("rsyslog (stop) waiting")
155
170
  allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
156
171
  @provider.load_current_resource
@@ -214,8 +229,8 @@ describe Chef::Provider::Service::Upstart do
214
229
  end
215
230
  end
216
231
 
217
- it "should track state when we fail to obtain service status via upstart_state" do
218
- expect(@provider).to receive(:upstart_state).and_raise Chef::Exceptions::Exec
232
+ it "should track state when we fail to obtain service status via upstart_goal_state" do
233
+ expect(@provider).to receive(:upstart_goal_state).and_raise Chef::Exceptions::Exec
219
234
  @provider.load_current_resource
220
235
  expect(@provider.instance_variable_get("@command_success")).to eq(false)
221
236
  end
@@ -151,15 +151,15 @@ describe Chef::Provider::Service::Windows, "load_current_resource" do
151
151
  let(:old_run_as_user) { new_resource.run_as_user }
152
152
  let(:old_run_as_password) { new_resource.run_as_password }
153
153
 
154
- before {
154
+ before do
155
155
  new_resource.run_as_user(".\\wallace")
156
156
  new_resource.run_as_password("Wensleydale")
157
- }
157
+ end
158
158
 
159
- after {
159
+ after do
160
160
  new_resource.run_as_user(old_run_as_user)
161
161
  new_resource.run_as_password(old_run_as_password)
162
- }
162
+ end
163
163
 
164
164
  it "calls #grant_service_logon if the :run_as_user and :run_as_password attributes are present" do
165
165
  expect(Win32::Service).to receive(:start)
@@ -409,17 +409,17 @@ describe Chef::Provider::Service::Windows, "load_current_resource" do
409
409
 
410
410
  shared_context "testing private methods" do
411
411
 
412
- let(:private_methods) {
412
+ let(:private_methods) do
413
413
  described_class.private_instance_methods
414
- }
414
+ end
415
415
 
416
- before {
416
+ before do
417
417
  described_class.send(:public, *private_methods)
418
- }
418
+ end
419
419
 
420
- after {
420
+ after do
421
421
  described_class.send(:private, *private_methods)
422
- }
422
+ end
423
423
  end
424
424
 
425
425
  describe "grant_service_logon" do
@@ -58,8 +58,8 @@ describe Chef::Provider::SystemdUnit do
58
58
 
59
59
  let(:user_cmd_opts) do
60
60
  {
61
- "user" => "joe",
62
- "environment" => {
61
+ :user => "joe",
62
+ :environment => {
63
63
  "DBUS_SESSION_BUS_ADDRESS" => "unix:path=/run/user/1000/bus",
64
64
  },
65
65
  }