chef 12.18.31 → 13.0.118

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 (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright 2008-2016, Chef Software, Inc.
3
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -38,14 +38,14 @@ describe Chef::Provider::Package::Zypper do
38
38
  allow(provider).to receive(:`).and_return("2.0")
39
39
  end
40
40
 
41
- def shell_out_expectation(command, options = nil)
42
- options ||= { timeout: 900 }
43
- expect(provider).to receive(:shell_out).with(command, options)
41
+ def shell_out_expectation(*command, **options)
42
+ options[:timeout] ||= 900
43
+ expect(provider).to receive(:shell_out).with(*command, **options)
44
44
  end
45
45
 
46
- def shell_out_expectation!(command, options = nil)
47
- options ||= { timeout: 900 }
48
- expect(provider).to receive(:shell_out!).with(command, options)
46
+ def shell_out_expectation!(*command, **options)
47
+ options[:timeout] ||= 900
48
+ expect(provider).to receive(:shell_out!).with(*command, **options)
49
49
  end
50
50
 
51
51
  describe "when loading the current package state" do
@@ -61,7 +61,7 @@ describe Chef::Provider::Package::Zypper do
61
61
 
62
62
  it "should run zypper info with the package name" do
63
63
  shell_out_expectation!(
64
- "zypper --non-interactive info #{new_resource.package_name}"
64
+ "zypper", "--non-interactive", "info", new_resource.package_name
65
65
  ).and_return(status)
66
66
  provider.load_current_resource
67
67
  end
@@ -111,25 +111,31 @@ describe Chef::Provider::Package::Zypper do
111
111
 
112
112
  describe "install_package" do
113
113
  it "should run zypper install with the package name and version" do
114
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
115
114
  shell_out_expectation!(
116
- "zypper --non-interactive install --auto-agree-with-licenses emacs=1.0"
115
+ "zypper", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0"
117
116
  )
118
117
  provider.install_package(["emacs"], ["1.0"])
119
118
  end
120
- it "should run zypper install without gpg checks" do
121
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
119
+
120
+ it "should run zypper install with gpg checks" do
122
121
  shell_out_expectation!(
123
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0"
122
+ "zypper", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0"
124
123
  )
125
124
  provider.install_package(["emacs"], ["1.0"])
126
125
  end
127
- it "should warn about gpg checks on zypper install" do
128
- expect(Chef::Log).to receive(:warn).with(
129
- /All packages will be installed without gpg signature checks/
126
+
127
+ it "setting the property should disable gpg checks" do
128
+ new_resource.gpg_check false
129
+ shell_out_expectation!(
130
+ "zypper", "--non-interactive", "--no-gpg-checks", "install", "--auto-agree-with-licenses", "emacs=1.0"
130
131
  )
132
+ provider.install_package(["emacs"], ["1.0"])
133
+ end
134
+
135
+ it "setting the config variable should disable gpg checks" do
136
+ Chef::Config[:zypper_check_gpg] = false
131
137
  shell_out_expectation!(
132
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0"
138
+ "zypper", "--non-interactive", "--no-gpg-checks", "install", "--auto-agree-with-licenses", "emacs=1.0"
133
139
  )
134
140
  provider.install_package(["emacs"], ["1.0"])
135
141
  end
@@ -137,31 +143,22 @@ describe Chef::Provider::Package::Zypper do
137
143
 
138
144
  describe "upgrade_package" do
139
145
  it "should run zypper update with the package name and version" do
140
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
141
146
  shell_out_expectation!(
142
- "zypper --non-interactive install --auto-agree-with-licenses emacs=1.0"
147
+ "zypper", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0"
143
148
  )
144
149
  provider.upgrade_package(["emacs"], ["1.0"])
145
150
  end
146
- it "should run zypper update without gpg checks" do
147
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
151
+ it "should run zypper update without gpg checks when setting the property" do
152
+ new_resource.gpg_check false
148
153
  shell_out_expectation!(
149
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0"
154
+ "zypper", "--non-interactive", "--no-gpg-checks", "install", "--auto-agree-with-licenses", "emacs=1.0"
150
155
  )
151
156
  provider.upgrade_package(["emacs"], ["1.0"])
152
157
  end
153
- it "should warn about gpg checks on zypper upgrade" do
154
- expect(Chef::Log).to receive(:warn).with(
155
- /All packages will be installed without gpg signature checks/
156
- )
158
+ it "should run zypper update without gpg checks when setting the config variable" do
159
+ Chef::Config[:zypper_check_gpg] = false
157
160
  shell_out_expectation!(
158
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0"
159
- )
160
- provider.upgrade_package(["emacs"], ["1.0"])
161
- end
162
- it "should run zypper upgrade without gpg checks" do
163
- shell_out_expectation!(
164
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0"
161
+ "zypper", "--non-interactive", "--no-gpg-checks", "install", "--auto-agree-with-licenses", "emacs=1.0"
165
162
  )
166
163
  provider.upgrade_package(["emacs"], ["1.0"])
167
164
  end
@@ -171,9 +168,8 @@ describe Chef::Provider::Package::Zypper do
171
168
 
172
169
  context "when package version is not explicitly specified" do
173
170
  it "should run zypper remove with the package name" do
174
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
175
171
  shell_out_expectation!(
176
- "zypper --non-interactive remove emacs"
172
+ "zypper", "--non-interactive", "remove", "emacs"
177
173
  )
178
174
  provider.remove_package(["emacs"], [nil])
179
175
  end
@@ -181,25 +177,22 @@ describe Chef::Provider::Package::Zypper do
181
177
 
182
178
  context "when package version is explicitly specified" do
183
179
  it "should run zypper remove with the package name" do
184
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
185
180
  shell_out_expectation!(
186
- "zypper --non-interactive remove emacs=1.0"
181
+ "zypper", "--non-interactive", "remove", "emacs=1.0"
187
182
  )
188
183
  provider.remove_package(["emacs"], ["1.0"])
189
184
  end
190
185
  it "should run zypper remove without gpg checks" do
191
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
186
+ new_resource.gpg_check false
192
187
  shell_out_expectation!(
193
- "zypper --non-interactive --no-gpg-checks remove emacs=1.0"
188
+ "zypper", "--non-interactive", "--no-gpg-checks", "remove", "emacs=1.0"
194
189
  )
195
190
  provider.remove_package(["emacs"], ["1.0"])
196
191
  end
197
- it "should warn about gpg checks on zypper remove" do
198
- expect(Chef::Log).to receive(:warn).with(
199
- /All packages will be installed without gpg signature checks/
200
- )
192
+ it "should run zypper remove without gpg checks when the config is false" do
193
+ Chef::Config[:zypper_check_gpg] = false
201
194
  shell_out_expectation!(
202
- "zypper --non-interactive --no-gpg-checks remove emacs=1.0"
195
+ "zypper", "--non-interactive", "--no-gpg-checks", "remove", "emacs=1.0"
203
196
  )
204
197
  provider.remove_package(["emacs"], ["1.0"])
205
198
  end
@@ -209,23 +202,21 @@ describe Chef::Provider::Package::Zypper do
209
202
  describe "purge_package" do
210
203
  it "should run remove with the name and version and --clean-deps" do
211
204
  shell_out_expectation!(
212
- "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0"
205
+ "zypper", "--non-interactive", "remove", "--clean-deps", "emacs=1.0"
213
206
  )
214
207
  provider.purge_package(["emacs"], ["1.0"])
215
208
  end
216
209
  it "should run zypper purge without gpg checks" do
217
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
210
+ new_resource.gpg_check false
218
211
  shell_out_expectation!(
219
- "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0"
212
+ "zypper", "--non-interactive", "--no-gpg-checks", "remove", "--clean-deps", "emacs=1.0"
220
213
  )
221
214
  provider.purge_package(["emacs"], ["1.0"])
222
215
  end
223
- it "should warn about gpg checks on zypper purge" do
224
- expect(Chef::Log).to receive(:warn).with(
225
- /All packages will be installed without gpg signature checks/
226
- )
216
+ it "should run zypper purge without gpg checks when the config is false" do
217
+ Chef::Config[:zypper_check_gpg] = false
227
218
  shell_out_expectation!(
228
- "zypper --non-interactive --no-gpg-checks remove --clean-deps emacs=1.0"
219
+ "zypper", "--non-interactive", "--no-gpg-checks", "remove", "--clean-deps", "emacs=1.0"
229
220
  )
230
221
  provider.purge_package(["emacs"], ["1.0"])
231
222
  end
@@ -233,31 +224,15 @@ describe Chef::Provider::Package::Zypper do
233
224
 
234
225
  describe "lock_package" do
235
226
  it "should run zypper addlock with the package name" do
236
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
237
227
  shell_out_expectation!(
238
- "zypper --non-interactive addlock emacs"
228
+ "zypper", "--non-interactive", "addlock", "emacs"
239
229
  )
240
230
  provider.lock_package(["emacs"], [nil])
241
231
  end
242
232
  it "should run zypper addlock without gpg checks" do
243
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
233
+ new_resource.gpg_check false
244
234
  shell_out_expectation!(
245
- "zypper --non-interactive --no-gpg-checks addlock emacs"
246
- )
247
- provider.lock_package(["emacs"], [nil])
248
- end
249
- it "should warn about gpg checks on zypper addlock" do
250
- expect(Chef::Log).to receive(:warn).with(
251
- /All packages will be installed without gpg signature checks/
252
- )
253
- shell_out_expectation!(
254
- "zypper --non-interactive --no-gpg-checks addlock emacs"
255
- )
256
- provider.lock_package(["emacs"], [nil])
257
- end
258
- it "should run zypper addlock without gpg checks" do
259
- shell_out_expectation!(
260
- "zypper --non-interactive --no-gpg-checks addlock emacs"
235
+ "zypper", "--non-interactive", "--no-gpg-checks", "addlock", "emacs"
261
236
  )
262
237
  provider.lock_package(["emacs"], [nil])
263
238
  end
@@ -265,31 +240,15 @@ describe Chef::Provider::Package::Zypper do
265
240
 
266
241
  describe "unlock_package" do
267
242
  it "should run zypper removelock with the package name" do
268
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(true)
269
- shell_out_expectation!(
270
- "zypper --non-interactive removelock emacs"
271
- )
272
- provider.unlock_package(["emacs"], [nil])
273
- end
274
- it "should run zypper removelock without gpg checks" do
275
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
276
- shell_out_expectation!(
277
- "zypper --non-interactive --no-gpg-checks removelock emacs"
278
- )
279
- provider.unlock_package(["emacs"], [nil])
280
- end
281
- it "should warn about gpg checks on zypper removelock" do
282
- expect(Chef::Log).to receive(:warn).with(
283
- /All packages will be installed without gpg signature checks/
284
- )
285
243
  shell_out_expectation!(
286
- "zypper --non-interactive --no-gpg-checks removelock emacs"
244
+ "zypper", "--non-interactive", "removelock", "emacs"
287
245
  )
288
246
  provider.unlock_package(["emacs"], [nil])
289
247
  end
290
248
  it "should run zypper removelock without gpg checks" do
249
+ new_resource.gpg_check false
291
250
  shell_out_expectation!(
292
- "zypper --non-interactive --no-gpg-checks removelock emacs"
251
+ "zypper", "--non-interactive", "--no-gpg-checks", "removelock", "emacs"
293
252
  )
294
253
  provider.unlock_package(["emacs"], [nil])
295
254
  end
@@ -303,7 +262,7 @@ describe Chef::Provider::Package::Zypper do
303
262
  describe "install_package" do
304
263
  it "should run zypper install with the package name and version" do
305
264
  shell_out_expectation!(
306
- "zypper --no-gpg-checks install --auto-agree-with-licenses -y emacs"
265
+ "zypper", "install", "--auto-agree-with-licenses", "-y", "emacs"
307
266
  )
308
267
  provider.install_package(["emacs"], ["1.0"])
309
268
  end
@@ -312,7 +271,7 @@ describe Chef::Provider::Package::Zypper do
312
271
  describe "upgrade_package" do
313
272
  it "should run zypper update with the package name and version" do
314
273
  shell_out_expectation!(
315
- "zypper --no-gpg-checks install --auto-agree-with-licenses -y emacs"
274
+ "zypper", "install", "--auto-agree-with-licenses", "-y", "emacs"
316
275
  )
317
276
  provider.upgrade_package(["emacs"], ["1.0"])
318
277
  end
@@ -321,7 +280,7 @@ describe Chef::Provider::Package::Zypper do
321
280
  describe "remove_package" do
322
281
  it "should run zypper remove with the package name" do
323
282
  shell_out_expectation!(
324
- "zypper --no-gpg-checks remove -y emacs"
283
+ "zypper", "remove", "-y", "emacs"
325
284
  )
326
285
  provider.remove_package(["emacs"], ["1.0"])
327
286
  end
@@ -330,17 +289,15 @@ describe Chef::Provider::Package::Zypper do
330
289
 
331
290
  describe "when installing multiple packages" do # https://github.com/chef/chef/issues/3570
332
291
  it "should install an array of package names and versions" do
333
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
334
292
  shell_out_expectation!(
335
- "zypper --non-interactive --no-gpg-checks install " + "--auto-agree-with-licenses emacs=1.0 vim=2.0"
293
+ "zypper", "--non-interactive", "install", "--auto-agree-with-licenses", "emacs=1.0", "vim=2.0"
336
294
  )
337
295
  provider.install_package(%w{emacs vim}, ["1.0", "2.0"])
338
296
  end
339
297
 
340
298
  it "should remove an array of package names and versions" do
341
- allow(Chef::Config).to receive(:[]).with(:zypper_check_gpg).and_return(false)
342
299
  shell_out_expectation!(
343
- "zypper --non-interactive --no-gpg-checks remove emacs=1.0 vim=2.0"
300
+ "zypper", "--non-interactive", "remove", "emacs=1.0", "vim=2.0"
344
301
  )
345
302
  provider.remove_package(%w{emacs vim}, ["1.0", "2.0"])
346
303
  end
@@ -517,6 +517,10 @@ describe "Subclass with use_multipackage_api" do
517
517
  end
518
518
 
519
519
  context "#a_to_s utility for subclasses" do
520
+ before(:each) do
521
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
522
+ end
523
+
520
524
  it "converts varargs of strings to a single string" do
521
525
  expect(provider.send(:a_to_s, "a", nil, "b", "", "c", " ", "d e", "f-g")).to eq("a b c d e f-g")
522
526
  end
@@ -906,6 +910,10 @@ describe "Chef::Provider::Package - Multi" do
906
910
  end
907
911
 
908
912
  describe "shell_out helpers" do
913
+ before(:each) do
914
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
915
+ end
916
+
909
917
  [ :shell_out_with_timeout, :shell_out_with_timeout! ].each do |method|
910
918
  stubbed_method = method == :shell_out_with_timeout! ? :shell_out! : :shell_out
911
919
  [ %w{command arg1 arg2}, "command arg1 arg2" ].each do |command|
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Edwards (<adamed@chef.io>)
3
- # Copyright:: Copyright 2013-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2013-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -30,10 +30,20 @@ describe Chef::Provider::PowershellScript, "action_run" do
30
30
  node
31
31
  end
32
32
 
33
- let(:provider) do
34
- empty_events = Chef::EventDispatch::Dispatcher.new
35
- run_context = Chef::RunContext.new(node, {}, empty_events)
33
+ # code block is mandatory for the powershell provider
34
+ let(:code) { "" }
35
+
36
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
37
+
38
+ let(:run_context) { run_context = Chef::RunContext.new(node, {}, events) }
39
+
40
+ let(:new_resource) do
36
41
  new_resource = Chef::Resource::PowershellScript.new("run some powershell code", run_context)
42
+ new_resource.code code
43
+ new_resource
44
+ end
45
+
46
+ let(:provider) do
37
47
  Chef::Provider::PowershellScript.new(new_resource, run_context)
38
48
  end
39
49
 
@@ -117,7 +117,7 @@ describe Chef::Provider::RemoteFile::SFTP do
117
117
  end
118
118
 
119
119
  context "and the URI specifies an alternate port" do
120
- let(:uri) { URI.parse("ftp://conan:cthu1hu@opscode.com:8021/seattle.txt") }
120
+ let(:uri) { URI.parse("sftp://conan:cthu1hu@opscode.com:8021/seattle.txt") }
121
121
 
122
122
  it "should connect on an alternate port when one is provided" do
123
123
  expect(Net::SFTP).to receive(:start).with("opscode.com:8021", "conan", :password => "cthu1hu")
@@ -127,10 +127,10 @@ describe Chef::Provider::RemoteFile::SFTP do
127
127
  end
128
128
 
129
129
  context "and the uri specifies a nested path" do
130
- let(:uri) { URI.parse("ftp://conan:cthu1hu@opscode.com/the/whole/path/seattle.txt") }
130
+ let(:uri) { URI.parse("sftp://conan:cthu1hu@opscode.com/the/whole/path/seattle.txt") }
131
131
 
132
132
  it "should fetch the file from the correct path" do
133
- expect(sftp).to receive(:download!).with("the/whole/path/seattle.txt", "/tmp/somedir/remote-file-sftp-backend-spec-test")
133
+ expect(sftp).to receive(:download!).with("/the/whole/path/seattle.txt", "/tmp/somedir/remote-file-sftp-backend-spec-test")
134
134
  fetcher.fetch
135
135
  end
136
136
  end
@@ -230,13 +230,19 @@ describe Chef::Provider::Route do
230
230
  @run_context.resource_collection << Chef::Resource::Route.new("192.168.1.0/24 via 192.168.0.1")
231
231
  @run_context.resource_collection << Chef::Resource::Route.new("192.168.2.0/24 via 192.168.0.1")
232
232
  @run_context.resource_collection << Chef::Resource::Route.new("192.168.3.0/24 via 192.168.0.1")
233
+ @run_context.resource_collection << Chef::Resource::Route.new("Complex Route").tap do |r|
234
+ r.target "192.168.4.0"
235
+ r.gateway "192.168.0.1"
236
+ r.netmask "255.255.255.0"
237
+ end
233
238
 
234
239
  @provider.action = :add
235
240
  @provider.generate_config
236
- expect(route_file.string.split("\n").size).to eq(3)
241
+ expect(route_file.string.split("\n").size).to eq(4)
237
242
  expect(route_file.string).to match(/^192\.168\.1\.0\/24 via 192\.168\.0\.1$/)
238
243
  expect(route_file.string).to match(/^192\.168\.2\.0\/24 via 192\.168\.0\.1$/)
239
244
  expect(route_file.string).to match(/^192\.168\.3\.0\/24 via 192\.168\.0\.1$/)
245
+ expect(route_file.string).to match(/^192\.168\.4\.0\/24 via 192\.168\.0\.1$/)
240
246
  end
241
247
  end
242
248
  end
@@ -56,12 +56,55 @@ describe Chef::Provider::Script, "action_run" do
56
56
  end
57
57
  end
58
58
 
59
- context "#set_owner_and_group" do
60
- it "sets the owner and group for the script file" do
61
- new_resource.user "toor"
62
- new_resource.group "wheel"
63
- expect(FileUtils).to receive(:chown).with("toor", "wheel", tempfile.path)
64
- provider.set_owner_and_group
59
+ context "when configuring the script file's security" do
60
+ context "when not running on Windows" do
61
+ before do
62
+ allow(::Chef::Platform).to receive(:windows?).and_return(false)
63
+ end
64
+ context "#set_owner_and_group" do
65
+ it "sets the owner and group for the script file" do
66
+ new_resource.user "toor"
67
+ new_resource.group "wheel"
68
+ expect(FileUtils).to receive(:chown).with("toor", "wheel", tempfile.path)
69
+ provider.set_owner_and_group
70
+ end
71
+ end
72
+ end
73
+
74
+ context "when running on Windows" do
75
+ before do
76
+ allow(::Chef::Platform).to receive(:windows?).and_return(true)
77
+ expect(new_resource.user).to eq(nil)
78
+ stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_READ", 1)
79
+ stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE", 4)
80
+ stub_const("Chef::ReservedNames::Win32::Security", Class.new)
81
+ stub_const("Chef::ReservedNames::Win32::Security::SecurableObject", Class.new)
82
+ stub_const("Chef::ReservedNames::Win32::Security::SID", Class.new)
83
+ stub_const("Chef::ReservedNames::Win32::Security::ACE", Class.new)
84
+ stub_const("Chef::ReservedNames::Win32::Security::ACL", Class.new)
85
+ end
86
+
87
+ context "when an alternate user is not specified" do
88
+ it "does not attempt to set the script file's security descriptor" do
89
+ expect(provider).to receive(:grant_alternate_user_read_access)
90
+ expect(Chef::ReservedNames::Win32::Security::SecurableObject).not_to receive(:new)
91
+ provider.set_owner_and_group
92
+ end
93
+ end
94
+
95
+ context "when an alternate user is specified" do
96
+ let(:security_descriptor) { instance_double("Chef::ReservedNames::Win32::Security::SecurityDescriptor", :dacl => []) }
97
+ let(:securable_object) { instance_double("Chef::ReservedNames::Win32::Security::SecurableObject", :security_descriptor => security_descriptor, :dacl= => nil) }
98
+ it "sets the script file's security descriptor" do
99
+ new_resource.user("toor")
100
+ expect(Chef::ReservedNames::Win32::Security::SecurableObject).to receive(:new).and_return(securable_object)
101
+ expect(Chef::ReservedNames::Win32::Security::SID).to receive(:from_account).and_return(nil)
102
+ expect(Chef::ReservedNames::Win32::Security::ACE).to receive(:access_allowed).and_return(nil)
103
+ expect(Chef::ReservedNames::Win32::Security::ACL).to receive(:create).and_return(nil)
104
+ expect(securable_object).to receive(:dacl=)
105
+ provider.set_owner_and_group
106
+ end
107
+ end
65
108
  end
66
109
  end
67
110
 
@@ -59,11 +59,10 @@ describe Chef::Provider::Service::Debian do
59
59
  /etc/rc6.d/K20chef
60
60
  UPDATE_RC_D_SUCCESS
61
61
 
62
- @stdout = StringIO.new(result)
63
- @stderr = StringIO.new
64
- @status = double("Status", :exitstatus => 0, :stdout => @stdout)
62
+ @stdout = result
63
+ @stderr = ""
64
+ @status = double("Status", :exitstatus => 0, :stdout => @stdout, :stderr => @stderr)
65
65
  allow(@provider).to receive(:shell_out!).and_return(@status)
66
- allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
67
66
  end
68
67
 
69
68
  it "says the service is enabled" do
@@ -80,13 +79,9 @@ describe Chef::Provider::Service::Debian do
80
79
  context "when update-rc.d shows init isn't linked to rc*.d/" do
81
80
  before do
82
81
  allow(@provider).to receive(:assert_update_rcd_available)
83
- @status = double("Status", :exitstatus => 0)
84
- @stdout = StringIO.new(
85
- " Removing any system startup links for /etc/init.d/chef ...")
86
- @stderr = StringIO.new
87
- @status = double("Status", :exitstatus => 0, :stdout => @stdout)
82
+ @stdout = " Removing any system startup links for /etc/init.d/chef ..."
83
+ @status = double("Status", :exitstatus => 0, :stdout => @stdout, stderr: "")
88
84
  allow(@provider).to receive(:shell_out!).and_return(@status)
89
- allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
90
85
  end
91
86
 
92
87
  it "says the service is disabled" do
@@ -102,11 +97,12 @@ describe Chef::Provider::Service::Debian do
102
97
 
103
98
  context "when update-rc.d fails" do
104
99
  before do
105
- @status = double("Status", :exitstatus => -1)
106
- allow(@provider).to receive(:popen4).and_return(@status)
100
+ @status = double("Status", exitstatus: -1, stdout: "", stderr: "")
101
+ allow(@provider).to receive(:shell_out!).and_return(@status)
107
102
  end
108
103
 
109
104
  it "raises an error" do
105
+ @provider.load_current_resource
110
106
  @provider.define_resource_requirements
111
107
  expect do
112
108
  @provider.process_resource_requirements
@@ -198,11 +194,10 @@ insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
198
194
  before do
199
195
  allow(@provider).to receive(:assert_update_rcd_available)
200
196
 
201
- @stdout = StringIO.new(expected_results["linked"]["stdout"])
202
- @stderr = StringIO.new(expected_results["linked"]["stderr"])
203
- @status = double("Status", :exitstatus => 0, :stdout => @stdout)
197
+ @stdout = expected_results["linked"]["stdout"]
198
+ @stderr = expected_results["linked"]["stderr"]
199
+ @status = double("Status", exitstatus: 0, stdout: @stdout, stderr: @stderr)
204
200
  allow(@provider).to receive(:shell_out!).and_return(@status)
205
- allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
206
201
  end
207
202
 
208
203
  it "says the service is enabled" do
@@ -224,11 +219,10 @@ insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
224
219
  context "when update-rc.d shows init isn't linked to rc*.d/" do
225
220
  before do
226
221
  allow(@provider).to receive(:assert_update_rcd_available)
227
- @stdout = StringIO.new(expected_results["not linked"]["stdout"])
228
- @stderr = StringIO.new(expected_results["not linked"]["stderr"])
229
- @status = double("Status", :exitstatus => 0, :stdout => @stdout)
222
+ @stdout = expected_results["not linked"]["stdout"]
223
+ @stderr = expected_results["not linked"]["stderr"]
224
+ @status = double("Status", exitstatus: 0, stdout: @stdout, stderr: @stderr)
230
225
  allow(@provider).to receive(:shell_out!).and_return(@status)
231
- allow(@provider).to receive(:popen4).and_yield(@pid, @stdin, @stdout, @stderr).and_return(@status)
232
226
  end
233
227
 
234
228
  it "says the service is disabled" do
@@ -198,6 +198,33 @@ describe Chef::Provider::Service::Solaris do
198
198
  end
199
199
  end
200
200
 
201
+ describe "when enabling the service recursively" do
202
+ before(:each) do
203
+ @provider.current_resource = @current_resource
204
+ end
205
+
206
+ it "should call svcadm enable -s -r chef" do
207
+ @new_resource.options("-r")
208
+ expect(@provider).to receive(:shell_out!).with("/bin/svcs", "-l", "chef", { :returns => [0, 1] }).and_return(@enabled_svc_status)
209
+ expect(@provider).not_to receive(:shell_out!).with("/usr/sbin/svcadm", "clear", @current_resource.service_name)
210
+ expect(@provider).to receive(:shell_out!).with("/usr/sbin/svcadm", "enable", "-s", "-r", @current_resource.service_name).and_return(@success)
211
+ @provider.load_current_resource
212
+ expect(@provider.enable_service).to be_truthy
213
+ expect(@current_resource.enabled).to be_truthy
214
+ end
215
+
216
+ it "should call svcadm enable -s -r -t chef when passed an array of options" do
217
+ @new_resource.options(["-r", "-t"])
218
+ expect(@provider).to receive(:shell_out!).with("/bin/svcs", "-l", "chef", { :returns => [0, 1] }).and_return(@enabled_svc_status)
219
+ expect(@provider).not_to receive(:shell_out!).with("/usr/sbin/svcadm", "clear", @current_resource.service_name)
220
+ expect(@provider).to receive(:shell_out!).with("/usr/sbin/svcadm", "enable", "-s", "-r", "-t", @current_resource.service_name).and_return(@success)
221
+ @provider.load_current_resource
222
+ expect(@provider.enable_service).to be_truthy
223
+ expect(@current_resource.enabled).to be_truthy
224
+ end
225
+
226
+ end
227
+
201
228
  describe "when disabling the service" do
202
229
  before(:each) do
203
230
  @provider.current_resource = @current_resource
@@ -215,7 +242,16 @@ describe Chef::Provider::Service::Solaris do
215
242
  expect(@provider).to receive(:shell_out!).with("/bin/svcs", "-l", "chef", { :returns => [0, 1] }).and_return(@disabled_svc_status)
216
243
  expect(@provider).to receive(:shell_out!).with("/usr/sbin/svcadm", "disable", "-s", "chef").and_return(@success)
217
244
  @provider.load_current_resource
218
- expect(@provider.stop_service).to be_truthy
245
+ expect(@provider.disable_service).to be_truthy
246
+ expect(@current_resource.enabled).to be_falsey
247
+ end
248
+
249
+ it "should call svcadm disable chef with options" do
250
+ @new_resource.options("-t")
251
+ expect(@provider).to receive(:shell_out!).with("/bin/svcs", "-l", "chef", { :returns => [0, 1] }).and_return(@disabled_svc_status)
252
+ expect(@provider).to receive(:shell_out!).with("/usr/sbin/svcadm", "disable", "-s", "-t", "chef").and_return(@success)
253
+ @provider.load_current_resource
254
+ expect(@provider.disable_service).to be_truthy
219
255
  expect(@current_resource.enabled).to be_falsey
220
256
  end
221
257