chef 16.2.44-universal-mingw32 → 16.4.35-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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  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 +6 -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/cookbook_file.rb +2 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  25. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  27. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  28. data/lib/chef/client.rb +14 -14
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +15 -29
  32. data/lib/chef/data_bag.rb +1 -2
  33. data/lib/chef/data_collector/run_end_message.rb +11 -1
  34. data/lib/chef/deprecated.rb +8 -0
  35. data/lib/chef/digester.rb +3 -2
  36. data/lib/chef/dsl/platform_introspection.rb +9 -7
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  38. data/lib/chef/environment.rb +3 -4
  39. data/lib/chef/exceptions.rb +4 -1
  40. data/lib/chef/file_access_control/windows.rb +2 -2
  41. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  42. data/lib/chef/file_content_management/tempfile.rb +9 -9
  43. data/lib/chef/handler.rb +2 -0
  44. data/lib/chef/http.rb +12 -12
  45. data/lib/chef/http/authenticator.rb +3 -1
  46. data/lib/chef/json_compat.rb +1 -1
  47. data/lib/chef/knife.rb +4 -4
  48. data/lib/chef/knife/bootstrap.rb +18 -15
  49. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  50. data/lib/chef/knife/config_get.rb +1 -0
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/config_use_profile.rb +15 -5
  53. data/lib/chef/knife/configure.rb +1 -1
  54. data/lib/chef/knife/cookbook_download.rb +1 -1
  55. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  56. data/lib/chef/knife/cookbook_upload.rb +29 -37
  57. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  61. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  62. data/lib/chef/knife/core/ui.rb +8 -2
  63. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  64. data/lib/chef/knife/delete.rb +15 -15
  65. data/lib/chef/knife/exec.rb +2 -2
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/ssh.rb +11 -7
  68. data/lib/chef/knife/xargs.rb +19 -19
  69. data/lib/chef/knife/yaml_convert.rb +1 -1
  70. data/lib/chef/log.rb +7 -2
  71. data/lib/chef/mixin/checksum.rb +0 -1
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/lib/chef/mixin/deep_merge.rb +35 -6
  74. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  75. data/lib/chef/mixin/openssl_helper.rb +30 -6
  76. data/lib/chef/mixin/path_sanity.rb +5 -4
  77. data/lib/chef/mixin/shell_out.rb +4 -188
  78. data/lib/chef/mixin/template.rb +1 -0
  79. data/lib/chef/mixin/which.rb +6 -3
  80. data/lib/chef/mixins.rb +1 -0
  81. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  82. data/lib/chef/node.rb +36 -12
  83. data/lib/chef/node/attribute.rb +2 -4
  84. data/lib/chef/node_map.rb +21 -18
  85. data/lib/chef/platform/service_helpers.rb +31 -28
  86. data/lib/chef/property.rb +1 -1
  87. data/lib/chef/provider/cron/unix.rb +0 -2
  88. data/lib/chef/provider/git.rb +17 -9
  89. data/lib/chef/provider/group.rb +0 -2
  90. data/lib/chef/provider/group/suse.rb +5 -5
  91. data/lib/chef/provider/ifconfig.rb +1 -4
  92. data/lib/chef/provider/mount.rb +0 -2
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/package.rb +0 -2
  95. data/lib/chef/provider/package/rubygems.rb +1 -1
  96. data/lib/chef/provider/package/snap.rb +3 -4
  97. data/lib/chef/provider/package/windows.rb +9 -4
  98. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  99. data/lib/chef/provider/package/zypper.rb +0 -1
  100. data/lib/chef/provider/powershell_script.rb +21 -5
  101. data/lib/chef/provider/route.rb +1 -1
  102. data/lib/chef/provider/service.rb +2 -2
  103. data/lib/chef/provider/service/arch.rb +1 -1
  104. data/lib/chef/provider/service/debian.rb +1 -1
  105. data/lib/chef/provider/service/gentoo.rb +2 -2
  106. data/lib/chef/provider/service/macosx.rb +2 -2
  107. data/lib/chef/provider/service/openbsd.rb +1 -4
  108. data/lib/chef/provider/service/redhat.rb +2 -2
  109. data/lib/chef/provider/service/upstart.rb +1 -1
  110. data/lib/chef/provider/service/windows.rb +10 -10
  111. data/lib/chef/provider/systemd_unit.rb +0 -2
  112. data/lib/chef/provider/template/content.rb +1 -0
  113. data/lib/chef/provider/user/dscl.rb +2 -2
  114. data/lib/chef/provider/user/mac.rb +9 -9
  115. data/lib/chef/provider/windows_task.rb +0 -3
  116. data/lib/chef/provider/yum_repository.rb +1 -1
  117. data/lib/chef/provider/zypper_repository.rb +1 -2
  118. data/lib/chef/providers.rb +0 -1
  119. data/lib/chef/recipe.rb +1 -1
  120. data/lib/chef/resource.rb +9 -11
  121. data/lib/chef/resource/alternatives.rb +1 -1
  122. data/lib/chef/resource/apt_repository.rb +1 -10
  123. data/lib/chef/resource/build_essential.rb +2 -2
  124. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  125. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  126. data/lib/chef/resource/chef_gem.rb +57 -21
  127. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  128. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  129. data/lib/chef/resource/cron/cron_d.rb +1 -1
  130. data/lib/chef/resource/cron_access.rb +2 -2
  131. data/lib/chef/resource/dmg_package.rb +2 -2
  132. data/lib/chef/resource/execute.rb +4 -5
  133. data/lib/chef/resource/gem_package.rb +35 -2
  134. data/lib/chef/resource/homebrew_update.rb +2 -2
  135. data/lib/chef/resource/hostname.rb +18 -18
  136. data/lib/chef/resource/launchd.rb +1 -1
  137. data/lib/chef/resource/lwrp_base.rb +1 -0
  138. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  139. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  140. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  141. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  142. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  143. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  144. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  145. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  146. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  147. data/lib/chef/resource/osx_profile.rb +227 -5
  148. data/lib/chef/resource/powershell_package_source.rb +1 -1
  149. data/lib/chef/resource/powershell_script.rb +24 -30
  150. data/lib/chef/resource/service.rb +2 -2
  151. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  152. data/lib/chef/resource/sudo.rb +31 -4
  153. data/lib/chef/resource/swap_file.rb +17 -0
  154. data/lib/chef/resource/sysctl.rb +5 -5
  155. data/lib/chef/resource/timezone.rb +15 -0
  156. data/lib/chef/resource/user_ulimit.rb +1 -1
  157. data/lib/chef/resource/windows_ad_join.rb +2 -0
  158. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  159. data/lib/chef/resource/windows_auto_run.rb +2 -0
  160. data/lib/chef/resource/windows_certificate.rb +2 -0
  161. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  162. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  163. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  164. data/lib/chef/resource/windows_dns_record.rb +25 -5
  165. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  166. data/lib/chef/resource/windows_feature.rb +2 -0
  167. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  168. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  169. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  170. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  171. data/lib/chef/resource/windows_font.rb +3 -1
  172. data/lib/chef/resource/windows_pagefile.rb +4 -0
  173. data/lib/chef/resource/windows_printer.rb +17 -18
  174. data/lib/chef/resource/windows_printer_port.rb +14 -13
  175. data/lib/chef/resource/windows_security_policy.rb +52 -21
  176. data/lib/chef/resource/windows_share.rb +5 -3
  177. data/lib/chef/resource/windows_shortcut.rb +2 -0
  178. data/lib/chef/resource/windows_uac.rb +2 -0
  179. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  180. data/lib/chef/resource/windows_workgroup.rb +2 -3
  181. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  182. data/lib/chef/resource_inspector.rb +7 -1
  183. data/lib/chef/resources.rb +1 -0
  184. data/lib/chef/role.rb +3 -4
  185. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  186. data/lib/chef/run_status.rb +2 -6
  187. data/lib/chef/server_api_versions.rb +4 -0
  188. data/lib/chef/shell.rb +1 -1
  189. data/lib/chef/shell/shell_session.rb +2 -0
  190. data/lib/chef/util/backup.rb +1 -1
  191. data/lib/chef/util/diff.rb +11 -12
  192. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  193. data/lib/chef/version.rb +2 -2
  194. data/lib/chef/win32/file.rb +2 -2
  195. data/lib/chef/win32/file/version_info.rb +5 -5
  196. data/lib/chef/win32/registry.rb +1 -2
  197. data/spec/data/ssl/chef-rspec.cert +15 -15
  198. data/spec/functional/knife/configure_spec.rb +1 -1
  199. data/spec/functional/knife/ssh_spec.rb +5 -16
  200. data/spec/functional/resource/aix_service_spec.rb +9 -2
  201. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  202. data/spec/functional/resource/apt_package_spec.rb +0 -1
  203. data/spec/functional/resource/bash_spec.rb +3 -2
  204. data/spec/functional/resource/bff_spec.rb +3 -3
  205. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  206. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  207. data/spec/functional/resource/cron_spec.rb +10 -2
  208. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  209. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  210. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  211. data/spec/functional/resource/execute_spec.rb +1 -1
  212. data/spec/functional/resource/git_spec.rb +23 -1
  213. data/spec/functional/resource/group_spec.rb +21 -9
  214. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  215. data/spec/functional/resource/insserv_spec.rb +7 -7
  216. data/spec/functional/resource/link_spec.rb +22 -25
  217. data/spec/functional/resource/mount_spec.rb +9 -1
  218. data/spec/functional/resource/msu_package_spec.rb +9 -3
  219. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  220. data/spec/functional/resource/remote_file_spec.rb +7 -13
  221. data/spec/functional/resource/rpm_spec.rb +3 -3
  222. data/spec/functional/resource/timezone_spec.rb +2 -0
  223. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  224. data/spec/functional/resource/windows_font_spec.rb +49 -0
  225. data/spec/functional/resource/windows_package_spec.rb +0 -1
  226. data/spec/functional/resource/windows_path_spec.rb +4 -0
  227. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  228. data/spec/functional/resource/windows_service_spec.rb +4 -0
  229. data/spec/functional/resource/windows_task_spec.rb +4 -3
  230. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  231. data/spec/functional/resource/yum_package_spec.rb +4 -1
  232. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  233. data/spec/functional/run_lock_spec.rb +26 -25
  234. data/spec/functional/shell_spec.rb +5 -6
  235. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  236. data/spec/functional/version_spec.rb +1 -1
  237. data/spec/functional/win32/crypto_spec.rb +1 -1
  238. data/spec/functional/win32/registry_spec.rb +8 -8
  239. data/spec/functional/win32/service_manager_spec.rb +1 -1
  240. data/spec/integration/knife/common_options_spec.rb +12 -12
  241. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  242. data/spec/integration/knife/config_get_spec.rb +126 -125
  243. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  244. data/spec/integration/knife/config_use_profile_spec.rb +115 -61
  245. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  246. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  247. data/spec/integration/knife/diff_spec.rb +3 -1
  248. data/spec/integration/knife/download_spec.rb +3 -1
  249. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  250. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  251. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  252. data/spec/integration/knife/serve_spec.rb +5 -5
  253. data/spec/integration/knife/upload_spec.rb +3 -1
  254. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  255. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  256. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  257. data/spec/integration/recipes/notifies_spec.rb +1 -1
  258. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  259. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  260. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  261. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  262. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  263. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  264. data/spec/scripts/ssl-serve.rb +1 -1
  265. data/spec/spec_helper.rb +16 -10
  266. data/spec/support/chef_helpers.rb +1 -20
  267. data/spec/support/platform_helpers.rb +9 -11
  268. data/spec/support/platforms/win32/spec_service.rb +1 -1
  269. data/spec/support/shared/functional/directory_resource.rb +1 -1
  270. data/spec/support/shared/functional/execute_resource.rb +1 -1
  271. data/spec/support/shared/functional/file_resource.rb +20 -21
  272. data/spec/support/shared/functional/securable_resource.rb +1 -2
  273. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  274. data/spec/support/shared/functional/win32_service.rb +1 -1
  275. data/spec/support/shared/functional/windows_script.rb +5 -5
  276. data/spec/support/shared/integration/integration_helper.rb +22 -52
  277. data/spec/support/shared/integration/knife_support.rb +2 -9
  278. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  279. data/spec/support/shared/unit/provider/file.rb +12 -8
  280. data/spec/support/shared/unit/script_resource.rb +6 -20
  281. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  282. data/spec/unit/application/solo_spec.rb +4 -2
  283. data/spec/unit/application_spec.rb +4 -2
  284. data/spec/unit/chef_fs/config_spec.rb +2 -2
  285. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  286. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  287. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  288. data/spec/unit/client_spec.rb +4 -1
  289. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  290. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  291. data/spec/unit/data_bag_spec.rb +6 -3
  292. data/spec/unit/data_collector_spec.rb +23 -1
  293. data/spec/unit/decorator_spec.rb +23 -23
  294. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  295. data/spec/unit/environment_spec.rb +12 -8
  296. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  297. data/spec/unit/guard_interpreter_spec.rb +1 -1
  298. data/spec/unit/http/api_versions_spec.rb +20 -2
  299. data/spec/unit/json_compat_spec.rb +1 -1
  300. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  301. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  302. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  303. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  304. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  305. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  306. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  307. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  308. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  309. data/spec/unit/log/syslog_spec.rb +6 -10
  310. data/spec/unit/log/winevt_spec.rb +21 -13
  311. data/spec/unit/lwrp_spec.rb +9 -6
  312. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  313. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  314. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  315. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  316. data/spec/unit/mixin/securable_spec.rb +0 -1
  317. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  318. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  319. data/spec/unit/mixin/template_spec.rb +30 -30
  320. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  321. data/spec/unit/mixin/uris_spec.rb +1 -1
  322. data/spec/unit/mixin/which.rb +8 -0
  323. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  324. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  325. data/spec/unit/node_spec.rb +103 -16
  326. data/spec/unit/property_spec.rb +5 -5
  327. data/spec/unit/provider/batch_spec.rb +1 -1
  328. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  329. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  330. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  331. data/spec/unit/provider/execute_spec.rb +1 -8
  332. data/spec/unit/provider/git_spec.rb +3 -3
  333. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  334. data/spec/unit/provider/mdadm_spec.rb +1 -3
  335. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  336. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  337. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  338. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  339. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  340. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  341. data/spec/unit/provider/package/windows_spec.rb +30 -53
  342. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  343. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  344. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  345. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  346. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  347. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  348. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  349. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  350. data/spec/unit/provider/service/windows_spec.rb +2 -6
  351. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  352. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  353. data/spec/unit/provider/windows_env_spec.rb +5 -4
  354. data/spec/unit/provider_resolver_spec.rb +6 -6
  355. data/spec/unit/provider_spec.rb +1 -0
  356. data/spec/unit/resource/batch_spec.rb +6 -6
  357. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  358. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  359. data/spec/unit/resource/execute_spec.rb +123 -118
  360. data/spec/unit/resource/file/verification_spec.rb +2 -1
  361. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  362. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  363. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  364. data/spec/unit/resource/script_spec.rb +6 -1
  365. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  366. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  367. data/spec/unit/resource/windows_package_spec.rb +1 -0
  368. data/spec/unit/resource_reporter_spec.rb +1 -1
  369. data/spec/unit/resource_spec.rb +25 -8
  370. data/spec/unit/role_spec.rb +30 -28
  371. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  372. data/spec/unit/run_lock_spec.rb +1 -1
  373. data/spec/unit/scan_access_control_spec.rb +1 -1
  374. data/spec/unit/server_api_spec.rb +43 -16
  375. data/spec/unit/util/backup_spec.rb +1 -1
  376. data/spec/unit/util/diff_spec.rb +1 -15
  377. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  378. data/spec/unit/util/selinux_spec.rb +2 -1
  379. data/spec/unit/win32/security_spec.rb +4 -3
  380. data/tasks/rspec.rb +1 -1
  381. metadata +53 -40
  382. data/lib/chef/provider/osx_profile.rb +0 -255
  383. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -21,6 +21,8 @@ describe Chef::Resource::Timezone, :windows_only do
21
21
  let(:timezone) { "GMT Standard Time" }
22
22
 
23
23
  def timezone_resource
24
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
25
+
24
26
  Chef::Resource::Timezone.new(timezone, run_context)
25
27
  end
26
28
 
@@ -390,7 +390,7 @@ describe Chef::Resource::WindowsCertificate, :windows_only do
390
390
  end
391
391
 
392
392
  after do
393
- if File.exists?(out_path)
393
+ if File.exist?(out_path)
394
394
  File.delete(out_path)
395
395
  end
396
396
  end
@@ -405,7 +405,7 @@ describe Chef::Resource::WindowsCertificate, :windows_only do
405
405
  expect(no_of_certificates).to eq(1)
406
406
  end
407
407
  it "Stores Certificate content at given path" do
408
- expect(File.exists?(out_path)).to be_truthy
408
+ expect(File.exist?(out_path)).to be_truthy
409
409
  end
410
410
  it "Does not converge while fetching" do
411
411
  expect(win_certificate).not_to be_updated_by_last_action
@@ -425,7 +425,7 @@ describe Chef::Resource::WindowsCertificate, :windows_only do
425
425
  expect(stdout.string.strip).to be_empty
426
426
  end
427
427
  it "Does not store certificate content at given path" do
428
- expect(File.exists?(out_path)).to be_falsy
428
+ expect(File.exist?(out_path)).to be_falsy
429
429
  end
430
430
  it "Does not converge while fetching" do
431
431
  expect(win_certificate).not_to be_updated_by_last_action
@@ -0,0 +1,49 @@
1
+ #
2
+ # Author:: Dheeraj Singh Dubey (<ddubey@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ describe Chef::Resource::WindowsFont, :windows_only do
22
+ let(:resource_name) { "Playmaker.ttf" }
23
+ let(:resource_source) { "https://www.wfonts.com/download/data/2020/05/06/playmaker/Playmaker.ttf" }
24
+
25
+ let(:run_context) do
26
+ node = Chef::Node.new
27
+ node.default[:platform] = ohai[:platform]
28
+ node.default[:platform_version] = ohai[:platform_version]
29
+ node.default[:os] = ohai[:os]
30
+ events = Chef::EventDispatch::Dispatcher.new
31
+ Chef::RunContext.new(node, {}, events)
32
+ end
33
+
34
+ subject do
35
+ resource = Chef::Resource::WindowsFont.new(resource_name, run_context)
36
+ resource.source resource_source
37
+ resource
38
+ end
39
+
40
+ it "installs font on first install" do
41
+ subject.run_action(:install)
42
+ expect(subject).to be_updated_by_last_action
43
+ end
44
+
45
+ it "does not install font when already installed" do
46
+ subject.run_action(:install)
47
+ expect(subject).not_to be_updated_by_last_action
48
+ end
49
+ end
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
 
22
21
  describe Chef::Resource::WindowsPackage, :windows_only, :volatile do
23
22
  let(:pkg_name) { nil }
@@ -21,6 +21,10 @@ require "spec_helper"
21
21
  describe Chef::Resource::WindowsPath, :windows_only do
22
22
  let(:path) { "test_path" }
23
23
 
24
+ let(:run_context) do
25
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
26
+ end
27
+
24
28
  before(:all) do
25
29
  @old_path = ENV["PATH"].dup
26
30
  end
@@ -17,12 +17,8 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
- require "chef/mixin/powershell_out"
22
20
 
23
21
  describe Chef::Resource::WindowsSecurityPolicy, :windows_only do
24
- include Chef::Mixin::PowershellExec
25
-
26
22
  let(:secoption) { "MaximumPasswordAge" }
27
23
  let(:secvalue) { "30" }
28
24
  let(:windows_test_run_context) do
@@ -62,6 +62,10 @@ describe Chef::Resource::WindowsService, :windows_only, :system_windows_service_
62
62
  r
63
63
  end
64
64
 
65
+ let(:run_context) do
66
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
67
+ end
68
+
65
69
  before do
66
70
  user_resource.run_action(:create)
67
71
 
@@ -25,12 +25,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
25
25
  let(:task_name) { "chef-client-functional-test" }
26
26
  let(:new_resource) { Chef::Resource::WindowsTask.new(task_name) }
27
27
  let(:windows_task_provider) do
28
- node = Chef::Node.new
29
- events = Chef::EventDispatch::Dispatcher.new
30
- run_context = Chef::RunContext.new(node, {}, events)
31
28
  Chef::Provider::WindowsTask.new(new_resource, run_context)
32
29
  end
33
30
 
31
+ let(:run_context) do
32
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
33
+ end
34
+
34
35
  describe "action :create" do
35
36
  after { delete_task }
36
37
  context "when command is with arguments" do
@@ -15,8 +15,7 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require_relative "../../spec_helper"
19
- require_relative "../../functional/resource/base"
18
+ require "spec_helper"
20
19
 
21
20
  describe Chef::Resource::WindowsUserPrivilege, :windows_only do
22
21
  let(:principal) { nil }
@@ -16,7 +16,6 @@
16
16
  #
17
17
 
18
18
  require "spec_helper"
19
- require "functional/resource/base"
20
19
  require "chef/mixin/shell_out"
21
20
 
22
21
  # run this test only for following platforms.
@@ -64,6 +63,10 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
64
63
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
65
64
  end
66
65
 
66
+ let(:run_context) do
67
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
68
+ end
69
+
67
70
  let(:package_name) { "chef_rpm" }
68
71
  let(:yum_package) do
69
72
  r = Chef::Resource::YumPackage.new(package_name, run_context)
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/shell_out"
22
21
 
23
22
  describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
@@ -52,6 +51,10 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
52
51
  FileUtils.rm_f "/etc/zypp/repos.d/chef-zypp-localtesting.repo"
53
52
  end
54
53
 
54
+ let(:run_context) do
55
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
56
+ end
57
+
55
58
  let(:package_name) { "chef_rpm" }
56
59
  let(:zypper_package) do
57
60
  r = Chef::Resource::ZypperPackage.new(package_name, run_context)
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require_relative "../spec_helper"
18
+ require "spec_helper"
19
19
  require "chef/client"
20
20
 
21
21
  describe Chef::RunLock do
@@ -61,17 +61,17 @@ describe Chef::RunLock do
61
61
  let!(:p1) { ClientProcess.new(self, "p1") }
62
62
  let!(:p2) { ClientProcess.new(self, "p2") }
63
63
  after(:each) do |example|
64
- begin
65
- p1.stop
66
- p2.stop
67
- rescue
68
- example.exception = $!
69
- raise
70
- ensure
71
- if example.exception
72
- print_events
73
- end
64
+
65
+ p1.stop
66
+ p2.stop
67
+ rescue
68
+ example.exception = $!
69
+ raise
70
+ ensure
71
+ if example.exception
72
+ print_events
74
73
  end
74
+
75
75
  end
76
76
 
77
77
  def print_events
@@ -435,6 +435,7 @@ describe Chef::RunLock do
435
435
 
436
436
  class TestRunLock < Chef::RunLock
437
437
  attr_accessor :client_process
438
+
438
439
  def create_lock
439
440
  super
440
441
  client_process.fire_event("created lock")
@@ -444,21 +445,21 @@ describe Chef::RunLock do
444
445
  def start
445
446
  example.log_event("#{name}.start")
446
447
  @pid = fork do
447
- begin
448
- Timeout.timeout(CLIENT_PROCESS_TIMEOUT) do
449
- run_lock = TestRunLock.new(example.lockfile)
450
- run_lock.client_process = self
451
- fire_event("started")
452
- run_lock.acquire
453
- fire_event("acquired lock")
454
- run_lock.save_pid
455
- fire_event("saved pid")
456
- exit!(0)
457
- end
458
- rescue
459
- fire_event($!.message.lines.join(" // "))
460
- raise
448
+
449
+ Timeout.timeout(CLIENT_PROCESS_TIMEOUT) do
450
+ run_lock = TestRunLock.new(example.lockfile)
451
+ run_lock.client_process = self
452
+ fire_event("started")
453
+ run_lock.acquire
454
+ fire_event("acquired lock")
455
+ run_lock.save_pid
456
+ fire_event("saved pid")
457
+ exit!(0)
461
458
  end
459
+ rescue
460
+ fire_event($!.message.lines.join(" // "))
461
+ raise
462
+
462
463
  end
463
464
  example.log_event("#{name}.start forked (pid #{pid})")
464
465
  end
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/version"
22
21
  require "chef/shell"
23
22
 
@@ -98,13 +97,13 @@ describe Shell do
98
97
  [output, e.status]
99
98
  end
100
99
 
101
- it "boots correctly with -lauto" do
100
+ it "boots correctly with -lauto", :executables do
102
101
  output, exitstatus = run_chef_shell_with("-lauto")
103
102
  expect(output).to include("done")
104
103
  expect(exitstatus).to eq(0)
105
104
  end
106
105
 
107
- it "sets the log_level from the command line" do
106
+ it "sets the log_level from the command line", :executables do
108
107
  output, exitstatus = run_chef_shell_with("-lfatal") do |out, keyboard|
109
108
  show_log_level_code = %q[puts "===#{Chef::Log.level}==="]
110
109
  keyboard.puts(show_log_level_code)
@@ -115,13 +114,13 @@ describe Shell do
115
114
  end
116
115
 
117
116
  context "on solo mode" do
118
- it "starts correctly" do
117
+ it "starts correctly", :executables do
119
118
  output, exitstatus = run_chef_shell_with("--solo")
120
119
  expect(output).to include("done")
121
120
  expect(exitstatus).to eq(0)
122
121
  end
123
122
 
124
- it "should be able to use the API" do
123
+ it "should be able to use the API", :executables do
125
124
  output, exitstatus = run_chef_shell_with("-s") do |out, keyboard|
126
125
  simple_api_get = "api.get('data')"
127
126
  keyboard.puts(simple_api_get)
@@ -132,7 +131,7 @@ describe Shell do
132
131
  end
133
132
  end
134
133
 
135
- it "sets the override_runlist from the command line" do
134
+ it "sets the override_runlist from the command line", :executables do
136
135
  output, exitstatus = run_chef_shell_with("-o 'override::foo,override::bar'") do |out, keyboard|
137
136
  show_recipes_code = %q[puts "#{node["recipes"].inspect}"]
138
137
  keyboard.puts(show_recipes_code)
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef/json_compat"
20
- require_relative "../../../spec_helper"
20
+ require "spec_helper"
21
21
 
22
22
  describe Chef::Util::Powershell::Cmdlet, :windows_powershell_dsc_only do
23
23
  before(:all) do
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require_relative "../spec_helper"
18
+ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
  require "chef/version"
21
21
  require "ohai/version"
@@ -32,7 +32,7 @@ describe "Chef::ReservedNames::Win32::Crypto", :windows_only do
32
32
  @run_context = Chef::RunContext.new(new_node, {}, events)
33
33
  end
34
34
 
35
- let (:plaintext) { "p@assword" }
35
+ let(:plaintext) { "p@assword" }
36
36
 
37
37
  it "can be decrypted by powershell" do
38
38
  encrypted = Chef::ReservedNames::Win32::Crypto.encrypt(plaintext)
@@ -267,10 +267,10 @@ describe "Chef::Win32::Registry", :windows_only do
267
267
  describe "create_key" do
268
268
  before(:all) do
269
269
  ::Win32::Registry::HKEY_CURRENT_USER.open("Software\\Root") do |reg|
270
- begin
271
- reg.delete_key("Trunk", true)
272
- rescue
273
- end
270
+
271
+ reg.delete_key("Trunk", true)
272
+ rescue
273
+
274
274
  end
275
275
  end
276
276
 
@@ -362,10 +362,10 @@ describe "Chef::Win32::Registry", :windows_only do
362
362
  before(:all) do
363
363
  ::Win32::Registry::HKEY_CURRENT_USER.create "Software\\Root\\Trunk"
364
364
  ::Win32::Registry::HKEY_CURRENT_USER.open("Software\\Root\\Trunk") do |reg|
365
- begin
366
- reg.delete_key("Red", true)
367
- rescue
368
- end
365
+
366
+ reg.delete_key("Red", true)
367
+ rescue
368
+
369
369
  end
370
370
  end
371
371
 
@@ -125,7 +125,7 @@ describe "Chef::Application::WindowsServiceManager", :windows_only, :system_wind
125
125
  it "start should start the service", :volatile do
126
126
  service_manager.run(["-a", "start"])
127
127
  expect(test_service_state).to eq("running")
128
- expect(File.exists?(test_service_file)).to be_truthy
128
+ expect(File.exist?(test_service_file)).to be_truthy
129
129
  end
130
130
 
131
131
  it "stop should not affect the service" do
@@ -125,12 +125,12 @@ describe "knife common options", :workstation do
125
125
 
126
126
  context "when the default port (8889) is already bound" do
127
127
  before :each do
128
- begin
129
- @server = ChefZero::Server.new(host: "localhost", port: 8889)
130
- @server.start_background
131
- rescue Errno::EADDRINUSE
132
- # OK. Don't care who has it in use, as long as *someone* does.
133
- end
128
+
129
+ @server = ChefZero::Server.new(host: "localhost", port: 8889)
130
+ @server.start_background
131
+ rescue Errno::EADDRINUSE
132
+ # OK. Don't care who has it in use, as long as *someone* does.
133
+
134
134
  end
135
135
  after :each do
136
136
  @server.stop if @server
@@ -144,12 +144,12 @@ describe "knife common options", :workstation do
144
144
 
145
145
  context "when port 9999 is already bound" do
146
146
  before :each do
147
- begin
148
- @server = ChefZero::Server.new(host: "localhost", port: 9999)
149
- @server.start_background
150
- rescue Errno::EADDRINUSE
151
- # OK. Don't care who has it in use, as long as *someone* does.
152
- end
147
+
148
+ @server = ChefZero::Server.new(host: "localhost", port: 9999)
149
+ @server.start_background
150
+ rescue Errno::EADDRINUSE
151
+ # OK. Don't care who has it in use, as long as *someone* does.
152
+
153
153
  end
154
154
  after :each do
155
155
  @server.stop if @server
@@ -22,92 +22,93 @@ describe "knife config get-profile", :workstation do
22
22
  include KnifeSupport
23
23
 
24
24
  include_context "default config options"
25
- include_context "with a chef repo"
26
25
 
27
26
  let(:cmd_args) { [] }
28
27
 
29
- subject do
30
- cmd = knife("config", "get-profile", *cmd_args, instance_filter: lambda { |instance|
31
- # Fake the failsafe check because this command doesn't actually process knife.rb.
32
- $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
33
- })
34
- cmd.stdout
35
- end
36
-
37
- around do |ex|
38
- # Store and reset the value of some env vars.
39
- old_chef_home = ENV["CHEF_HOME"]
40
- old_knife_home = ENV["KNIFE_HOME"]
41
- old_home = ENV["HOME"]
42
- old_wd = Dir.pwd
43
- ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
44
- # Clear these out because they are cached permanently.
45
- ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
46
- Chef::Knife::ConfigGetProfile.reset_config_loader!
47
- begin
48
- ex.run
49
- ensure
50
- ENV["CHEF_HOME"] = old_chef_home
51
- ENV["KNIFE_HOME"] = old_knife_home
52
- ENV["HOME"] = old_home
53
- Dir.chdir(old_wd)
54
- ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
55
- ChefConfig::PathHelper.per_tool_home_environment = nil
28
+ when_the_repository("has a custom env") do
29
+ subject do
30
+ cmd = knife("config", "get-profile", *cmd_args, instance_filter: lambda { |instance|
31
+ # Fake the failsafe check because this command doesn't actually process knife.rb.
32
+ $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
33
+ })
34
+ cmd.stdout
56
35
  end
57
- end
58
-
59
- before do
60
- # Always run from the temp folder. This can't be in the `around` block above
61
- # because it has to run after the before set in the "with a chef repo" shared context.
62
- directory("repo")
63
- Dir.chdir(path_to("repo"))
64
- ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
65
- ENV["HOME"] = path_to(".")
66
- end
67
-
68
- context "with no configuration" do
69
- it { is_expected.to eq "default\n" }
70
- end
71
36
 
72
- context "with --profile" do
73
- let(:cmd_args) { %w{--profile production} }
74
- it { is_expected.to eq "production\n" }
75
- end
76
-
77
- context "with an environment variable" do
78
37
  around do |ex|
79
- old_chef_profile = ENV["CHEF_PROFILE"]
38
+ # Store and reset the value of some env vars.
39
+ old_chef_home = ENV["CHEF_HOME"]
40
+ old_knife_home = ENV["KNIFE_HOME"]
41
+ old_home = ENV["HOME"]
42
+ old_wd = Dir.pwd
43
+ ChefConfig::PathHelper.per_tool_home_environment = "KNIFE_HOME"
44
+ # Clear these out because they are cached permanently.
45
+ ChefConfig::PathHelper.class_exec { remove_class_variable(:@@home_dir) }
46
+ Chef::Knife::ConfigGetProfile.reset_config_loader!
80
47
  begin
81
- ENV["CHEF_PROFILE"] = "staging"
82
48
  ex.run
83
49
  ensure
84
- ENV["CHEF_PROFILE"] = old_chef_profile
50
+ ENV["CHEF_HOME"] = old_chef_home
51
+ ENV["KNIFE_HOME"] = old_knife_home
52
+ ENV["HOME"] = old_home
53
+ Dir.chdir(old_wd)
54
+ ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
55
+ ChefConfig::PathHelper.per_tool_home_environment = nil
85
56
  end
86
57
  end
87
58
 
88
- it { is_expected.to eq "staging\n" }
89
- end
59
+ before do
60
+ # Always run from the temp folder. This can't be in the `around` block above
61
+ # because it has to run after the before set in the "with a chef repo" shared context.
62
+ directory("repo")
63
+ Dir.chdir(path_to("repo"))
64
+ ENV[ChefUtils.windows? ? "CD" : "PWD"] = Dir.pwd
65
+ ENV["HOME"] = path_to(".")
66
+ end
90
67
 
91
- context "with a context file" do
92
- before { file(".chef/context", "development\n") }
93
- it { is_expected.to eq "development\n" }
94
- end
68
+ context "with no configuration" do
69
+ it { is_expected.to eq "default\n" }
70
+ end
95
71
 
96
- context "with a context file under $CHEF_HOME" do
97
- before do
98
- file("chefhome/.chef/context", "other\n")
99
- ENV["CHEF_HOME"] = path_to("chefhome")
72
+ context "with --profile" do
73
+ let(:cmd_args) { %w{--profile production} }
74
+ it { is_expected.to eq "production\n" }
100
75
  end
101
76
 
102
- it { is_expected.to eq "other\n" }
103
- end
77
+ context "with an environment variable" do
78
+ around do |ex|
79
+ old_chef_profile = ENV["CHEF_PROFILE"]
80
+ begin
81
+ ENV["CHEF_PROFILE"] = "staging"
82
+ ex.run
83
+ ensure
84
+ ENV["CHEF_PROFILE"] = old_chef_profile
85
+ end
86
+ end
104
87
 
105
- context "with a context file under $KNIFE_HOME" do
106
- before do
107
- file("knifehome/.chef/context", "other\n")
108
- ENV["KNIFE_HOME"] = path_to("knifehome")
88
+ it { is_expected.to eq "staging\n" }
89
+ end
90
+
91
+ context "with a context file" do
92
+ before { file(".chef/context", "development\n") }
93
+ it { is_expected.to eq "development\n" }
109
94
  end
110
95
 
111
- it { is_expected.to eq "other\n" }
96
+ context "with a context file under $CHEF_HOME" do
97
+ before do
98
+ file("chefhome/.chef/context", "other\n")
99
+ ENV["CHEF_HOME"] = path_to("chefhome")
100
+ end
101
+
102
+ it { is_expected.to eq "other\n" }
103
+ end
104
+
105
+ context "with a context file under $KNIFE_HOME" do
106
+ before do
107
+ file("knifehome/.chef/context", "other\n")
108
+ ENV["KNIFE_HOME"] = path_to("knifehome")
109
+ end
110
+
111
+ it { is_expected.to eq "other\n" }
112
+ end
112
113
  end
113
114
  end