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
@@ -100,8 +100,8 @@ describe Chef::PolicyBuilder::Policyfile do
100
100
  http = double("Chef::ServerAPI")
101
101
  server_url = "https://api.opscode.com/organizations/example"
102
102
  Chef::Config[:chef_server_url] = server_url
103
- expect(Chef::ServerAPI).to receive(:new).with(server_url).and_return(http)
104
- expect(policy_builder.http_api).to eq(http)
103
+ expect(Chef::ServerAPI).to receive(:new).with(server_url, version_class: Chef::CookbookManifestVersions).and_return(http)
104
+ expect(policy_builder.api_service).to eq(http)
105
105
  end
106
106
 
107
107
  describe "reporting unsupported features" do
@@ -150,7 +150,7 @@ describe Chef::PolicyBuilder::Policyfile do
150
150
 
151
151
  describe "loading policy data" do
152
152
 
153
- let(:http_api) { double("Chef::ServerAPI") }
153
+ let(:api_service) { double("Chef::ServerAPI") }
154
154
 
155
155
  let(:configured_environment) { nil }
156
156
 
@@ -172,7 +172,7 @@ describe Chef::PolicyBuilder::Policyfile do
172
172
  before do
173
173
  Chef::Config[:policy_document_native_api] = false
174
174
  Chef::Config[:deployment_group] = "example-policy-stage"
175
- allow(policy_builder).to receive(:http_api).and_return(http_api)
175
+ allow(policy_builder).to receive(:api_service).and_return(api_service)
176
176
  end
177
177
 
178
178
  describe "when using compatibility mode (policy_document_native_api == false)" do
@@ -185,7 +185,7 @@ describe Chef::PolicyBuilder::Policyfile do
185
185
  let(:error404) { Net::HTTPServerException.new("404 message", :body) }
186
186
 
187
187
  before do
188
- expect(http_api).to receive(:get).
188
+ expect(api_service).to receive(:get).
189
189
  with("data/policyfiles/example-policy-stage").
190
190
  and_raise(error404)
191
191
  end
@@ -212,7 +212,7 @@ describe Chef::PolicyBuilder::Policyfile do
212
212
  let(:policy_relative_url) { "data/policyfiles/example-policy-stage" }
213
213
 
214
214
  before do
215
- expect(http_api).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
215
+ expect(api_service).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
216
216
  end
217
217
 
218
218
  it "fetches the policy file from a data bag item" do
@@ -253,7 +253,7 @@ describe Chef::PolicyBuilder::Policyfile do
253
253
  let(:policy_relative_url) { "policy_groups/policy-stage/policies/example" }
254
254
 
255
255
  before do
256
- expect(http_api).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
256
+ expect(api_service).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
257
257
  end
258
258
 
259
259
  it "fetches the policy file from a data bag item" do
@@ -617,7 +617,7 @@ describe Chef::PolicyBuilder::Policyfile do
617
617
  policy_builder.finish_load_node(node)
618
618
  policy_builder.build_node
619
619
 
620
- expect(http_api).to receive(:get).with(cookbook1_url).
620
+ expect(api_service).to receive(:get).with(cookbook1_url).
621
621
  and_raise(error404)
622
622
  end
623
623
 
@@ -687,9 +687,9 @@ describe Chef::PolicyBuilder::Policyfile do
687
687
  context "when the cookbooks exist on the server" do
688
688
 
689
689
  before do
690
- expect(http_api).to receive(:get).with(cookbook1_url).
690
+ expect(api_service).to receive(:get).with(cookbook1_url).
691
691
  and_return(example1_cookbook_data)
692
- expect(http_api).to receive(:get).with(cookbook2_url).
692
+ expect(api_service).to receive(:get).with(cookbook2_url).
693
693
  and_return(example2_cookbook_data)
694
694
 
695
695
  expect(Chef::CookbookVersion).to receive(:from_cb_artifact_data).with(example1_cookbook_data).
@@ -720,9 +720,9 @@ describe Chef::PolicyBuilder::Policyfile do
720
720
  context "when the cookbooks exist on the server" do
721
721
 
722
722
  before do
723
- expect(http_api).to receive(:get).with(cookbook1_url).
723
+ expect(api_service).to receive(:get).with(cookbook1_url).
724
724
  and_return(example1_cookbook_data)
725
- expect(http_api).to receive(:get).with(cookbook2_url).
725
+ expect(api_service).to receive(:get).with(cookbook2_url).
726
726
  and_return(example2_cookbook_data)
727
727
 
728
728
  expect(Chef::CookbookVersion).to receive(:from_cb_artifact_data).with(example1_cookbook_data).
@@ -100,13 +100,10 @@ describe "Chef::Resource.property validation" do
100
100
  expect(resource.x).to be_nil
101
101
  end
102
102
  unless tags.include?(:nillable)
103
- it "changing x to nil warns that the get will change to a set in Chef 13 and does not change the value" do
103
+ it "changing x to nil does a set" do
104
104
  resource.instance_eval { @x = "default" }
105
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
106
- /An attempt was made to change x from "default" to nil by calling x\(nil\). In Chef 12, this does a get rather than a set. In Chef 13, this will change to set the value to nil./
107
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
108
- expect(resource.x nil).to eq "default"
109
- expect(resource.x).to eq "default"
105
+ expect(resource.x nil).to eq nil
106
+ expect(resource.x).to eq nil
110
107
  end
111
108
  end
112
109
  end
@@ -116,13 +113,10 @@ describe "Chef::Resource.property validation" do
116
113
  expect(resource.x nil).to be_nil
117
114
  expect(resource.x).to be_nil
118
115
  end
119
- it "changing x to nil warns that the get will change to a set in Chef 13 and does not change the value" do
116
+ it "changing x to nil does a set" do
120
117
  resource.instance_eval { @x = "default" }
121
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
122
- /An attempt was made to change x from "default" to nil by calling x\(nil\). In Chef 12, this does a get rather than a set. In Chef 13, this will change to set the value to nil./
123
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
124
- expect(resource.x nil).to eq "default"
125
- expect(resource.x).to eq "default"
118
+ expect(resource.x nil).to eq nil
119
+ expect(resource.x).to eq nil
126
120
  end
127
121
  end
128
122
  elsif tags.include?(:nillable)
@@ -134,26 +128,17 @@ describe "Chef::Resource.property validation" do
134
128
  expect(resource.x).to eq nil
135
129
  end
136
130
  end
137
- else
131
+ elsif tags.include?(:delayed_nil_default_failure)
138
132
  it "property :x, #{validation}, default: nil warns that the default is invalid" do
139
- expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
140
- /Default value nil is invalid for property x of resource chef_resource_property_spec_(\d+). Possible fixes: 1. Remove 'default: nil' if nil means 'undefined'. 2. Set a valid default value if there is a reasonable one. 3. Allow nil as a valid value of your property \(for example, 'property :x, \[ String, nil \], default: nil'\)./
133
+ expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.not_to raise_error
134
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed, /Property x must be one of: .* You passed nil./
141
135
  end
142
- context "With property :x, #{validation}, default: nil" do
143
- before do
144
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
145
- resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__)
146
- Chef::Config[:treat_deprecation_warnings_as_errors] = true
147
- end
148
-
149
- it "changing x to nil emits a warning that the value is invalid and does not change the value" do
150
- resource.instance_eval { @x = "default" }
151
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
152
- /nil is an invalid value for x of resource chef_resource_property_spec_(\d+). In Chef 13, this warning will change to an error./
153
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
154
- expect(resource.x nil).to eq "default"
155
- expect(resource.x).to eq "default"
156
- end
136
+ elsif tags.include?(:skip_nil_default)
137
+ # intentionally left blank
138
+ else
139
+ it "property :x, #{validation}, default: nil warns that the default is invalid" do
140
+ expect { resource_class.class_eval("property :x, #{validation}, default: nil", __FILE__, __LINE__) }.to raise_error Chef::Exceptions::ValidationFailed,
141
+ /Property x must be one of: .* You passed nil./
157
142
  end
158
143
  end
159
144
  end
@@ -174,12 +159,10 @@ describe "Chef::Resource.property validation" do
174
159
  it "set to invalid value raises ValidationFailed" do
175
160
  expect { resource.x 10 }.to raise_error Chef::Exceptions::ValidationFailed
176
161
  end
177
- it "set to nil emits a deprecation warning and does a get" do
178
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
179
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
162
+ it "set to nil does a set" do
180
163
  resource.x "str"
181
- expect(resource.x nil).to eq "str"
182
- expect(resource.x).to eq "str"
164
+ expect(resource.x nil).to eq nil
165
+ expect(resource.x).to eq nil
183
166
  end
184
167
  end
185
168
  context "when the variable does not have an initial value" do
@@ -206,12 +189,9 @@ describe "Chef::Resource.property validation" do
206
189
  it "get succeeds" do
207
190
  expect(resource.x).to eq "default"
208
191
  end
209
- it "set(nil) emits a warning that the value will be set, but does not set the value" do
210
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
211
- /An attempt was made to change x from "default" to nil by calling x\(nil\). In Chef 12, this does a get rather than a set. In Chef 13, this will change to set the value to nil./
212
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
213
- expect(resource.x nil).to eq "default"
214
- expect(resource.x).to eq "default"
192
+ it "set(nil) does a set" do
193
+ expect(resource.x nil).to eq nil
194
+ expect(resource.x).to eq nil
215
195
  end
216
196
  it "set to valid value succeeds" do
217
197
  expect(resource.x "str").to eq "str"
@@ -328,11 +308,17 @@ describe "Chef::Resource.property validation" do
328
308
  # Proc
329
309
  validation_test "is: proc { |x| x }",
330
310
  [ true, 1 ],
331
- [ false ]
311
+ [ false ],
312
+ # this is somewhat complicated, we test adding `default: nil` and that the default fails, but with a proc the
313
+ # validation is delayed until access, so we have to test after access not after declaring the default
314
+ :delayed_nil_default_failure
332
315
 
333
316
  validation_test "is: proc { |x| x > blah }",
334
317
  [ 10 ],
335
- [ -1 ]
318
+ [ -1 ],
319
+ # here the test of adding `default: nil` just causes the proc to explode because nil gets passed to the proc
320
+ # which throws a NoMethodError on NilClass for the `>` method.
321
+ :skip_nil_default
336
322
 
337
323
  validation_test "is: nil",
338
324
  [ ],
@@ -589,15 +575,21 @@ describe "Chef::Resource.property validation" do
589
575
  it "value nil emits a validation failed error because it must have a value" do
590
576
  expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
591
577
  end
592
- context "and value is set to something other than nil" do
593
- before { resource.x 10 }
594
- it "value nil emits a deprecation warning and does a get" do
595
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
596
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
597
- resource.x 1
598
- expect(resource.x nil).to eq 1
599
- expect(resource.x).to eq 1
600
- end
578
+ end
579
+
580
+ with_property ":x, String, required: true" do
581
+ it "if x is not specified, retrieval fails" do
582
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
583
+ end
584
+ it "value nil is not valid (required means 'not nil')" do
585
+ expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
586
+ end
587
+ it "value '1' is valid" do
588
+ expect(resource.x "1").to eq "1"
589
+ expect(resource.x).to eq "1"
590
+ end
591
+ it "value 1 is invalid" do
592
+ expect { resource.x 1 }.to raise_error Chef::Exceptions::ValidationFailed
601
593
  end
602
594
  end
603
595
 
@@ -625,12 +617,8 @@ describe "Chef::Resource.property validation" do
625
617
  expect(resource.x 1).to eq 1
626
618
  expect(resource.x).to eq 1
627
619
  end
628
- it "value nil emits a deprecation warning and does a get" do
629
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
630
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
631
- resource.x 1
632
- expect(resource.x nil).to eq 1
633
- expect(resource.x).to eq 1
620
+ it "value nil is invalid" do
621
+ expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
634
622
  end
635
623
  end
636
624
 
@@ -643,11 +631,7 @@ describe "Chef::Resource.property validation" do
643
631
  expect(resource.x).to eq 1
644
632
  end
645
633
  it "value nil is invalid" do
646
- expect { resource.x nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
647
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
648
- resource.x 1
649
- expect(resource.x nil).to eq 1
650
- expect(resource.x).to eq 1
634
+ expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
651
635
  end
652
636
  end
653
637
  end
@@ -675,15 +659,13 @@ describe "Chef::Resource.property validation" do
675
659
  end
676
660
 
677
661
  it "value '1' is invalid" do
678
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
679
662
  expect { resource.x "1" }.to raise_error Chef::Exceptions::ValidationFailed
680
663
  end
681
664
 
682
- it "value nil does a get" do
683
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
665
+ it "value nil does a set" do
684
666
  resource.x 1
685
667
  resource.x nil
686
- expect(resource.x).to eq 1
668
+ expect(resource.x).to eq nil
687
669
  end
688
670
  end
689
671
  end
@@ -709,10 +691,10 @@ describe "Chef::Resource.property validation" do
709
691
  expect { resource.x "1" }.to raise_error Chef::Exceptions::ValidationFailed
710
692
  end
711
693
 
712
- it "value nil does a get" do
694
+ it "value nil does a set" do
713
695
  resource.x 1
714
696
  resource.x nil
715
- expect(resource.x).to eq 1
697
+ expect(resource.x).to eq nil
716
698
  end
717
699
  end
718
700
  end
@@ -82,12 +82,10 @@ describe "Chef::Resource.property" do
82
82
  expect(resource.bare_property 10).to eq 10
83
83
  expect(resource.bare_property).to eq 10
84
84
  end
85
- it "emits a deprecation warning and does a get, if set to nil" do
85
+ it "nil does a set" do
86
86
  expect(resource.bare_property 10).to eq 10
87
- expect { resource.bare_property nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError
88
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
89
- expect(resource.bare_property nil).to eq 10
90
- expect(resource.bare_property).to eq 10
87
+ expect(resource.bare_property nil).to eq nil
88
+ expect(resource.bare_property).to eq nil
91
89
  end
92
90
  it "can be updated" do
93
91
  expect(resource.bare_property 10).to eq 10
@@ -110,6 +108,16 @@ describe "Chef::Resource.property" do
110
108
  end
111
109
  end
112
110
 
111
+ with_property ":Straße" do
112
+ it "properties with UTF-8 in their name work" do
113
+ expect(resource.Straße).to eql(nil)
114
+ expect(resource.Straße "foo").to eql("foo")
115
+ expect(resource.Straße).to eql("foo")
116
+ expect(resource.Straße = "bar").to eql("bar")
117
+ expect(resource.Straße).to eql("bar")
118
+ end
119
+ end
120
+
113
121
  with_property ":x, name_property: true" do
114
122
  context "and subclass" do
115
123
  let(:subresource_class) do
@@ -293,7 +301,7 @@ describe "Chef::Resource.property" do
293
301
  expect(resource.property_is_set?(:name)).to be_truthy
294
302
  resource.reset_property(:name)
295
303
  expect(resource.property_is_set?(:name)).to be_falsey
296
- expect(resource.name).to be_nil
304
+ expect { resource.name }.to raise_error Chef::Exceptions::ValidationFailed
297
305
  end
298
306
 
299
307
  it "when referencing an undefined property, reset_property(:x) raises an error" do
@@ -514,22 +522,41 @@ describe "Chef::Resource.property" do
514
522
  end
515
523
  end
516
524
 
517
- context "hash default" do
518
- context "(deprecations allowed)" do
519
- before { Chef::Config[:treat_deprecation_warnings_as_errors] = false }
525
+ context "string default" do
526
+ with_property ":x, default: ''" do
527
+ it "when x is not set, it returns ''" do
528
+ expect(resource.x).to eq ""
529
+ end
530
+ it "x is immutable" do
531
+ expect { resource.x << "foo" }.to raise_error(RuntimeError, "can't modify frozen String")
532
+ end
533
+ end
520
534
 
521
- with_property ":x, default: {}" do
522
- it "when x is not set, it returns {}" do
523
- expect(resource.x).to eq({})
524
- end
525
- it "The same exact value is returned multiple times in a row" do
526
- value = resource.x
527
- expect(value).to eq({})
528
- expect(resource.x.object_id).to eq(value.object_id)
529
- end
530
- it "Multiple instances of x receive the exact same value" do
531
- expect(resource.x.object_id).to eq(resource_class.new("blah2").x.object_id)
532
- end
535
+ with_property ":x, default: lazy { '' }" do
536
+ it "x is immutable" do
537
+ expect(resource.x).to eq ""
538
+ resource.x << "foo"
539
+ expect(resource.x).to eq "foo"
540
+ expect(resource_class.new("other").x).to eq ""
541
+ end
542
+ end
543
+ end
544
+
545
+ context "hash default" do
546
+ with_property ":x, default: {}" do
547
+ it "when x is not set, it returns {}" do
548
+ expect(resource.x).to eq({})
549
+ end
550
+ it "x is immutable" do
551
+ expect { resource.x["foo"] = "bar" }.to raise_error(RuntimeError, "can't modify frozen Hash")
552
+ end
553
+ it "The same exact value is returned multiple times in a row" do
554
+ value = resource.x
555
+ expect(value).to eq({})
556
+ expect(resource.x.object_id).to eq(value.object_id)
557
+ end
558
+ it "Multiple instances of x receive the exact same value" do
559
+ expect(resource.x.object_id).to eq(resource_class.new("blah2").x.object_id)
533
560
  end
534
561
  end
535
562
 
@@ -537,17 +564,34 @@ describe "Chef::Resource.property" do
537
564
  it "when x is not set, it returns {}" do
538
565
  expect(resource.x).to eq({})
539
566
  end
540
- # it "The value is different each time it is called" do
541
- # value = resource.x
542
- # expect(value).to eq({})
543
- # expect(resource.x.object_id).not_to eq(value.object_id)
544
- # end
567
+ it "The value is the same each time it is called" do
568
+ value = resource.x
569
+ expect(value).to eq({})
570
+ expect(resource.x.object_id).to eq(value.object_id)
571
+ end
545
572
  it "Multiple instances of x receive different values" do
546
573
  expect(resource.x.object_id).not_to eq(resource_class.new("blah2").x.object_id)
547
574
  end
548
575
  end
549
576
  end
550
577
 
578
+ context "complex, nested default" do
579
+ with_property ":x, default: [{foo: 'bar'}]" do
580
+ it "when x is not set, it returns [{foo: 'bar'}]" do
581
+ expect(resource.x).to eq([{ foo: "bar" }])
582
+ end
583
+ it "x is immutable" do
584
+ expect { resource.x << :other }.to raise_error(RuntimeError, "can't modify frozen Array")
585
+ end
586
+ it "x.first is immutable" do
587
+ expect { resource.x.first[:foo] = "other" }.to raise_error(RuntimeError, "can't modify frozen Hash")
588
+ end
589
+ it "x.first[:foo] is immutable" do
590
+ expect { resource.x.first[:foo] << "other" }.to raise_error(RuntimeError, "can't modify frozen String")
591
+ end
592
+ end
593
+ end
594
+
551
595
  context "with a class with 'blah' as both class and instance methods" do
552
596
  before do
553
597
  resource_class.class_eval do
@@ -568,7 +612,6 @@ describe "Chef::Resource.property" do
568
612
  it "x is run in the context of each instance it is run in" do
569
613
  expect(resource.x).to eq "blah1"
570
614
  expect(resource_class.new("another").x).to eq "another2"
571
- # expect(resource.x).to eq "blah3"
572
615
  end
573
616
  end
574
617
 
@@ -579,30 +622,13 @@ describe "Chef::Resource.property" do
579
622
  it "x is passed the value of each instance it is run in" do
580
623
  expect(resource.x).to eq "classblah1"
581
624
  expect(resource_class.new("another").x).to eq "classanother2"
582
- # expect(resource.x).to eq "classblah3"
583
625
  end
584
626
  end
585
627
  end
586
628
 
587
629
  context "validation of defaults" do
588
- it "When a class is declared with property :x, String, default: 10, a warning is emitted" do
589
- expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
590
- /Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: String! You passed 10./
591
- end
592
- context "With property :x, String, default: 10" do
593
- before do
594
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
595
- resource_class.class_eval { property :x, String, default: 10 }
596
- Chef::Config[:treat_deprecation_warnings_as_errors] = true
597
- end
598
-
599
- it "when x is set, no error is raised" do
600
- expect(resource.x "hi").to eq "hi"
601
- expect(resource.x).to eq "hi"
602
- end
603
- it "when x is retrieved, no validation error is raised" do
604
- expect(resource.x).to eq 10
605
- end
630
+ it "When a class is declared with property :x, String, default: 10, it immediately fails validation" do
631
+ expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::ValidationFailed
606
632
  end
607
633
 
608
634
  with_property ":x, String, default: lazy { Namer.next_index }" do
@@ -613,12 +639,9 @@ describe "Chef::Resource.property" do
613
639
  expect(resource.x "hi").to eq "hi"
614
640
  expect(resource.x).to eq "hi"
615
641
  end
616
- it "when x is retrieved, an invalid default warning is emitted and the value is returned" do
617
- expect { resource.x }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
618
- /Default value 1 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: String! You passed 1./
642
+ it "when x is retrieved, it fails validation" do
643
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
619
644
  expect(Namer.current_index).to eq 1
620
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
621
- expect(resource.x).to eq 2
622
645
  end
623
646
  end
624
647
 
@@ -731,11 +754,8 @@ describe "Chef::Resource.property" do
731
754
  end
732
755
  end
733
756
  with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
734
- it "when x is retrieved, it is coerced and emits an invalid default warning, but still returns the value" do
735
- expect { resource.x }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
736
- /Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: Integer! You passed "101"./
737
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
738
- expect(resource.x).to eq "102"
757
+ it "when x is retrieved, it is coerced and fails validation" do
758
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
739
759
  end
740
760
  end
741
761
  with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
@@ -744,11 +764,8 @@ describe "Chef::Resource.property" do
744
764
  end
745
765
  end
746
766
  with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
747
- it "when x is retrieved, it is coerced and emits an invalid default warning; the value is still returned." do
748
- expect { resource.x }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
749
- /Default value 10 is invalid for property x of resource chef_resource_property_spec_(\d+). In Chef 13 this will become an error: Property x must be one of: Integer! You passed "101"./
750
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
751
- expect(resource.x).to eq "102"
767
+ it "when x is retrieved, it is coerced and fails validation" do
768
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
752
769
  end
753
770
  end
754
771
  with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
@@ -1019,74 +1036,23 @@ describe "Chef::Resource.property" do
1019
1036
  end
1020
1037
 
1021
1038
  context "default ordering deprecation warnings" do
1022
- it "emits a deprecation warning for property :x, default: 10, #{name}: true" do
1023
- expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
1024
- /Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(default\) will be obeyed./
1025
- end
1026
- it "emits a deprecation warning for property :x, default: nil, #{name}: true" do
1027
- expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
1028
- /Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
1029
- end
1030
- it "emits a deprecation warning for property :x, #{name}: true, default: 10" do
1031
- expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
1032
- /Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
1033
- end
1034
- it "emits a deprecation warning for property :x, #{name}: true, default: nil" do
1035
- expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error Chef::Exceptions::DeprecatedFeatureError,
1036
- /Cannot specify both default and name_property together on property x of resource chef_resource_property_spec_(\d+). Only one \(name_property\) will be obeyed./
1037
- end
1038
- end
1039
-
1040
- context "default ordering" do
1041
- before { Chef::Config[:treat_deprecation_warnings_as_errors] = false }
1042
- with_property ":x, default: 10, #{name}: true" do
1043
- it "chooses default over #{name}" do
1044
- expect(resource.x).to eq 10
1045
- end
1039
+ it "emits an error for property :x, default: 10, #{name}: true" do
1040
+ expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error Chef::Exceptions::ArgumentError,
1041
+ /Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
1046
1042
  end
1047
- with_property ":x, default: nil, #{name}: true" do
1048
- it "chooses #{name} over default" do
1049
- expect(resource.x).to eq "blah"
1050
- end
1043
+ it "emits an error for property :x, default: nil, #{name}: true" do
1044
+ expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error Chef::Exceptions::ArgumentError,
1045
+ /Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
1051
1046
  end
1052
- with_property ":x, #{name}: true, default: 10" do
1053
- it "chooses #{name} over default" do
1054
- expect(resource.x).to eq "blah"
1055
- end
1047
+ it "emits an error for property :x, #{name}: true, default: 10" do
1048
+ expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error Chef::Exceptions::ArgumentError,
1049
+ /Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
1056
1050
  end
1057
- with_property ":x, #{name}: true, default: nil" do
1058
- it "chooses #{name} over default" do
1059
- expect(resource.x).to eq "blah"
1060
- end
1051
+ it "emits an error for property :x, #{name}: true, default: nil" do
1052
+ expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error Chef::Exceptions::ArgumentError,
1053
+ /Cannot specify both default and name_property\/name_attribute together on property x of resource chef_resource_property_spec_(\d+)/
1061
1054
  end
1062
1055
  end
1063
-
1064
- context "default ordering when #{name} is nil" do
1065
- with_property ":x, #{name}: nil, default: 10" do
1066
- it "chooses default" do
1067
- expect(resource.x).to eq 10
1068
- end
1069
- end
1070
- with_property ":x, default: 10, #{name}: nil" do
1071
- it "chooses default" do
1072
- expect(resource.x).to eq 10
1073
- end
1074
- end
1075
- end
1076
-
1077
- context "default ordering when #{name} is false" do
1078
- with_property ":x, #{name}: false, default: 10" do
1079
- it "chooses default" do
1080
- expect(resource.x).to eq 10
1081
- end
1082
- end
1083
- with_property ":x, default: 10, #{name}: nil" do
1084
- it "chooses default" do
1085
- expect(resource.x).to eq 10
1086
- end
1087
- end
1088
- end
1089
-
1090
1056
  end
1091
1057
  end
1092
1058
 
@@ -1108,7 +1074,7 @@ describe "Chef::Resource.property" do
1108
1074
  include Chef::Mixin::Properties
1109
1075
  property_type(is: [:a, :b], default: :c)
1110
1076
  end
1111
- end.to raise_error(Chef::Exceptions::DeprecatedFeatureError, /Default value :c is invalid for property <property type>./)
1077
+ end.to raise_error(Chef::Exceptions::ValidationFailed)
1112
1078
  expect do
1113
1079
  module ::PropertySpecPropertyTypes
1114
1080
  include Chef::Mixin::Properties
@@ -1177,6 +1143,20 @@ describe "Chef::Resource.property" do
1177
1143
 
1178
1144
  end
1179
1145
 
1146
+ context "redefining Object methods" do
1147
+ it "disallows redefining Object methods" do
1148
+ expect { resource_class.class_eval { property :hash } }.to raise_error(ArgumentError)
1149
+ end
1150
+
1151
+ it "disallows redefining Chef::Resource methods" do
1152
+ expect { resource_class.class_eval { property :action } }.to raise_error(ArgumentError)
1153
+ end
1154
+
1155
+ it "allows redefining properties on Chef::Resource" do
1156
+ expect { resource_class.class_eval { property :sensitive } }.not_to raise_error
1157
+ end
1158
+ end
1159
+
1180
1160
  context "with a custom property type" do
1181
1161
  class CustomPropertyType < Chef::Property
1182
1162
  end