chef 14.14.29 → 14.15.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (367) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/README.md +18 -7
  4. data/Rakefile +7 -4
  5. data/chef.gemspec +1 -1
  6. data/lib/chef/knife/ssh.rb +6 -0
  7. data/lib/chef/provider/ifconfig.rb +14 -5
  8. data/lib/chef/provider/windows_task.rb +9 -5
  9. data/lib/chef/resource/kernel_module.rb +61 -0
  10. data/lib/chef/resource/windows_task.rb +4 -0
  11. data/lib/chef/version.rb +1 -1
  12. data/lib/chef/win32/system.rb +0 -0
  13. data/spec/data/cookbooks/openldap/metadata.rb +2 -2
  14. data/spec/data/metadata/quick_start/metadata.rb +2 -7
  15. data/spec/functional/audit/runner_spec.rb +1 -1
  16. data/spec/functional/dsl/reboot_pending_spec.rb +7 -25
  17. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -4
  18. data/spec/functional/file_content_management/deploy_strategies_spec.rb +21 -21
  19. data/spec/functional/knife/exec_spec.rb +1 -1
  20. data/spec/functional/knife/ssh_spec.rb +3 -3
  21. data/spec/functional/mixin/user_context_spec.rb +3 -1
  22. data/spec/functional/rebooter_spec.rb +1 -1
  23. data/spec/functional/resource/aix_service_spec.rb +1 -1
  24. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  25. data/spec/functional/resource/apt_package_spec.rb +1 -1
  26. data/spec/functional/resource/chocolatey_package_spec.rb +2 -2
  27. data/spec/functional/resource/cookbook_file_spec.rb +1 -3
  28. data/spec/functional/resource/cron_spec.rb +4 -3
  29. data/spec/functional/resource/dpkg_package_spec.rb +4 -4
  30. data/spec/functional/resource/dsc_resource_spec.rb +2 -1
  31. data/spec/functional/resource/dsc_script_spec.rb +16 -20
  32. data/spec/functional/resource/execute_spec.rb +2 -2
  33. data/spec/functional/resource/git_spec.rb +6 -6
  34. data/spec/functional/resource/group_spec.rb +8 -6
  35. data/spec/functional/resource/ifconfig_spec.rb +3 -5
  36. data/spec/functional/resource/link_spec.rb +2 -2
  37. data/spec/functional/resource/mount_spec.rb +3 -7
  38. data/spec/functional/resource/powershell_script_spec.rb +9 -8
  39. data/spec/functional/resource/reboot_spec.rb +1 -1
  40. data/spec/functional/resource/remote_file_spec.rb +2 -2
  41. data/spec/functional/resource/template_spec.rb +1 -1
  42. data/spec/functional/resource/user/windows_spec.rb +2 -2
  43. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  44. data/spec/functional/resource/windows_service_spec.rb +3 -3
  45. data/spec/functional/resource/windows_task_spec.rb +51 -0
  46. data/spec/functional/run_lock_spec.rb +10 -3
  47. data/spec/functional/shell_spec.rb +1 -1
  48. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  49. data/spec/functional/version_spec.rb +1 -1
  50. data/spec/functional/win32/security_spec.rb +12 -7
  51. data/spec/functional/win32/service_manager_spec.rb +1 -1
  52. data/spec/functional/win32/version_info_spec.rb +4 -4
  53. data/spec/integration/client/client_spec.rb +114 -132
  54. data/spec/integration/client/exit_code_spec.rb +8 -8
  55. data/spec/integration/client/ipv6_spec.rb +5 -5
  56. data/spec/integration/knife/chef_fs_data_store_spec.rb +38 -38
  57. data/spec/integration/knife/chef_repo_path_spec.rb +42 -42
  58. data/spec/integration/knife/chef_repository_file_system_spec.rb +9 -9
  59. data/spec/integration/knife/chefignore_spec.rb +13 -13
  60. data/spec/integration/knife/client_bulk_delete_spec.rb +8 -8
  61. data/spec/integration/knife/client_create_spec.rb +1 -1
  62. data/spec/integration/knife/client_delete_spec.rb +4 -4
  63. data/spec/integration/knife/client_key_delete_spec.rb +1 -1
  64. data/spec/integration/knife/client_key_list_spec.rb +1 -1
  65. data/spec/integration/knife/client_list_spec.rb +1 -1
  66. data/spec/integration/knife/common_options_spec.rb +1 -1
  67. data/spec/integration/knife/config_get_spec.rb +1 -1
  68. data/spec/integration/knife/config_list_profiles_spec.rb +2 -1
  69. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +3 -3
  70. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +3 -3
  71. data/spec/integration/knife/cookbook_download_spec.rb +4 -4
  72. data/spec/integration/knife/cookbook_list_spec.rb +2 -2
  73. data/spec/integration/knife/cookbook_show_spec.rb +3 -3
  74. data/spec/integration/knife/cookbook_upload_spec.rb +6 -6
  75. data/spec/integration/knife/data_bag_delete_spec.rb +4 -4
  76. data/spec/integration/knife/data_bag_from_file_spec.rb +7 -7
  77. data/spec/integration/knife/data_bag_list_spec.rb +1 -1
  78. data/spec/integration/knife/delete_spec.rb +37 -37
  79. data/spec/integration/knife/deps_spec.rb +23 -23
  80. data/spec/integration/knife/diff_spec.rb +23 -23
  81. data/spec/integration/knife/download_spec.rb +79 -79
  82. data/spec/integration/knife/environment_compare_spec.rb +3 -3
  83. data/spec/integration/knife/environment_from_file_spec.rb +6 -6
  84. data/spec/integration/knife/environment_list_spec.rb +1 -1
  85. data/spec/integration/knife/environment_show_spec.rb +4 -4
  86. data/spec/integration/knife/list_spec.rb +25 -25
  87. data/spec/integration/knife/node_bulk_delete_spec.rb +2 -2
  88. data/spec/integration/knife/node_delete_spec.rb +2 -2
  89. data/spec/integration/knife/node_environment_set_spec.rb +1 -1
  90. data/spec/integration/knife/node_from_file_spec.rb +2 -2
  91. data/spec/integration/knife/node_list_spec.rb +1 -1
  92. data/spec/integration/knife/raw_spec.rb +12 -12
  93. data/spec/integration/knife/redirection_spec.rb +1 -1
  94. data/spec/integration/knife/role_bulk_delete_spec.rb +2 -2
  95. data/spec/integration/knife/role_delete_spec.rb +2 -2
  96. data/spec/integration/knife/role_from_file_spec.rb +5 -5
  97. data/spec/integration/knife/role_list_spec.rb +1 -1
  98. data/spec/integration/knife/role_show_spec.rb +1 -1
  99. data/spec/integration/knife/show_spec.rb +10 -10
  100. data/spec/integration/knife/upload_spec.rb +85 -85
  101. data/spec/integration/recipes/accumulator_spec.rb +4 -4
  102. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +6 -6
  103. data/spec/integration/recipes/lwrp_spec.rb +6 -6
  104. data/spec/integration/recipes/notifies_spec.rb +45 -45
  105. data/spec/integration/recipes/notifying_block_spec.rb +4 -4
  106. data/spec/integration/recipes/provider_choice.rb +1 -2
  107. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  108. data/spec/integration/recipes/remote_directory.rb +2 -2
  109. data/spec/integration/recipes/resource_action_spec.rb +1 -1
  110. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +19 -19
  111. data/spec/integration/solo/solo_spec.rb +29 -29
  112. data/spec/scripts/ssl-serve.rb +1 -1
  113. data/spec/spec_helper.rb +11 -14
  114. data/spec/stress/win32/security_spec.rb +1 -1
  115. data/spec/support/lib/chef/resource/zen_follower.rb +1 -1
  116. data/spec/support/lib/chef/resource/zen_master.rb +1 -1
  117. data/spec/support/mock/platform.rb +2 -2
  118. data/spec/support/platform_helpers.rb +12 -3
  119. data/spec/support/platforms/win32/spec_service.rb +6 -10
  120. data/spec/support/shared/context/client.rb +2 -1
  121. data/spec/support/shared/functional/execute_resource.rb +4 -4
  122. data/spec/support/shared/functional/file_resource.rb +1 -3
  123. data/spec/support/shared/functional/http.rb +20 -44
  124. data/spec/support/shared/functional/securable_resource.rb +4 -8
  125. data/spec/support/shared/functional/win32_service.rb +1 -1
  126. data/spec/support/shared/functional/windows_script.rb +2 -1
  127. data/spec/support/shared/integration/app_server_support.rb +3 -4
  128. data/spec/support/shared/integration/integration_helper.rb +1 -0
  129. data/spec/support/shared/integration/knife_support.rb +5 -5
  130. data/spec/support/shared/unit/application_dot_d.rb +10 -4
  131. data/spec/support/shared/unit/file_system_support.rb +3 -2
  132. data/spec/support/shared/unit/platform_introspector.rb +12 -12
  133. data/spec/support/shared/unit/provider/file.rb +1 -1
  134. data/spec/support/shared/unit/script_resource.rb +1 -1
  135. data/spec/support/shared/unit/windows_script_resource.rb +1 -1
  136. data/spec/tiny_server.rb +1 -1
  137. data/spec/unit/api_client/registration_spec.rb +1 -1
  138. data/spec/unit/api_client_spec.rb +5 -5
  139. data/spec/unit/api_client_v1_spec.rb +6 -6
  140. data/spec/unit/application/client_spec.rb +8 -8
  141. data/spec/unit/application/exit_code_spec.rb +3 -2
  142. data/spec/unit/application/knife_spec.rb +1 -2
  143. data/spec/unit/audit/audit_event_proxy_spec.rb +14 -7
  144. data/spec/unit/audit/audit_reporter_spec.rb +20 -11
  145. data/spec/unit/audit/control_group_data_spec.rb +17 -12
  146. data/spec/unit/chef_fs/config_spec.rb +3 -3
  147. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  148. data/spec/unit/chef_fs/parallelizer.rb +1 -1
  149. data/spec/unit/client_spec.rb +3 -3
  150. data/spec/unit/config_fetcher_spec.rb +1 -1
  151. data/spec/unit/cookbook/metadata_spec.rb +13 -13
  152. data/spec/unit/cookbook/synchronizer_spec.rb +6 -6
  153. data/spec/unit/cookbook_loader_spec.rb +17 -17
  154. data/spec/unit/cookbook_manifest_spec.rb +9 -9
  155. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +1 -2
  156. data/spec/unit/cookbook_uploader_spec.rb +2 -2
  157. data/spec/unit/cookbook_version_file_specificity_spec.rb +9 -9
  158. data/spec/unit/cookbook_version_spec.rb +2 -2
  159. data/spec/unit/data_bag_item_spec.rb +7 -7
  160. data/spec/unit/data_bag_spec.rb +1 -1
  161. data/spec/unit/data_collector_spec.rb +23 -23
  162. data/spec/unit/decorator_spec.rb +2 -2
  163. data/spec/unit/deprecated_spec.rb +2 -2
  164. data/spec/unit/dsl/data_query_spec.rb +3 -2
  165. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  166. data/spec/unit/dsl/platform_introspection_spec.rb +2 -2
  167. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +2 -1
  168. data/spec/unit/encrypted_data_bag_item_spec.rb +2 -1
  169. data/spec/unit/environment_spec.rb +13 -13
  170. data/spec/unit/event_dispatch/dsl_spec.rb +1 -1
  171. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +3 -3
  172. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +2 -2
  173. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
  174. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  175. data/spec/unit/http/authenticator_spec.rb +4 -3
  176. data/spec/unit/http/json_input_spec.rb +1 -1
  177. data/spec/unit/http/socketless_chef_zero_client_spec.rb +15 -15
  178. data/spec/unit/key_spec.rb +8 -8
  179. data/spec/unit/knife/bootstrap_spec.rb +14 -10
  180. data/spec/unit/knife/client_bulk_delete_spec.rb +4 -4
  181. data/spec/unit/knife/configure_client_spec.rb +1 -1
  182. data/spec/unit/knife/configure_spec.rb +1 -1
  183. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +1 -1
  184. data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
  185. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  186. data/spec/unit/knife/cookbook_metadata_spec.rb +4 -4
  187. data/spec/unit/knife/cookbook_upload_spec.rb +7 -5
  188. data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
  189. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +2 -2
  190. data/spec/unit/knife/core/gem_glob_loader_spec.rb +4 -4
  191. data/spec/unit/knife/core/hashed_command_loader_spec.rb +4 -2
  192. data/spec/unit/knife/core/node_editor_spec.rb +12 -12
  193. data/spec/unit/knife/core/ui_spec.rb +11 -11
  194. data/spec/unit/knife/data_bag_from_file_spec.rb +2 -1
  195. data/spec/unit/knife/data_bag_show_spec.rb +2 -1
  196. data/spec/unit/knife/key_create_spec.rb +1 -1
  197. data/spec/unit/knife/key_delete_spec.rb +3 -3
  198. data/spec/unit/knife/key_edit_spec.rb +4 -4
  199. data/spec/unit/knife/key_list_spec.rb +1 -1
  200. data/spec/unit/knife/key_show_spec.rb +3 -3
  201. data/spec/unit/knife/node_bulk_delete_spec.rb +3 -3
  202. data/spec/unit/knife/node_delete_spec.rb +2 -2
  203. data/spec/unit/knife/node_edit_spec.rb +1 -1
  204. data/spec/unit/knife/node_environment_set_spec.rb +1 -1
  205. data/spec/unit/knife/node_from_file_spec.rb +1 -1
  206. data/spec/unit/knife/node_policy_set_spec.rb +1 -1
  207. data/spec/unit/knife/node_run_list_add_spec.rb +1 -1
  208. data/spec/unit/knife/node_run_list_remove_spec.rb +1 -1
  209. data/spec/unit/knife/node_run_list_set_spec.rb +1 -1
  210. data/spec/unit/knife/node_show_spec.rb +1 -1
  211. data/spec/unit/knife/raw_spec.rb +2 -2
  212. data/spec/unit/knife/role_bulk_delete_spec.rb +2 -2
  213. data/spec/unit/knife/role_create_spec.rb +1 -1
  214. data/spec/unit/knife/role_delete_spec.rb +1 -1
  215. data/spec/unit/knife/role_edit_spec.rb +1 -1
  216. data/spec/unit/knife/role_env_run_list_add_spec.rb +1 -1
  217. data/spec/unit/knife/role_env_run_list_clear_spec.rb +1 -1
  218. data/spec/unit/knife/role_env_run_list_remove_spec.rb +1 -1
  219. data/spec/unit/knife/role_env_run_list_replace_spec.rb +1 -1
  220. data/spec/unit/knife/role_env_run_list_set_spec.rb +1 -1
  221. data/spec/unit/knife/role_from_file_spec.rb +1 -1
  222. data/spec/unit/knife/role_run_list_add_spec.rb +1 -1
  223. data/spec/unit/knife/role_run_list_clear_spec.rb +1 -1
  224. data/spec/unit/knife/role_run_list_remove_spec.rb +1 -1
  225. data/spec/unit/knife/role_run_list_replace_spec.rb +1 -1
  226. data/spec/unit/knife/role_run_list_set_spec.rb +1 -1
  227. data/spec/unit/knife/ssh_spec.rb +27 -17
  228. data/spec/unit/knife/ssl_check_spec.rb +4 -4
  229. data/spec/unit/knife/ssl_fetch_spec.rb +5 -5
  230. data/spec/unit/knife/status_spec.rb +3 -2
  231. data/spec/unit/knife/supermarket_download_spec.rb +4 -4
  232. data/spec/unit/knife/supermarket_install_spec.rb +5 -4
  233. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  234. data/spec/unit/knife_spec.rb +34 -33
  235. data/spec/unit/lwrp_spec.rb +19 -19
  236. data/spec/unit/mixin/homebrew_user_spec.rb +1 -1
  237. data/spec/unit/mixin/params_validate_spec.rb +10 -10
  238. data/spec/unit/mixin/properties_spec.rb +4 -4
  239. data/spec/unit/mixin/shell_out_spec.rb +27 -27
  240. data/spec/unit/mixin/template_spec.rb +4 -8
  241. data/spec/unit/mixin/unformatter_spec.rb +1 -2
  242. data/spec/unit/mixin/user_context_spec.rb +1 -2
  243. data/spec/unit/mixin/which.rb +2 -0
  244. data/spec/unit/mixin/windows_architecture_helper_spec.rb +3 -3
  245. data/spec/unit/node/attribute_spec.rb +79 -79
  246. data/spec/unit/node/immutable_collections_spec.rb +50 -50
  247. data/spec/unit/node_spec.rb +16 -16
  248. data/spec/unit/org_spec.rb +3 -3
  249. data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
  250. data/spec/unit/property/state_spec.rb +26 -25
  251. data/spec/unit/property/validation_spec.rb +14 -13
  252. data/spec/unit/property_spec.rb +10 -9
  253. data/spec/unit/provider/apt_update_spec.rb +6 -6
  254. data/spec/unit/provider/cron_spec.rb +15 -15
  255. data/spec/unit/provider/dsc_resource_spec.rb +6 -3
  256. data/spec/unit/provider/dsc_script_spec.rb +1 -1
  257. data/spec/unit/provider/execute_spec.rb +5 -5
  258. data/spec/unit/provider/git_spec.rb +39 -39
  259. data/spec/unit/provider/group/dscl_spec.rb +3 -3
  260. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  261. data/spec/unit/provider/group_spec.rb +2 -3
  262. data/spec/unit/provider/ifconfig/aix_spec.rb +1 -1
  263. data/spec/unit/provider/ifconfig/debian_spec.rb +2 -2
  264. data/spec/unit/provider/ifconfig_spec.rb +45 -16
  265. data/spec/unit/provider/launchd_spec.rb +23 -15
  266. data/spec/unit/provider/link_spec.rb +22 -11
  267. data/spec/unit/provider/mount/aix_spec.rb +6 -6
  268. data/spec/unit/provider/mount/mount_spec.rb +31 -31
  269. data/spec/unit/provider/mount/solaris_spec.rb +11 -11
  270. data/spec/unit/provider/ohai_spec.rb +1 -1
  271. data/spec/unit/provider/osx_profile_spec.rb +5 -7
  272. data/spec/unit/provider/package/apt_spec.rb +5 -5
  273. data/spec/unit/provider/package/bff_spec.rb +1 -1
  274. data/spec/unit/provider/package/cab_spec.rb +1 -1
  275. data/spec/unit/provider/package/chocolatey_spec.rb +8 -8
  276. data/spec/unit/provider/package/freebsd/pkg_spec.rb +1 -1
  277. data/spec/unit/provider/package/ips_spec.rb +6 -6
  278. data/spec/unit/provider/package/macports_spec.rb +1 -1
  279. data/spec/unit/provider/package/msu_spec.rb +1 -1
  280. data/spec/unit/provider/package/openbsd_spec.rb +15 -11
  281. data/spec/unit/provider/package/pacman_spec.rb +3 -3
  282. data/spec/unit/provider/package/paludis_spec.rb +4 -4
  283. data/spec/unit/provider/package/portage_spec.rb +1 -1
  284. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  285. data/spec/unit/provider/package/smartos_spec.rb +3 -3
  286. data/spec/unit/provider/package/solaris_spec.rb +1 -1
  287. data/spec/unit/provider/package/windows/exe_spec.rb +9 -9
  288. data/spec/unit/provider/package/windows/msi_spec.rb +7 -7
  289. data/spec/unit/provider/package/windows_spec.rb +2 -1
  290. data/spec/unit/provider/package/yum/yum_cache_spec.rb +1 -1
  291. data/spec/unit/provider/package/zypper_spec.rb +4 -4
  292. data/spec/unit/provider/package_spec.rb +1 -1
  293. data/spec/unit/provider/powershell_script_spec.rb +7 -7
  294. data/spec/unit/provider/registry_key_spec.rb +1 -1
  295. data/spec/unit/provider/remote_directory_spec.rb +6 -6
  296. data/spec/unit/provider/route_spec.rb +11 -11
  297. data/spec/unit/provider/service/arch_service_spec.rb +13 -13
  298. data/spec/unit/provider/service/debian_service_spec.rb +2 -1
  299. data/spec/unit/provider/service/freebsd_service_spec.rb +28 -24
  300. data/spec/unit/provider/service/gentoo_service_spec.rb +2 -2
  301. data/spec/unit/provider/service/init_service_spec.rb +11 -11
  302. data/spec/unit/provider/service/invokercd_service_spec.rb +11 -11
  303. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  304. data/spec/unit/provider/service/openbsd_service_spec.rb +15 -11
  305. data/spec/unit/provider/service/simple_service_spec.rb +7 -7
  306. data/spec/unit/provider/service/upstart_service_spec.rb +14 -14
  307. data/spec/unit/provider/service/windows_spec.rb +53 -35
  308. data/spec/unit/provider/subversion_spec.rb +8 -4
  309. data/spec/unit/provider/systemd_unit_spec.rb +142 -142
  310. data/spec/unit/provider/template/content_spec.rb +29 -29
  311. data/spec/unit/provider/windows_task_spec.rb +1 -1
  312. data/spec/unit/provider_resolver_spec.rb +75 -75
  313. data/spec/unit/provider_spec.rb +2 -4
  314. data/spec/unit/recipe_spec.rb +4 -4
  315. data/spec/unit/resource/batch_spec.rb +1 -1
  316. data/spec/unit/resource/chef_gem_spec.rb +1 -1
  317. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  318. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  319. data/spec/unit/resource/directory_spec.rb +1 -1
  320. data/spec/unit/resource/dnf_package_spec.rb +1 -1
  321. data/spec/unit/resource/dsc_resource_spec.rb +1 -1
  322. data/spec/unit/resource/file/verification_spec.rb +1 -2
  323. data/spec/unit/resource/file_spec.rb +1 -1
  324. data/spec/unit/resource/group_spec.rb +1 -1
  325. data/spec/unit/resource/link_spec.rb +1 -1
  326. data/spec/unit/resource/osx_profile_spec.rb +2 -1
  327. data/spec/unit/resource/powershell_script_spec.rb +12 -7
  328. data/spec/unit/resource/registry_key_spec.rb +3 -3
  329. data/spec/unit/resource/rhsm_subscription_spec.rb +1 -1
  330. data/spec/unit/resource/service_spec.rb +1 -1
  331. data/spec/unit/resource/template_spec.rb +2 -2
  332. data/spec/unit/resource/windows_env_spec.rb +1 -1
  333. data/spec/unit/resource/windows_service_spec.rb +5 -5
  334. data/spec/unit/resource/windows_task_spec.rb +6 -2
  335. data/spec/unit/resource/yum_package_spec.rb +1 -1
  336. data/spec/unit/resource_collection/resource_list_spec.rb +1 -1
  337. data/spec/unit/resource_collection/resource_set_spec.rb +7 -7
  338. data/spec/unit/resource_collection/stepable_iterator_spec.rb +2 -2
  339. data/spec/unit/resource_collection_spec.rb +4 -4
  340. data/spec/unit/resource_definition_spec.rb +2 -2
  341. data/spec/unit/resource_inspector_spec.rb +1 -1
  342. data/spec/unit/resource_reporter_spec.rb +4 -4
  343. data/spec/unit/resource_spec.rb +22 -22
  344. data/spec/unit/role_spec.rb +3 -3
  345. data/spec/unit/run_context/cookbook_compiler_spec.rb +23 -23
  346. data/spec/unit/run_list/run_list_expansion_spec.rb +9 -6
  347. data/spec/unit/run_list_spec.rb +1 -1
  348. data/spec/unit/runner_spec.rb +3 -3
  349. data/spec/unit/search/query_spec.rb +3 -2
  350. data/spec/unit/shell/model_wrapper_spec.rb +1 -1
  351. data/spec/unit/shell/shell_session_spec.rb +8 -11
  352. data/spec/unit/shell_spec.rb +1 -2
  353. data/spec/unit/user_spec.rb +4 -4
  354. data/spec/unit/user_v1_spec.rb +3 -3
  355. data/spec/unit/util/backup_spec.rb +1 -1
  356. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +13 -13
  357. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +3 -3
  358. data/spec/unit/util/editor_spec.rb +1 -1
  359. data/spec/unit/util/powershell/ps_credential_spec.rb +3 -2
  360. data/spec/unit/util/threaded_job_queue_spec.rb +2 -2
  361. data/spec/unit/version_class_spec.rb +4 -4
  362. data/spec/unit/win32/registry_spec.rb +5 -5
  363. data/spec/unit/win32/security_spec.rb +2 -1
  364. data/tasks/announce.rb +4 -11
  365. metadata +10 -6
  366. data/tasks/maintainers.rb +0 -211
  367. data/tasks/templates/prerelease.md.erb +0 -35
@@ -19,7 +19,7 @@ def platform_mock(platform = :unix)
19
19
  mock_constants({ "RUBY_PLATFORM" => (platform == :windows ? "i386-mingw32" : "x86_64-darwin11.2.0"),
20
20
  "File::PATH_SEPARATOR" => (platform == :windows ? ";" : ":"),
21
21
  "File::ALT_SEPARATOR" => (platform == :windows ? "\\" : nil) }) do
22
- yield
23
- end
22
+ yield
23
+ end
24
24
  end
25
25
  end
@@ -46,6 +46,7 @@ require "wmi-lite/wmi" if windows?
46
46
 
47
47
  def windows_domain_joined?
48
48
  return false unless windows?
49
+
49
50
  wmi = WmiLite::Wmi.new
50
51
  computer_system = wmi.first_of("Win32_ComputerSystem")
51
52
  computer_system["partofdomain"]
@@ -54,19 +55,20 @@ end
54
55
  def windows_2008r2_or_later?
55
56
  return false unless windows?
56
57
  return false unless host_version
57
- components = host_version.split(".").map do |component|
58
- component.to_i
59
- end
58
+
59
+ components = host_version.split(".").map(&:to_i)
60
60
  components.length >= 2 && components[0] >= 6 && components[1] >= 1
61
61
  end
62
62
 
63
63
  def windows_2012r2?
64
64
  return false unless windows?
65
+
65
66
  (host_version && host_version.start_with?("6.3"))
66
67
  end
67
68
 
68
69
  def windows_gte_10?
69
70
  return false unless windows?
71
+
70
72
  Gem::Requirement.new(">= 10").satisfied_by?(Gem::Version.new(host_version))
71
73
  end
72
74
 
@@ -80,6 +82,7 @@ end
80
82
 
81
83
  def windows_powershell_dsc?
82
84
  return false unless windows?
85
+
83
86
  supports_dsc = false
84
87
  begin
85
88
  wmi = WmiLite::Wmi.new("root/microsoft/windows/desiredstateconfiguration")
@@ -97,6 +100,7 @@ end
97
100
 
98
101
  def windows_user_right?(right)
99
102
  return false unless windows?
103
+
100
104
  require "chef/win32/security"
101
105
  Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
102
106
  end
@@ -238,6 +242,7 @@ end
238
242
 
239
243
  def root?
240
244
  return false if windows?
245
+
241
246
  Process.euid == 0
242
247
  end
243
248
 
@@ -270,6 +275,10 @@ rescue SocketError
270
275
  false
271
276
  end
272
277
 
278
+ def ifconfig?
279
+ which("ifconfig")
280
+ end
281
+
273
282
  def choco_installed?
274
283
  result = ShellHelpers.powershell_out("choco --version")
275
284
  result.stderr.empty? ? true : false
@@ -20,12 +20,12 @@ require "win32/daemon"
20
20
 
21
21
  class SpecService < ::Win32::Daemon
22
22
  def service_init
23
- @test_service_file = "#{ENV['TMP']}/spec_service_file"
23
+ @test_service_file = "#{ENV["TMP"]}/spec_service_file"
24
24
  end
25
25
 
26
26
  def service_main(*startup_parameters)
27
27
  while running?
28
- if !File.exists?(@test_service_file)
28
+ unless File.exists?(@test_service_file)
29
29
  File.open(@test_service_file, "wb") do |f|
30
30
  f.write("This file is created by SpecService")
31
31
  end
@@ -39,17 +39,13 @@ class SpecService < ::Win32::Daemon
39
39
  # Control Signal Callback Methods
40
40
  ################################################################################
41
41
 
42
- def service_stop
43
- end
42
+ def service_stop; end
44
43
 
45
- def service_pause
46
- end
44
+ def service_pause; end
47
45
 
48
- def service_resume
49
- end
46
+ def service_resume; end
50
47
 
51
- def service_shutdown
52
- end
48
+ def service_shutdown; end
53
49
  end
54
50
 
55
51
  # To run this file as a service, it must be called as a script from within
@@ -251,7 +251,8 @@ end
251
251
  shared_context "audit phase completed with failed controls" do
252
252
  let(:audit_runner) do
253
253
  instance_double("Chef::Audit::Runner", failed?: true,
254
- num_failed: 1, num_total: 3) end
254
+ num_failed: 1, num_total: 3)
255
+ end
255
256
 
256
257
  let(:audit_error) do
257
258
  err = Chef::Exceptions::AuditsFailed.new(audit_runner.num_failed, audit_runner.num_total)
@@ -21,7 +21,7 @@ shared_context "a non-admin Windows user" do
21
21
 
22
22
  let(:windows_nonadmin_user_domain) { ENV["COMPUTERNAME"] }
23
23
  let(:windows_nonadmin_user_qualified) { "#{windows_nonadmin_user_domain}\\#{windows_nonadmin_user}" }
24
- let(:temp_profile_path) { "#{ENV['USERPROFILE']}\\..\\cheftesttempuser" }
24
+ let(:temp_profile_path) { "#{ENV["USERPROFILE"]}\\..\\cheftesttempuser" }
25
25
  before do
26
26
  shell_out!("net.exe user /delete #{windows_nonadmin_user}", returns: [0, 2])
27
27
 
@@ -40,7 +40,7 @@ end
40
40
  shared_context "alternate user identity" do
41
41
  let(:windows_alternate_user) { "chef%02d%02d%02d" % [Time.now.year % 100, Time.now.month, Time.now.day] }
42
42
  let(:windows_alternate_user_password) { "lj28;fx3T!x,2" }
43
- let(:windows_alternate_user_qualified) { "#{ENV['COMPUTERNAME']}\\#{windows_alternate_user}" }
43
+ let(:windows_alternate_user_qualified) { "#{ENV["COMPUTERNAME"]}\\#{windows_alternate_user}" }
44
44
 
45
45
  let(:windows_nonadmin_user) { windows_alternate_user }
46
46
  let(:windows_nonadmin_user_password) { windows_alternate_user_password }
@@ -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(/\//, '\\')}\" /grant \"authenticated users:(F)\"")
61
+ shell_out!("icacls \"#{script_output_dir.gsub(%r{/}, '\\')}\" /grant \"authenticated users:(F)\"")
62
62
  end
63
63
 
64
64
  after do
@@ -73,7 +73,7 @@ shared_examples_for "an execute resource that supports alternate user identity"
73
73
  include_context "a command that can be executed as an alternate user"
74
74
 
75
75
  let(:windows_current_user) { ENV["USERNAME"] }
76
- let(:windows_current_user_qualified) { "#{ENV['USERDOMAIN'] || ENV['COMPUTERNAME']}\\#{windows_current_user}" }
76
+ let(:windows_current_user_qualified) { "#{ENV["USERDOMAIN"] || ENV["COMPUTERNAME"]}\\#{windows_current_user}" }
77
77
  let(:resource_identity_command) { "powershell.exe -noprofile -command \"import-module microsoft.powershell.utility;([Security.Principal.WindowsPrincipal]([Security.Principal.WindowsIdentity]::GetCurrent())).identity.name | out-file -encoding ASCII '#{script_output_path}'\"" }
78
78
 
79
79
  let(:execute_resource) do
@@ -392,9 +392,7 @@ shared_examples_for "a configured file resource" do
392
392
  end
393
393
 
394
394
  def binread(file)
395
- content = File.open(file, "rb") do |f|
396
- f.read
397
- end
395
+ content = File.open(file, "rb", &:read)
398
396
  content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
399
397
  content
400
398
  end
@@ -30,9 +30,7 @@ module ChefHTTPShared
30
30
  end
31
31
 
32
32
  def binread(file)
33
- content = File.open(file, "rb") do |f|
34
- f.read
35
- end
33
+ content = File.open(file, "rb", &:read)
36
34
  content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
37
35
  content
38
36
  end
@@ -53,25 +51,19 @@ module ChefHTTPShared
53
51
  # just a normal file
54
52
  # (expected_content should be uncompressed)
55
53
  @api.get("/nyan_cat.png", 200) do
56
- File.open(nyan_uncompressed_filename, "rb") do |f|
57
- f.read
58
- end
54
+ File.open(nyan_uncompressed_filename, "rb", &:read)
59
55
  end
60
56
 
61
57
  # this ends in .gz, we do not uncompress it and drop it on the filesystem as a .gz file (the internet often lies)
62
58
  # (expected_content should be compressed)
63
59
  @api.get("/nyan_cat.png.gz", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
64
- File.open(nyan_compressed_filename, "rb") do |f|
65
- f.read
66
- end
60
+ File.open(nyan_compressed_filename, "rb", &:read)
67
61
  end
68
62
 
69
63
  # this is an uncompressed file that was compressed by some mod_gzip-ish webserver thingy, so we will expand it
70
64
  # (expected_content should be uncompressed)
71
65
  @api.get("/nyan_cat_compressed.png", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
72
- File.open(nyan_compressed_filename, "rb") do |f|
73
- f.read
74
- end
66
+ File.open(nyan_compressed_filename, "rb", &:read)
75
67
  end
76
68
 
77
69
  #
@@ -82,25 +74,19 @@ module ChefHTTPShared
82
74
  @api.get("/nyan_cat_content_length.png", 200, nil,
83
75
  {
84
76
  "Content-Length" => nyan_uncompressed_size.to_s,
85
- }
86
- ) do
87
- File.open(nyan_uncompressed_filename, "rb") do |f|
88
- f.read
77
+ }) do
78
+ File.open(nyan_uncompressed_filename, "rb", &:read)
89
79
  end
90
- end
91
80
 
92
81
  # (expected_content should be uncompressed)
93
82
  @api.get("/nyan_cat_content_length_compressed.png", 200, nil,
94
83
  {
95
- "Content-Length" => nyan_compressed_size.to_s,
96
- "Content-Type" => "application/gzip",
84
+ "Content-Length" => nyan_compressed_size.to_s,
85
+ "Content-Type" => "application/gzip",
97
86
  "Content-Encoding" => "gzip",
98
- }
99
- ) do
100
- File.open(nyan_compressed_filename, "rb") do |f|
101
- f.read
87
+ }) do
88
+ File.open(nyan_compressed_filename, "rb", &:read)
102
89
  end
103
- end
104
90
 
105
91
  #
106
92
  # endpoints that simulate truncated downloads (bad content-length header)
@@ -110,25 +96,19 @@ module ChefHTTPShared
110
96
  @api.get("/nyan_cat_truncated.png", 200, nil,
111
97
  {
112
98
  "Content-Length" => (nyan_uncompressed_size + 1).to_s,
113
- }
114
- ) do
115
- File.open(nyan_uncompressed_filename, "rb") do |f|
116
- f.read
99
+ }) do
100
+ File.open(nyan_uncompressed_filename, "rb", &:read)
117
101
  end
118
- end
119
102
 
120
103
  # (expected_content should be uncompressed)
121
104
  @api.get("/nyan_cat_truncated_compressed.png", 200, nil,
122
105
  {
123
- "Content-Length" => (nyan_compressed_size + 1).to_s,
124
- "Content-Type" => "application/gzip",
106
+ "Content-Length" => (nyan_compressed_size + 1).to_s,
107
+ "Content-Type" => "application/gzip",
125
108
  "Content-Encoding" => "gzip",
126
- }
127
- ) do
128
- File.open(nyan_compressed_filename, "rb") do |f|
129
- f.read
109
+ }) do
110
+ File.open(nyan_compressed_filename, "rb", &:read)
130
111
  end
131
- end
132
112
 
133
113
  #
134
114
  # in the presence of a transfer-encoding header, we must ignore the content-length (this bad content-length should work)
@@ -137,14 +117,11 @@ module ChefHTTPShared
137
117
  # (expected_content should be uncompressed)
138
118
  @api.get("/nyan_cat_transfer_encoding.png", 200, nil,
139
119
  {
140
- "Content-Length" => (nyan_uncompressed_size + 1).to_s,
120
+ "Content-Length" => (nyan_uncompressed_size + 1).to_s,
141
121
  "Transfer-Encoding" => "anything",
142
- }
143
- ) do
144
- File.open(nyan_uncompressed_filename, "rb") do |f|
145
- f.read
122
+ }) do
123
+ File.open(nyan_uncompressed_filename, "rb", &:read)
146
124
  end
147
- end
148
125
 
149
126
  #
150
127
  # 403 with a Content-Length
@@ -152,8 +129,7 @@ module ChefHTTPShared
152
129
  @api.get("/forbidden", 403, "Forbidden",
153
130
  {
154
131
  "Content-Length" => "Forbidden".bytesize.to_s,
155
- }
156
- )
132
+ })
157
133
 
158
134
  @api.post("/posty", 200, "Hi!")
159
135
 
@@ -89,7 +89,7 @@ shared_context "use Windows permissions", :windows_only do
89
89
  end
90
90
 
91
91
  def explicit_aces
92
- descriptor.dacl.select { |ace| ace.explicit? }
92
+ descriptor.dacl.select(&:explicit?)
93
93
  end
94
94
 
95
95
  def extract_ace_properties(aces)
@@ -314,7 +314,7 @@ shared_examples_for "a securable resource without existing target" do
314
314
  end
315
315
 
316
316
  it "sets owner when owner is specified with a \\" do
317
- resource.owner "#{ENV['COMPUTERNAME']}\\Guest"
317
+ resource.owner "#{ENV["COMPUTERNAME"]}\\Guest"
318
318
  resource.run_action(:create)
319
319
  expect(descriptor.owner).to eq(SID.Guest)
320
320
  end
@@ -560,16 +560,12 @@ shared_examples_for "a securable resource without existing target" do
560
560
 
561
561
  # On certain flavors of Windows the default list of ACLs sometimes includes
562
562
  # non-inherited ACLs. Filter them out here.
563
- parent_inherited_acls = parent_acls.dacl.collect do |ace|
564
- ace.inherited?
565
- end
563
+ parent_inherited_acls = parent_acls.dacl.collect(&:inherited?)
566
564
 
567
565
  resource.run_action(:create)
568
566
 
569
567
  # Similarly filter out the non-inherited ACLs
570
- resource_inherited_acls = descriptor.dacl.collect do |ace|
571
- ace.inherited?
572
- end
568
+ resource_inherited_acls = descriptor.dacl.collect(&:inherited?)
573
569
 
574
570
  expect(resource_inherited_acls).to eq(parent_inherited_acls)
575
571
  end
@@ -52,6 +52,6 @@ shared_context "using Win32::Service" do
52
52
  # for the file it creates under SYSTEM temp directory
53
53
 
54
54
  let(:test_service_file) do
55
- "#{ENV['SystemDrive']}\\windows\\temp\\spec_service_file"
55
+ "#{ENV["SystemDrive"]}\\windows\\temp\\spec_service_file"
56
56
  end
57
57
  end
@@ -114,7 +114,8 @@ shared_context Chef::Resource::WindowsScript do
114
114
  resource.only_if resource_guard_command, architecture: guard_architecture
115
115
  expect { resource.run_action(:run) }.to raise_error(
116
116
  Chef::Exceptions::Win32ArchitectureIncorrect,
117
- /cannot execute script with requested architecture 'i386' on Windows Nano Server/)
117
+ /cannot execute script with requested architecture 'i386' on Windows Nano Server/
118
+ )
118
119
  end
119
120
  end
120
121
  end
@@ -27,10 +27,9 @@ module AppServerSupport
27
27
  Rack::Handler::WEBrick.run(app,
28
28
  Port: 9018,
29
29
  AccessLog: [],
30
- Logger: WEBrick::Log.new(StringIO.new, 7)
31
- ) do |found_server|
32
- server = found_server
33
- end
30
+ Logger: WEBrick::Log.new(StringIO.new, 7)) do |found_server|
31
+ server = found_server
32
+ end
34
33
  end
35
34
  Timeout.timeout(30) do
36
35
  sleep(0.01) until server && server.status == :Running
@@ -111,6 +111,7 @@ module IntegrationSupport
111
111
  RSpec.shared_context "with a chef repo" do
112
112
  before :each do
113
113
  raise "Can only create one directory per test" if @repository_dir
114
+
114
115
  @repository_dir = Dir.mktmpdir("chef_repo")
115
116
  Chef::Config.chef_repo_path = @repository_dir
116
117
  %w{client cookbook data_bag environment node role user}.each do |object_name|
@@ -58,7 +58,7 @@ module KnifeSupport
58
58
  old_loggers = Chef::Log.loggers
59
59
  old_log_level = Chef::Log.level
60
60
  begin
61
- puts "knife: #{args.join(' ')}" if DEBUG
61
+ puts "knife: #{args.join(" ")}" if DEBUG
62
62
  subcommand_class = Chef::Knife.subcommand_class_from(args)
63
63
  subcommand_class.options = Chef::Application::Knife.options.merge(subcommand_class.options)
64
64
  subcommand_class.load_deps
@@ -150,7 +150,7 @@ module KnifeSupport
150
150
  expected[:stderr] = arg
151
151
  end
152
152
  end
153
- expected[:exit_code] = 1 if !expected[:exit_code]
153
+ expected[:exit_code] = 1 unless expected[:exit_code]
154
154
  should_result_in(expected)
155
155
  end
156
156
 
@@ -169,9 +169,9 @@ module KnifeSupport
169
169
  private
170
170
 
171
171
  def should_result_in(expected)
172
- expected[:stdout] = "" if !expected[:stdout]
173
- expected[:stderr] = "" if !expected[:stderr]
174
- expected[:exit_code] = 0 if !expected[:exit_code]
172
+ expected[:stdout] = "" unless expected[:stdout]
173
+ expected[:stderr] = "" unless expected[:stderr]
174
+ expected[:exit_code] = 0 unless expected[:exit_code]
175
175
  # TODO make this go away
176
176
  stderr_actual = @stderr.sub(/^WARNING: No knife configuration file found\n/, "")
177
177
 
@@ -33,13 +33,15 @@ shared_examples_for "an application that loads a dot d" do
33
33
  # make sure that we are correctly globbing.
34
34
  let(:client_d_dir) do
35
35
  Chef::Util::PathHelper.cleanpath(
36
- File.join(File.dirname(__FILE__), "../../../data/client.d_00")) end
36
+ File.join(File.dirname(__FILE__), "../../../data/client.d_00")
37
+ )
38
+ end
37
39
 
38
40
  it "loads the configuration in order" do
39
41
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_return("foo 0")
40
42
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_return("bar 0")
41
43
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_return("strings 0")
42
- allow(app).to receive(:apply_config).with(anything(), Chef::Config.platform_specific_path("/etc/chef/client.rb")).and_call_original.ordered
44
+ allow(app).to receive(:apply_config).with(anything, Chef::Config.platform_specific_path("/etc/chef/client.rb")).and_call_original.ordered
43
45
  expect(app).to receive(:apply_config).with("foo 0", Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_call_original.ordered
44
46
  expect(app).to receive(:apply_config).with("bar 0", Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_call_original.ordered
45
47
  expect(app).to receive(:apply_config).with("strings 0", Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_call_original.ordered
@@ -50,7 +52,9 @@ shared_examples_for "an application that loads a dot d" do
50
52
  context "when client_d_dir is set to a directory without configuration" do
51
53
  let(:client_d_dir) do
52
54
  Chef::Util::PathHelper.cleanpath(
53
- File.join(File.dirname(__FILE__), "../../data/client.d_01")) end
55
+ File.join(File.dirname(__FILE__), "../../data/client.d_01")
56
+ )
57
+ end
54
58
 
55
59
  # client.d_01 has a nested folder with a rb file that if
56
60
  # executed, would raise an exception. If it is executed,
@@ -66,7 +70,9 @@ shared_examples_for "an application that loads a dot d" do
66
70
  # foo.rb as a directory should be ignored
67
71
  let(:client_d_dir) do
68
72
  Chef::Util::PathHelper.cleanpath(
69
- File.join(File.dirname(__FILE__), "../../data/client.d_02")) end
73
+ File.join(File.dirname(__FILE__), "../../data/client.d_02")
74
+ )
75
+ end
70
76
 
71
77
  it "does not raise an exception" do
72
78
  expect { app.reconfigure }.not_to raise_error