chef 14.13.11-universal-mingw32 → 14.14.14-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1980) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +72 -72
  3. data/LICENSE +201 -201
  4. data/README.md +240 -240
  5. data/Rakefile +72 -72
  6. data/bin/chef-apply +24 -24
  7. data/bin/chef-client +25 -25
  8. data/bin/chef-resource-inspector +26 -26
  9. data/bin/chef-service-manager +37 -37
  10. data/bin/chef-shell +31 -31
  11. data/bin/chef-solo +24 -24
  12. data/bin/chef-windows-service +34 -34
  13. data/bin/knife +24 -24
  14. data/chef-universal-mingw32.gemspec +24 -24
  15. data/chef.gemspec +62 -62
  16. data/distro/powershell/chef/chef.psm1 +459 -459
  17. data/ext/win32-eventlog/Rakefile +53 -53
  18. data/ext/win32-eventlog/chef-log.man +56 -56
  19. data/lib/.DS_Store +0 -0
  20. data/lib/chef.rb +34 -34
  21. data/lib/chef/.DS_Store +0 -0
  22. data/lib/chef/api_client.rb +228 -228
  23. data/lib/chef/api_client/registration.rb +200 -200
  24. data/lib/chef/api_client_v1.rb +326 -326
  25. data/lib/chef/application.rb +398 -398
  26. data/lib/chef/application/apply.rb +226 -226
  27. data/lib/chef/application/client.rb +559 -559
  28. data/lib/chef/application/exit_code.rb +164 -164
  29. data/lib/chef/application/knife.rb +221 -221
  30. data/lib/chef/application/solo.rb +381 -381
  31. data/lib/chef/application/windows_service.rb +337 -337
  32. data/lib/chef/application/windows_service_manager.rb +204 -204
  33. data/lib/chef/applications.rb +4 -4
  34. data/lib/chef/audit/audit_event_proxy.rb +93 -93
  35. data/lib/chef/audit/audit_reporter.rb +176 -176
  36. data/lib/chef/audit/control_group_data.rb +145 -145
  37. data/lib/chef/audit/logger.rb +36 -36
  38. data/lib/chef/audit/rspec_formatter.rb +37 -37
  39. data/lib/chef/audit/runner.rb +196 -196
  40. data/lib/chef/blacklist.rb +81 -81
  41. data/lib/chef/chef_class.rb +248 -248
  42. data/lib/chef/chef_fs.rb +59 -59
  43. data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
  44. data/lib/chef/chef_fs/command_line.rb +291 -291
  45. data/lib/chef/chef_fs/config.rb +284 -284
  46. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
  47. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
  48. data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
  49. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
  50. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
  51. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
  52. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +207 -207
  53. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
  54. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
  55. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
  56. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
  57. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
  58. data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
  59. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
  60. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
  61. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
  62. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
  63. data/lib/chef/chef_fs/file_pattern.rb +301 -301
  64. data/lib/chef/chef_fs/file_system.rb +431 -431
  65. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
  66. data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
  67. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
  68. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +67 -67
  69. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
  70. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
  71. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
  72. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +106 -106
  73. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
  74. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
  75. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
  76. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
  77. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +105 -105
  78. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
  79. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
  80. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
  81. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
  82. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
  83. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
  84. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
  85. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
  86. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
  87. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +158 -158
  88. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +135 -135
  89. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
  90. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +38 -38
  91. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
  92. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
  93. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
  94. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +111 -111
  95. data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
  96. data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
  97. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
  98. data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
  99. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +62 -62
  100. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
  101. data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
  102. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
  103. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
  104. data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
  105. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
  106. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +143 -143
  107. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
  108. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +232 -232
  109. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
  110. data/lib/chef/chef_fs/file_system/repository/client.rb +38 -38
  111. data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
  112. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
  113. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
  114. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
  115. data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
  116. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
  117. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
  118. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
  119. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
  120. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
  121. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
  122. data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
  123. data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
  124. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
  125. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
  126. data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
  127. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
  128. data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
  129. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
  130. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
  131. data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
  132. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
  133. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
  134. data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
  135. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
  136. data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
  137. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
  138. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
  139. data/lib/chef/chef_fs/file_system_cache.rb +80 -80
  140. data/lib/chef/chef_fs/knife.rb +161 -161
  141. data/lib/chef/chef_fs/parallelizer.rb +103 -103
  142. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
  143. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
  144. data/lib/chef/chef_fs/path_utils.rb +127 -127
  145. data/lib/chef/client.rb +1037 -1037
  146. data/lib/chef/config.rb +84 -84
  147. data/lib/chef/config_fetcher.rb +72 -72
  148. data/lib/chef/constants.rb +28 -28
  149. data/lib/chef/cookbook/chefignore.rb +78 -78
  150. data/lib/chef/cookbook/cookbook_collection.rb +63 -63
  151. data/lib/chef/cookbook/cookbook_version_loader.rb +267 -267
  152. data/lib/chef/cookbook/file_system_file_vendor.rb +58 -58
  153. data/lib/chef/cookbook/file_vendor.rb +71 -71
  154. data/lib/chef/cookbook/gem_installer.rb +100 -95
  155. data/lib/chef/cookbook/manifest_v0.rb +73 -73
  156. data/lib/chef/cookbook/manifest_v2.rb +45 -45
  157. data/lib/chef/cookbook/metadata.rb +804 -804
  158. data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
  159. data/lib/chef/cookbook/synchronizer.rb +312 -312
  160. data/lib/chef/cookbook/syntax_check.rb +260 -260
  161. data/lib/chef/cookbook_loader.rb +208 -208
  162. data/lib/chef/cookbook_manifest.rb +328 -328
  163. data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
  164. data/lib/chef/cookbook_uploader.rb +156 -156
  165. data/lib/chef/cookbook_version.rb +544 -544
  166. data/lib/chef/daemon.rb +131 -131
  167. data/lib/chef/data_bag.rb +174 -174
  168. data/lib/chef/data_bag_item.rb +209 -209
  169. data/lib/chef/data_collector.rb +565 -565
  170. data/lib/chef/data_collector/messages.rb +100 -100
  171. data/lib/chef/data_collector/messages/helpers.rb +159 -159
  172. data/lib/chef/data_collector/resource_report.rb +123 -123
  173. data/lib/chef/decorator.rb +81 -81
  174. data/lib/chef/decorator/lazy.rb +60 -60
  175. data/lib/chef/decorator/lazy_array.rb +59 -59
  176. data/lib/chef/decorator/unchain.rb +43 -43
  177. data/lib/chef/delayed_evaluator.rb +21 -21
  178. data/lib/chef/deprecated.rb +248 -248
  179. data/lib/chef/deprecation/warnings.rb +38 -38
  180. data/lib/chef/digester.rb +74 -74
  181. data/lib/chef/dsl.rb +6 -6
  182. data/lib/chef/dsl/.DS_Store +0 -0
  183. data/lib/chef/dsl/audit.rb +51 -51
  184. data/lib/chef/dsl/chef_provisioning.rb +57 -57
  185. data/lib/chef/dsl/cheffish.rb +65 -65
  186. data/lib/chef/dsl/core.rb +52 -52
  187. data/lib/chef/dsl/data_query.rb +103 -103
  188. data/lib/chef/dsl/declare_resource.rb +319 -319
  189. data/lib/chef/dsl/definitions.rb +43 -43
  190. data/lib/chef/dsl/include_attribute.rb +57 -57
  191. data/lib/chef/dsl/include_recipe.rb +40 -40
  192. data/lib/chef/dsl/platform_introspection.rb +269 -269
  193. data/lib/chef/dsl/powershell.rb +29 -29
  194. data/lib/chef/dsl/reboot_pending.rb +57 -57
  195. data/lib/chef/dsl/recipe.rb +76 -76
  196. data/lib/chef/dsl/registry_helper.rb +63 -63
  197. data/lib/chef/dsl/resources.rb +49 -49
  198. data/lib/chef/dsl/universal.rb +60 -60
  199. data/lib/chef/encrypted_data_bag_item.rb +157 -157
  200. data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
  201. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
  202. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
  203. data/lib/chef/encrypted_data_bag_item/decryptor.rb +227 -227
  204. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
  205. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
  206. data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
  207. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
  208. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
  209. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
  210. data/lib/chef/environment.rb +319 -319
  211. data/lib/chef/event_dispatch/base.rb +445 -445
  212. data/lib/chef/event_dispatch/dispatcher.rb +62 -62
  213. data/lib/chef/event_dispatch/dsl.rb +65 -65
  214. data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
  215. data/lib/chef/event_loggers/base.rb +62 -62
  216. data/lib/chef/event_loggers/windows_eventlog.rb +101 -101
  217. data/lib/chef/exceptions.rb +543 -531
  218. data/lib/chef/file_access_control.rb +75 -75
  219. data/lib/chef/file_access_control/unix.rb +290 -290
  220. data/lib/chef/file_access_control/windows.rb +337 -337
  221. data/lib/chef/file_cache.rb +223 -223
  222. data/lib/chef/file_content_management/content_base.rb +58 -58
  223. data/lib/chef/file_content_management/deploy.rb +37 -37
  224. data/lib/chef/file_content_management/deploy/cp.rb +48 -48
  225. data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -77
  226. data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
  227. data/lib/chef/file_content_management/tempfile.rb +107 -107
  228. data/lib/chef/formatters/base.rb +246 -246
  229. data/lib/chef/formatters/doc.rb +443 -443
  230. data/lib/chef/formatters/error_description.rb +86 -86
  231. data/lib/chef/formatters/error_inspectors.rb +19 -19
  232. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +183 -183
  233. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
  234. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
  235. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
  236. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +128 -128
  237. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +147 -147
  238. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +124 -124
  239. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +121 -121
  240. data/lib/chef/formatters/error_mapper.rb +85 -85
  241. data/lib/chef/formatters/indentable_output_stream.rb +182 -182
  242. data/lib/chef/formatters/minimal.rb +233 -233
  243. data/lib/chef/guard_interpreter.rb +32 -32
  244. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +47 -47
  245. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
  246. data/lib/chef/handler.rb +266 -266
  247. data/lib/chef/handler/error_report.rb +33 -33
  248. data/lib/chef/handler/json_file.rb +62 -62
  249. data/lib/chef/http.rb +539 -539
  250. data/lib/chef/http/api_versions.rb +56 -56
  251. data/lib/chef/http/auth_credentials.rb +59 -59
  252. data/lib/chef/http/authenticator.rb +118 -118
  253. data/lib/chef/http/basic_client.rb +157 -157
  254. data/lib/chef/http/cookie_jar.rb +31 -31
  255. data/lib/chef/http/cookie_manager.rb +59 -59
  256. data/lib/chef/http/decompressor.rb +142 -142
  257. data/lib/chef/http/http_request.rb +189 -189
  258. data/lib/chef/http/json_input.rb +73 -73
  259. data/lib/chef/http/json_output.rb +81 -81
  260. data/lib/chef/http/json_to_model_output.rb +34 -34
  261. data/lib/chef/http/remote_request_id.rb +46 -46
  262. data/lib/chef/http/simple.rb +40 -40
  263. data/lib/chef/http/simple_json.rb +43 -43
  264. data/lib/chef/http/socketless_chef_zero_client.rb +209 -209
  265. data/lib/chef/http/ssl_policies.rb +130 -130
  266. data/lib/chef/http/validate_content_length.rb +114 -114
  267. data/lib/chef/json_compat.rb +68 -68
  268. data/lib/chef/key.rb +269 -269
  269. data/lib/chef/knife.rb +620 -620
  270. data/lib/chef/knife/.DS_Store +0 -0
  271. data/lib/chef/knife/bootstrap.rb +525 -501
  272. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +159 -159
  273. data/lib/chef/knife/bootstrap/client_builder.rb +208 -208
  274. data/lib/chef/knife/bootstrap/templates/README.md +11 -11
  275. data/lib/chef/knife/bootstrap/templates/chef-full.erb +243 -243
  276. data/lib/chef/knife/client_bulk_delete.rb +103 -103
  277. data/lib/chef/knife/client_create.rb +110 -110
  278. data/lib/chef/knife/client_delete.rb +62 -62
  279. data/lib/chef/knife/client_edit.rb +52 -52
  280. data/lib/chef/knife/client_key_create.rb +70 -70
  281. data/lib/chef/knife/client_key_delete.rb +77 -77
  282. data/lib/chef/knife/client_key_edit.rb +80 -80
  283. data/lib/chef/knife/client_key_list.rb +70 -70
  284. data/lib/chef/knife/client_key_show.rb +77 -77
  285. data/lib/chef/knife/client_list.rb +41 -41
  286. data/lib/chef/knife/client_reregister.rb +58 -58
  287. data/lib/chef/knife/client_show.rb +48 -48
  288. data/lib/chef/knife/config_get.rb +126 -126
  289. data/lib/chef/knife/config_get_profile.rb +37 -37
  290. data/lib/chef/knife/config_list_profiles.rb +121 -121
  291. data/lib/chef/knife/config_use_profile.rb +50 -50
  292. data/lib/chef/knife/configure.rb +147 -147
  293. data/lib/chef/knife/configure_client.rb +48 -48
  294. data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
  295. data/lib/chef/knife/cookbook_create.rb +29 -29
  296. data/lib/chef/knife/cookbook_delete.rb +151 -151
  297. data/lib/chef/knife/cookbook_download.rb +142 -142
  298. data/lib/chef/knife/cookbook_list.rb +47 -47
  299. data/lib/chef/knife/cookbook_metadata.rb +106 -106
  300. data/lib/chef/knife/cookbook_metadata_from_file.rb +43 -43
  301. data/lib/chef/knife/cookbook_show.rb +98 -98
  302. data/lib/chef/knife/cookbook_site_download.rb +40 -40
  303. data/lib/chef/knife/cookbook_site_install.rb +40 -40
  304. data/lib/chef/knife/cookbook_site_list.rb +40 -40
  305. data/lib/chef/knife/cookbook_site_search.rb +40 -40
  306. data/lib/chef/knife/cookbook_site_share.rb +41 -41
  307. data/lib/chef/knife/cookbook_site_show.rb +40 -40
  308. data/lib/chef/knife/cookbook_site_unshare.rb +41 -41
  309. data/lib/chef/knife/cookbook_test.rb +95 -95
  310. data/lib/chef/knife/cookbook_upload.rb +308 -308
  311. data/lib/chef/knife/core/bootstrap_context.rb +273 -273
  312. data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
  313. data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
  314. data/lib/chef/knife/core/generic_presenter.rb +231 -231
  315. data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
  316. data/lib/chef/knife/core/node_editor.rb +130 -130
  317. data/lib/chef/knife/core/node_presenter.rb +158 -158
  318. data/lib/chef/knife/core/object_loader.rb +115 -115
  319. data/lib/chef/knife/core/status_presenter.rb +172 -172
  320. data/lib/chef/knife/core/subcommand_loader.rb +183 -183
  321. data/lib/chef/knife/core/text_formatter.rb +85 -85
  322. data/lib/chef/knife/core/ui.rb +286 -286
  323. data/lib/chef/knife/data_bag_create.rb +80 -80
  324. data/lib/chef/knife/data_bag_delete.rb +49 -49
  325. data/lib/chef/knife/data_bag_edit.rb +74 -74
  326. data/lib/chef/knife/data_bag_from_file.rb +113 -113
  327. data/lib/chef/knife/data_bag_list.rb +42 -42
  328. data/lib/chef/knife/data_bag_secret_options.rb +142 -142
  329. data/lib/chef/knife/data_bag_show.rb +69 -69
  330. data/lib/chef/knife/delete.rb +125 -125
  331. data/lib/chef/knife/deps.rb +154 -154
  332. data/lib/chef/knife/diff.rb +84 -84
  333. data/lib/chef/knife/download.rb +84 -84
  334. data/lib/chef/knife/edit.rb +88 -88
  335. data/lib/chef/knife/environment_compare.rb +127 -127
  336. data/lib/chef/knife/environment_create.rb +52 -52
  337. data/lib/chef/knife/environment_delete.rb +44 -44
  338. data/lib/chef/knife/environment_edit.rb +44 -44
  339. data/lib/chef/knife/environment_from_file.rb +84 -84
  340. data/lib/chef/knife/environment_list.rb +41 -41
  341. data/lib/chef/knife/environment_show.rb +47 -47
  342. data/lib/chef/knife/exec.rb +87 -87
  343. data/lib/chef/knife/key_create.rb +112 -112
  344. data/lib/chef/knife/key_create_base.rb +50 -50
  345. data/lib/chef/knife/key_delete.rb +55 -55
  346. data/lib/chef/knife/key_edit.rb +118 -118
  347. data/lib/chef/knife/key_edit_base.rb +55 -55
  348. data/lib/chef/knife/key_list.rb +88 -88
  349. data/lib/chef/knife/key_list_base.rb +45 -45
  350. data/lib/chef/knife/key_show.rb +53 -53
  351. data/lib/chef/knife/list.rb +172 -172
  352. data/lib/chef/knife/node_bulk_delete.rb +74 -74
  353. data/lib/chef/knife/node_create.rb +47 -47
  354. data/lib/chef/knife/node_delete.rb +46 -46
  355. data/lib/chef/knife/node_edit.rb +70 -70
  356. data/lib/chef/knife/node_environment_set.rb +54 -54
  357. data/lib/chef/knife/node_from_file.rb +51 -51
  358. data/lib/chef/knife/node_list.rb +44 -44
  359. data/lib/chef/knife/node_policy_set.rb +79 -79
  360. data/lib/chef/knife/node_run_list_add.rb +104 -104
  361. data/lib/chef/knife/node_run_list_remove.rb +67 -67
  362. data/lib/chef/knife/node_run_list_set.rb +66 -66
  363. data/lib/chef/knife/node_show.rb +61 -61
  364. data/lib/chef/knife/null.rb +10 -10
  365. data/lib/chef/knife/osc_user_create.rb +97 -97
  366. data/lib/chef/knife/osc_user_delete.rb +51 -51
  367. data/lib/chef/knife/osc_user_edit.rb +58 -58
  368. data/lib/chef/knife/osc_user_list.rb +47 -47
  369. data/lib/chef/knife/osc_user_reregister.rb +64 -64
  370. data/lib/chef/knife/osc_user_show.rb +53 -53
  371. data/lib/chef/knife/raw.rb +124 -124
  372. data/lib/chef/knife/recipe_list.rb +32 -32
  373. data/lib/chef/knife/rehash.rb +65 -65
  374. data/lib/chef/knife/role_bulk_delete.rb +65 -65
  375. data/lib/chef/knife/role_create.rb +53 -53
  376. data/lib/chef/knife/role_delete.rb +46 -46
  377. data/lib/chef/knife/role_edit.rb +45 -45
  378. data/lib/chef/knife/role_env_run_list_add.rb +87 -87
  379. data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
  380. data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
  381. data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
  382. data/lib/chef/knife/role_env_run_list_set.rb +70 -70
  383. data/lib/chef/knife/role_from_file.rb +51 -51
  384. data/lib/chef/knife/role_list.rb +42 -42
  385. data/lib/chef/knife/role_run_list_add.rb +87 -87
  386. data/lib/chef/knife/role_run_list_clear.rb +55 -55
  387. data/lib/chef/knife/role_run_list_remove.rb +56 -56
  388. data/lib/chef/knife/role_run_list_replace.rb +60 -60
  389. data/lib/chef/knife/role_run_list_set.rb +69 -69
  390. data/lib/chef/knife/role_show.rb +48 -48
  391. data/lib/chef/knife/search.rb +194 -194
  392. data/lib/chef/knife/serve.rb +64 -64
  393. data/lib/chef/knife/show.rb +72 -72
  394. data/lib/chef/knife/ssh.rb +634 -634
  395. data/lib/chef/knife/ssl_check.rb +283 -283
  396. data/lib/chef/knife/ssl_fetch.rb +161 -161
  397. data/lib/chef/knife/status.rb +110 -110
  398. data/lib/chef/knife/supermarket_download.rb +122 -122
  399. data/lib/chef/knife/supermarket_install.rb +193 -193
  400. data/lib/chef/knife/supermarket_list.rb +65 -65
  401. data/lib/chef/knife/supermarket_search.rb +53 -53
  402. data/lib/chef/knife/supermarket_share.rb +166 -166
  403. data/lib/chef/knife/supermarket_show.rb +67 -67
  404. data/lib/chef/knife/supermarket_unshare.rb +61 -61
  405. data/lib/chef/knife/tag_create.rb +52 -52
  406. data/lib/chef/knife/tag_delete.rb +60 -60
  407. data/lib/chef/knife/tag_list.rb +47 -47
  408. data/lib/chef/knife/upload.rb +86 -86
  409. data/lib/chef/knife/user_create.rb +151 -151
  410. data/lib/chef/knife/user_delete.rb +96 -96
  411. data/lib/chef/knife/user_edit.rb +82 -82
  412. data/lib/chef/knife/user_key_create.rb +70 -70
  413. data/lib/chef/knife/user_key_delete.rb +77 -77
  414. data/lib/chef/knife/user_key_edit.rb +80 -80
  415. data/lib/chef/knife/user_key_list.rb +70 -70
  416. data/lib/chef/knife/user_key_show.rb +77 -77
  417. data/lib/chef/knife/user_list.rb +44 -44
  418. data/lib/chef/knife/user_reregister.rb +90 -90
  419. data/lib/chef/knife/user_show.rb +79 -79
  420. data/lib/chef/knife/xargs.rb +282 -282
  421. data/lib/chef/local_mode.rb +129 -129
  422. data/lib/chef/log.rb +70 -70
  423. data/lib/chef/log/syslog.rb +45 -45
  424. data/lib/chef/log/winevt.rb +99 -99
  425. data/lib/chef/mash.rb +232 -232
  426. data/lib/chef/mixin/.DS_Store +0 -0
  427. data/lib/chef/mixin/api_version_request_handling.rb +64 -64
  428. data/lib/chef/mixin/checksum.rb +37 -37
  429. data/lib/chef/mixin/convert_to_class_name.rb +126 -126
  430. data/lib/chef/mixin/create_path.rb +71 -71
  431. data/lib/chef/mixin/deep_merge.rb +140 -140
  432. data/lib/chef/mixin/deprecation.rb +117 -117
  433. data/lib/chef/mixin/descendants_tracker.rb +81 -81
  434. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
  435. data/lib/chef/mixin/file_class.rb +35 -35
  436. data/lib/chef/mixin/from_file.rb +55 -55
  437. data/lib/chef/mixin/get_source_from_package.rb +47 -47
  438. data/lib/chef/mixin/homebrew_user.rb +79 -79
  439. data/lib/chef/mixin/lazy_module_include.rb +77 -77
  440. data/lib/chef/mixin/notifying_block.rb +51 -51
  441. data/lib/chef/mixin/openssl_helper.rb +402 -402
  442. data/lib/chef/mixin/params_validate.rb +498 -498
  443. data/lib/chef/mixin/path_sanity.rb +66 -66
  444. data/lib/chef/mixin/powershell_exec.rb +105 -105
  445. data/lib/chef/mixin/powershell_out.rb +98 -98
  446. data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
  447. data/lib/chef/mixin/properties.rb +323 -323
  448. data/lib/chef/mixin/provides.rb +29 -29
  449. data/lib/chef/mixin/proxified_socket.rb +42 -42
  450. data/lib/chef/mixin/securable.rb +192 -192
  451. data/lib/chef/mixin/shell_out.rb +258 -258
  452. data/lib/chef/mixin/subclass_directive.rb +37 -37
  453. data/lib/chef/mixin/template.rb +265 -265
  454. data/lib/chef/mixin/unformatter.rb +32 -32
  455. data/lib/chef/mixin/uris.rb +42 -42
  456. data/lib/chef/mixin/user_context.rb +55 -55
  457. data/lib/chef/mixin/versioned_api.rb +84 -84
  458. data/lib/chef/mixin/which.rb +52 -52
  459. data/lib/chef/mixin/why_run.rb +326 -326
  460. data/lib/chef/mixin/wide_string.rb +54 -54
  461. data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
  462. data/lib/chef/mixin/windows_env_helper.rb +67 -67
  463. data/lib/chef/mixin/xml_escape.rb +138 -138
  464. data/lib/chef/mixins.rb +12 -12
  465. data/lib/chef/monkey_patches/net_http.rb +64 -64
  466. data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
  467. data/lib/chef/monkey_patches/win32/registry.rb +86 -86
  468. data/lib/chef/monologger.rb +4 -4
  469. data/lib/chef/nil_argument.rb +3 -3
  470. data/lib/chef/node.rb +688 -688
  471. data/lib/chef/node/attribute.rb +649 -649
  472. data/lib/chef/node/attribute_collections.rb +213 -213
  473. data/lib/chef/node/common_api.rb +121 -121
  474. data/lib/chef/node/immutable_collections.rb +182 -182
  475. data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
  476. data/lib/chef/node/mixin/immutablize_array.rb +180 -180
  477. data/lib/chef/node/mixin/immutablize_hash.rb +165 -165
  478. data/lib/chef/node/mixin/state_tracking.rb +96 -96
  479. data/lib/chef/node_map.rb +315 -315
  480. data/lib/chef/null_logger.rb +79 -79
  481. data/lib/chef/org.rb +144 -144
  482. data/lib/chef/platform.rb +30 -30
  483. data/lib/chef/platform/priority_map.rb +41 -41
  484. data/lib/chef/platform/provider_handler_map.rb +29 -29
  485. data/lib/chef/platform/provider_mapping.rb +55 -55
  486. data/lib/chef/platform/provider_priority_map.rb +11 -11
  487. data/lib/chef/platform/query_helpers.rb +100 -100
  488. data/lib/chef/platform/rebooter.rb +71 -71
  489. data/lib/chef/platform/resource_handler_map.rb +29 -29
  490. data/lib/chef/platform/resource_priority_map.rb +11 -11
  491. data/lib/chef/platform/service_helpers.rb +122 -122
  492. data/lib/chef/policy_builder.rb +42 -42
  493. data/lib/chef/policy_builder/dynamic.rb +185 -185
  494. data/lib/chef/policy_builder/expand_node_object.rb +252 -252
  495. data/lib/chef/policy_builder/policyfile.rb +569 -569
  496. data/lib/chef/powershell.rb +57 -57
  497. data/lib/chef/property.rb +731 -731
  498. data/lib/chef/provider.rb +410 -408
  499. data/lib/chef/provider/.DS_Store +0 -0
  500. data/lib/chef/provider/apt_preference.rb +94 -94
  501. data/lib/chef/provider/apt_repository.rb +360 -360
  502. data/lib/chef/provider/apt_update.rb +80 -80
  503. data/lib/chef/provider/batch.rb +45 -45
  504. data/lib/chef/provider/cookbook_file.rb +47 -47
  505. data/lib/chef/provider/cookbook_file/content.rb +49 -49
  506. data/lib/chef/provider/cron.rb +256 -256
  507. data/lib/chef/provider/cron/aix.rb +50 -50
  508. data/lib/chef/provider/cron/solaris.rb +22 -22
  509. data/lib/chef/provider/cron/unix.rb +83 -83
  510. data/lib/chef/provider/directory.rb +164 -164
  511. data/lib/chef/provider/dsc_resource.rb +209 -209
  512. data/lib/chef/provider/dsc_script.rb +185 -185
  513. data/lib/chef/provider/execute.rb +130 -130
  514. data/lib/chef/provider/file.rb +478 -478
  515. data/lib/chef/provider/file/content.rb +39 -39
  516. data/lib/chef/provider/git.rb +357 -357
  517. data/lib/chef/provider/group.rb +179 -179
  518. data/lib/chef/provider/group/aix.rb +79 -79
  519. data/lib/chef/provider/group/dscl.rb +177 -177
  520. data/lib/chef/provider/group/gpasswd.rb +58 -58
  521. data/lib/chef/provider/group/groupadd.rb +133 -133
  522. data/lib/chef/provider/group/groupmod.rb +123 -123
  523. data/lib/chef/provider/group/pw.rb +137 -137
  524. data/lib/chef/provider/group/suse.rb +83 -83
  525. data/lib/chef/provider/group/usermod.rb +90 -90
  526. data/lib/chef/provider/group/windows.rb +110 -110
  527. data/lib/chef/provider/http_request.rb +132 -132
  528. data/lib/chef/provider/ifconfig.rb +271 -271
  529. data/lib/chef/provider/ifconfig/aix.rb +94 -94
  530. data/lib/chef/provider/ifconfig/debian.rb +88 -88
  531. data/lib/chef/provider/ifconfig/redhat.rb +54 -54
  532. data/lib/chef/provider/launchd.rb +231 -231
  533. data/lib/chef/provider/link.rb +168 -168
  534. data/lib/chef/provider/log.rb +43 -43
  535. data/lib/chef/provider/lwrp_base.rb +89 -89
  536. data/lib/chef/provider/mdadm.rb +85 -85
  537. data/lib/chef/provider/mount.rb +175 -175
  538. data/lib/chef/provider/mount/aix.rb +221 -221
  539. data/lib/chef/provider/mount/mount.rb +283 -283
  540. data/lib/chef/provider/mount/solaris.rb +275 -275
  541. data/lib/chef/provider/mount/windows.rb +92 -92
  542. data/lib/chef/provider/noop.rb +37 -37
  543. data/lib/chef/provider/ohai.rb +45 -45
  544. data/lib/chef/provider/osx_profile.rb +251 -251
  545. data/lib/chef/provider/package.rb +687 -687
  546. data/lib/chef/provider/package/.DS_Store +0 -0
  547. data/lib/chef/provider/package/apt.rb +249 -249
  548. data/lib/chef/provider/package/bff.rb +142 -142
  549. data/lib/chef/provider/package/cab.rb +187 -187
  550. data/lib/chef/provider/package/chocolatey.rb +285 -285
  551. data/lib/chef/provider/package/dnf.rb +196 -196
  552. data/lib/chef/provider/package/dnf/dnf_helper.py +114 -100
  553. data/lib/chef/provider/package/dnf/python_helper.rb +173 -173
  554. data/lib/chef/provider/package/dnf/version.rb +56 -56
  555. data/lib/chef/provider/package/dpkg.rb +241 -241
  556. data/lib/chef/provider/package/freebsd/.DS_Store +0 -0
  557. data/lib/chef/provider/package/freebsd/base.rb +89 -89
  558. data/lib/chef/provider/package/freebsd/pkg.rb +114 -114
  559. data/lib/chef/provider/package/freebsd/pkgng.rb +76 -76
  560. data/lib/chef/provider/package/freebsd/port.rb +60 -60
  561. data/lib/chef/provider/package/homebrew.rb +138 -138
  562. data/lib/chef/provider/package/ips.rb +85 -85
  563. data/lib/chef/provider/package/macports.rb +101 -101
  564. data/lib/chef/provider/package/msu.rb +161 -161
  565. data/lib/chef/provider/package/openbsd.rb +139 -139
  566. data/lib/chef/provider/package/pacman.rb +103 -103
  567. data/lib/chef/provider/package/paludis.rb +85 -85
  568. data/lib/chef/provider/package/portage.rb +133 -133
  569. data/lib/chef/provider/package/powershell.rb +133 -133
  570. data/lib/chef/provider/package/rpm.rb +126 -126
  571. data/lib/chef/provider/package/rubygems.rb +617 -617
  572. data/lib/chef/provider/package/smartos.rb +92 -92
  573. data/lib/chef/provider/package/solaris.rb +137 -137
  574. data/lib/chef/provider/package/windows.rb +317 -317
  575. data/lib/chef/provider/package/windows/exe.rb +117 -117
  576. data/lib/chef/provider/package/windows/msi.rb +96 -96
  577. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +99 -99
  578. data/lib/chef/provider/package/yum.rb +289 -289
  579. data/lib/chef/provider/package/yum/python_helper.rb +222 -222
  580. data/lib/chef/provider/package/yum/rpm_utils.rb +651 -651
  581. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -79
  582. data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -318
  583. data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -354
  584. data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -440
  585. data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -65
  586. data/lib/chef/provider/package/yum/simplejson/tool.py +37 -37
  587. data/lib/chef/provider/package/yum/version.rb +56 -56
  588. data/lib/chef/provider/package/yum/yum_cache.rb +93 -93
  589. data/lib/chef/provider/package/yum/yum_helper.py +211 -211
  590. data/lib/chef/provider/package/zypper.rb +167 -167
  591. data/lib/chef/provider/powershell_script.rb +223 -223
  592. data/lib/chef/provider/reboot.rb +78 -78
  593. data/lib/chef/provider/registry_key.rb +199 -199
  594. data/lib/chef/provider/remote_directory.rb +269 -269
  595. data/lib/chef/provider/remote_file.rb +66 -66
  596. data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
  597. data/lib/chef/provider/remote_file/content.rb +81 -81
  598. data/lib/chef/provider/remote_file/fetcher.rb +60 -60
  599. data/lib/chef/provider/remote_file/ftp.rb +172 -172
  600. data/lib/chef/provider/remote_file/http.rb +143 -143
  601. data/lib/chef/provider/remote_file/local_file.rb +60 -60
  602. data/lib/chef/provider/remote_file/network_file.rb +61 -61
  603. data/lib/chef/provider/remote_file/sftp.rb +105 -105
  604. data/lib/chef/provider/resource_update.rb +52 -52
  605. data/lib/chef/provider/route.rb +248 -248
  606. data/lib/chef/provider/ruby_block.rb +40 -40
  607. data/lib/chef/provider/script.rb +121 -121
  608. data/lib/chef/provider/service.rb +252 -252
  609. data/lib/chef/provider/service/aix.rb +125 -125
  610. data/lib/chef/provider/service/aixinit.rb +117 -117
  611. data/lib/chef/provider/service/arch.rb +118 -118
  612. data/lib/chef/provider/service/debian.rb +193 -193
  613. data/lib/chef/provider/service/freebsd.rb +194 -194
  614. data/lib/chef/provider/service/gentoo.rb +70 -70
  615. data/lib/chef/provider/service/init.rb +93 -93
  616. data/lib/chef/provider/service/insserv.rb +61 -61
  617. data/lib/chef/provider/service/invokercd.rb +41 -41
  618. data/lib/chef/provider/service/macosx.rb +252 -252
  619. data/lib/chef/provider/service/openbsd.rb +216 -216
  620. data/lib/chef/provider/service/redhat.rb +126 -126
  621. data/lib/chef/provider/service/simple.rb +172 -172
  622. data/lib/chef/provider/service/solaris.rb +127 -127
  623. data/lib/chef/provider/service/systemd.rb +189 -189
  624. data/lib/chef/provider/service/upstart.rb +260 -260
  625. data/lib/chef/provider/service/windows.rb +488 -488
  626. data/lib/chef/provider/subversion.rb +227 -227
  627. data/lib/chef/provider/support/yum_repo.erb +138 -138
  628. data/lib/chef/provider/support/zypper_repo.erb +17 -17
  629. data/lib/chef/provider/systemd_unit.rb +261 -261
  630. data/lib/chef/provider/template.rb +59 -59
  631. data/lib/chef/provider/template/content.rb +93 -93
  632. data/lib/chef/provider/template_finder.rb +62 -62
  633. data/lib/chef/provider/user.rb +221 -221
  634. data/lib/chef/provider/user/aix.rb +131 -131
  635. data/lib/chef/provider/user/dscl.rb +712 -712
  636. data/lib/chef/provider/user/linux.rb +116 -116
  637. data/lib/chef/provider/user/pw.rb +105 -105
  638. data/lib/chef/provider/user/solaris.rb +160 -160
  639. data/lib/chef/provider/user/useradd.rb +161 -161
  640. data/lib/chef/provider/user/windows.rb +126 -126
  641. data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
  642. data/lib/chef/provider/windows_env.rb +207 -207
  643. data/lib/chef/provider/windows_path.rb +61 -61
  644. data/lib/chef/provider/windows_script.rb +75 -75
  645. data/lib/chef/provider/windows_task.rb +631 -631
  646. data/lib/chef/provider/yum_repository.rb +130 -130
  647. data/lib/chef/provider/zypper_repository.rb +169 -169
  648. data/lib/chef/provider_resolver.rb +146 -146
  649. data/lib/chef/providers.rb +146 -146
  650. data/lib/chef/recipe.rb +110 -110
  651. data/lib/chef/request_id.rb +37 -37
  652. data/lib/chef/reserved_names.rb +9 -9
  653. data/lib/chef/resource.rb +1593 -1584
  654. data/lib/chef/resource/.DS_Store +0 -0
  655. data/lib/chef/resource/action_class.rb +90 -90
  656. data/lib/chef/resource/apt_package.rb +40 -40
  657. data/lib/chef/resource/apt_preference.rb +52 -52
  658. data/lib/chef/resource/apt_repository.rb +86 -86
  659. data/lib/chef/resource/apt_update.rb +41 -41
  660. data/lib/chef/resource/bash.rb +34 -34
  661. data/lib/chef/resource/batch.rb +34 -34
  662. data/lib/chef/resource/bff_package.rb +31 -31
  663. data/lib/chef/resource/breakpoint.rb +47 -47
  664. data/lib/chef/resource/build_essential.rb +142 -142
  665. data/lib/chef/resource/cab_package.rb +45 -45
  666. data/lib/chef/resource/chef_gem.rb +59 -59
  667. data/lib/chef/resource/chef_handler.rb +132 -132
  668. data/lib/chef/resource/chocolatey_config.rb +83 -83
  669. data/lib/chef/resource/chocolatey_package.rb +50 -50
  670. data/lib/chef/resource/chocolatey_source.rb +95 -95
  671. data/lib/chef/resource/conditional.rb +135 -135
  672. data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
  673. data/lib/chef/resource/cookbook_file.rb +45 -45
  674. data/lib/chef/resource/cron.rb +174 -174
  675. data/lib/chef/resource/cron_access.rb +70 -70
  676. data/lib/chef/resource/cron_d.rb +238 -238
  677. data/lib/chef/resource/csh.rb +39 -39
  678. data/lib/chef/resource/directory.rb +51 -51
  679. data/lib/chef/resource/dmg_package.rb +171 -171
  680. data/lib/chef/resource/dnf_package.rb +79 -79
  681. data/lib/chef/resource/dpkg_package.rb +33 -33
  682. data/lib/chef/resource/dsc_resource.rb +120 -120
  683. data/lib/chef/resource/dsc_script.rb +124 -124
  684. data/lib/chef/resource/execute.rb +201 -201
  685. data/lib/chef/resource/file.rb +105 -105
  686. data/lib/chef/resource/file/.DS_Store +0 -0
  687. data/lib/chef/resource/file/verification.rb +139 -139
  688. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
  689. data/lib/chef/resource/freebsd_package.rb +73 -73
  690. data/lib/chef/resource/gem_package.rb +58 -58
  691. data/lib/chef/resource/git.rb +35 -35
  692. data/lib/chef/resource/group.rb +61 -61
  693. data/lib/chef/resource/homebrew_cask.rb +100 -100
  694. data/lib/chef/resource/homebrew_package.rb +38 -38
  695. data/lib/chef/resource/homebrew_tap.rb +87 -87
  696. data/lib/chef/resource/hostname.rb +265 -265
  697. data/lib/chef/resource/http_request.rb +55 -55
  698. data/lib/chef/resource/ifconfig.rb +105 -105
  699. data/lib/chef/resource/ips_package.rb +38 -38
  700. data/lib/chef/resource/kernel_module.rb +135 -135
  701. data/lib/chef/resource/ksh.rb +39 -39
  702. data/lib/chef/resource/launchd.rb +252 -252
  703. data/lib/chef/resource/link.rb +93 -93
  704. data/lib/chef/resource/locale.rb +94 -94
  705. data/lib/chef/resource/log.rb +52 -52
  706. data/lib/chef/resource/lwrp_base.rb +123 -123
  707. data/lib/chef/resource/macos_userdefaults.rb +132 -132
  708. data/lib/chef/resource/macosx_service.rb +41 -41
  709. data/lib/chef/resource/macports_package.rb +29 -29
  710. data/lib/chef/resource/mdadm.rb +67 -67
  711. data/lib/chef/resource/mount.rb +96 -96
  712. data/lib/chef/resource/msu_package.rb +49 -49
  713. data/lib/chef/resource/ohai.rb +41 -41
  714. data/lib/chef/resource/ohai_hint.rb +95 -95
  715. data/lib/chef/resource/openbsd_package.rb +38 -38
  716. data/lib/chef/resource/openssl_dhparam.rb +77 -77
  717. data/lib/chef/resource/openssl_ec_private_key.rb +93 -93
  718. data/lib/chef/resource/openssl_ec_public_key.rb +75 -75
  719. data/lib/chef/resource/openssl_rsa_private_key.rb +91 -91
  720. data/lib/chef/resource/openssl_rsa_public_key.rb +74 -74
  721. data/lib/chef/resource/openssl_x509_certificate.rb +221 -221
  722. data/lib/chef/resource/openssl_x509_crl.rb +132 -132
  723. data/lib/chef/resource/openssl_x509_request.rb +151 -151
  724. data/lib/chef/resource/osx_profile.rb +48 -48
  725. data/lib/chef/resource/package.rb +73 -73
  726. data/lib/chef/resource/pacman_package.rb +30 -30
  727. data/lib/chef/resource/paludis_package.rb +38 -38
  728. data/lib/chef/resource/perl.rb +38 -38
  729. data/lib/chef/resource/portage_package.rb +33 -33
  730. data/lib/chef/resource/powershell_package.rb +52 -52
  731. data/lib/chef/resource/powershell_package_source.rb +169 -169
  732. data/lib/chef/resource/powershell_script.rb +59 -59
  733. data/lib/chef/resource/python.rb +36 -36
  734. data/lib/chef/resource/reboot.rb +46 -46
  735. data/lib/chef/resource/registry_key.rb +130 -130
  736. data/lib/chef/resource/remote_directory.rb +87 -87
  737. data/lib/chef/resource/remote_file.rb +181 -181
  738. data/lib/chef/resource/resource_notification.rb +143 -139
  739. data/lib/chef/resource/rhsm_errata.rb +46 -46
  740. data/lib/chef/resource/rhsm_errata_level.rb +51 -51
  741. data/lib/chef/resource/rhsm_register.rb +168 -168
  742. data/lib/chef/resource/rhsm_repo.rb +65 -65
  743. data/lib/chef/resource/rhsm_subscription.rb +98 -98
  744. data/lib/chef/resource/route.rb +46 -46
  745. data/lib/chef/resource/rpm_package.rb +33 -33
  746. data/lib/chef/resource/ruby.rb +37 -37
  747. data/lib/chef/resource/ruby_block.rb +45 -45
  748. data/lib/chef/resource/scm.rb +75 -75
  749. data/lib/chef/resource/script.rb +54 -54
  750. data/lib/chef/resource/service.rb +221 -221
  751. data/lib/chef/resource/smartos_package.rb +31 -31
  752. data/lib/chef/resource/solaris_package.rb +33 -33
  753. data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -146
  754. data/lib/chef/resource/subversion.rb +55 -55
  755. data/lib/chef/resource/sudo.rb +230 -230
  756. data/lib/chef/resource/support/cron.d.erb +28 -28
  757. data/lib/chef/resource/support/cron_access.erb +4 -4
  758. data/lib/chef/resource/support/ssh_known_hosts.erb +3 -3
  759. data/lib/chef/resource/support/sudoer.erb +18 -18
  760. data/lib/chef/resource/swap_file.rb +209 -209
  761. data/lib/chef/resource/sysctl.rb +151 -151
  762. data/lib/chef/resource/systemd_unit.rb +86 -86
  763. data/lib/chef/resource/template.rb +211 -211
  764. data/lib/chef/resource/timezone.rb +135 -135
  765. data/lib/chef/resource/user.rb +159 -159
  766. data/lib/chef/resource/user/aix_user.rb +31 -31
  767. data/lib/chef/resource/user/dscl_user.rb +31 -31
  768. data/lib/chef/resource/user/linux_user.rb +32 -32
  769. data/lib/chef/resource/user/pw_user.rb +31 -31
  770. data/lib/chef/resource/user/solaris_user.rb +31 -31
  771. data/lib/chef/resource/user/windows_user.rb +35 -35
  772. data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
  773. data/lib/chef/resource/windows_ad_join.rb +120 -120
  774. data/lib/chef/resource/windows_auto_run.rb +87 -87
  775. data/lib/chef/resource/windows_certificate.rb +332 -332
  776. data/lib/chef/resource/windows_env.rb +49 -49
  777. data/lib/chef/resource/windows_feature.rb +90 -90
  778. data/lib/chef/resource/windows_feature_dism.rb +222 -222
  779. data/lib/chef/resource/windows_feature_powershell.rb +262 -262
  780. data/lib/chef/resource/windows_firewall_rule.rb +205 -205
  781. data/lib/chef/resource/windows_font.rb +125 -125
  782. data/lib/chef/resource/windows_package.rb +61 -61
  783. data/lib/chef/resource/windows_pagefile.rb +206 -206
  784. data/lib/chef/resource/windows_path.rb +38 -38
  785. data/lib/chef/resource/windows_printer.rb +146 -146
  786. data/lib/chef/resource/windows_printer_port.rb +136 -136
  787. data/lib/chef/resource/windows_script.rb +65 -65
  788. data/lib/chef/resource/windows_service.rb +121 -121
  789. data/lib/chef/resource/windows_share.rb +324 -324
  790. data/lib/chef/resource/windows_shortcut.rb +79 -79
  791. data/lib/chef/resource/windows_task.rb +349 -349
  792. data/lib/chef/resource/windows_workgroup.rb +112 -112
  793. data/lib/chef/resource/yum_package.rb +77 -77
  794. data/lib/chef/resource/yum_repository.rb +187 -187
  795. data/lib/chef/resource/zypper_package.rb +44 -44
  796. data/lib/chef/resource/zypper_repository.rb +103 -103
  797. data/lib/chef/resource_builder.rb +92 -92
  798. data/lib/chef/resource_collection.rb +153 -147
  799. data/lib/chef/resource_collection/resource_collection_serialization.rb +68 -68
  800. data/lib/chef/resource_collection/resource_list.rb +106 -106
  801. data/lib/chef/resource_collection/resource_set.rb +200 -200
  802. data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
  803. data/lib/chef/resource_definition.rb +68 -68
  804. data/lib/chef/resource_definition_list.rb +38 -38
  805. data/lib/chef/resource_inspector.rb +108 -108
  806. data/lib/chef/resource_reporter.rb +337 -337
  807. data/lib/chef/resource_resolver.rb +160 -160
  808. data/lib/chef/resources.rb +147 -147
  809. data/lib/chef/role.rb +274 -274
  810. data/lib/chef/run_context.rb +708 -682
  811. data/lib/chef/run_context/cookbook_compiler.rb +344 -344
  812. data/lib/chef/run_list.rb +168 -168
  813. data/lib/chef/run_list/run_list_expansion.rb +236 -236
  814. data/lib/chef/run_list/run_list_item.rb +98 -98
  815. data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
  816. data/lib/chef/run_lock.rb +197 -197
  817. data/lib/chef/run_status.rb +127 -127
  818. data/lib/chef/runner.rb +184 -144
  819. data/lib/chef/sandbox.rb +20 -20
  820. data/lib/chef/scan_access_control.rb +138 -138
  821. data/lib/chef/search/query.rb +182 -182
  822. data/lib/chef/server_api.rb +83 -83
  823. data/lib/chef/server_api_versions.rb +59 -59
  824. data/lib/chef/shell.rb +353 -353
  825. data/lib/chef/shell/ext.rb +593 -593
  826. data/lib/chef/shell/model_wrapper.rb +120 -120
  827. data/lib/chef/shell/shell_session.rb +310 -310
  828. data/lib/chef/user.rb +194 -194
  829. data/lib/chef/user_v1.rb +325 -325
  830. data/lib/chef/util/backup.rb +94 -94
  831. data/lib/chef/util/diff.rb +184 -184
  832. data/lib/chef/util/dsc/configuration_generator.rb +139 -139
  833. data/lib/chef/util/dsc/lcm_output_parser.rb +192 -192
  834. data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
  835. data/lib/chef/util/dsc/resource_info.rb +26 -26
  836. data/lib/chef/util/dsc/resource_store.rb +109 -109
  837. data/lib/chef/util/editor.rb +91 -91
  838. data/lib/chef/util/file_edit.rb +100 -100
  839. data/lib/chef/util/path_helper.rb +25 -25
  840. data/lib/chef/util/powershell/cmdlet.rb +173 -173
  841. data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
  842. data/lib/chef/util/powershell/ps_credential.rb +41 -41
  843. data/lib/chef/util/selinux.rb +93 -93
  844. data/lib/chef/util/threaded_job_queue.rb +61 -61
  845. data/lib/chef/util/windows.rb +24 -24
  846. data/lib/chef/util/windows/logon_session.rb +129 -129
  847. data/lib/chef/util/windows/net_group.rb +78 -78
  848. data/lib/chef/util/windows/net_use.rb +81 -81
  849. data/lib/chef/util/windows/net_user.rb +172 -172
  850. data/lib/chef/util/windows/volume.rb +49 -49
  851. data/lib/chef/version.rb +36 -36
  852. data/lib/chef/version/platform.rb +62 -62
  853. data/lib/chef/version_class.rb +75 -75
  854. data/lib/chef/version_constraint.rb +118 -118
  855. data/lib/chef/version_constraint/platform.rb +28 -28
  856. data/lib/chef/version_string.rb +143 -143
  857. data/lib/chef/whitelist.rb +86 -86
  858. data/lib/chef/win32/api.rb +372 -372
  859. data/lib/chef/win32/api/crypto.rb +63 -63
  860. data/lib/chef/win32/api/error.rb +953 -953
  861. data/lib/chef/win32/api/file.rb +620 -620
  862. data/lib/chef/win32/api/installer.rb +165 -165
  863. data/lib/chef/win32/api/memory.rb +105 -105
  864. data/lib/chef/win32/api/net.rb +328 -328
  865. data/lib/chef/win32/api/process.rb +42 -42
  866. data/lib/chef/win32/api/psapi.rb +51 -51
  867. data/lib/chef/win32/api/registry.rb +51 -51
  868. data/lib/chef/win32/api/security.rb +476 -476
  869. data/lib/chef/win32/api/synchronization.rb +89 -89
  870. data/lib/chef/win32/api/system.rb +238 -238
  871. data/lib/chef/win32/api/unicode.rb +135 -135
  872. data/lib/chef/win32/crypto.rb +50 -50
  873. data/lib/chef/win32/error.rb +86 -86
  874. data/lib/chef/win32/eventlog.rb +31 -31
  875. data/lib/chef/win32/file.rb +226 -226
  876. data/lib/chef/win32/file/info.rb +99 -99
  877. data/lib/chef/win32/file/version_info.rb +93 -93
  878. data/lib/chef/win32/handle.rb +55 -55
  879. data/lib/chef/win32/memory.rb +101 -101
  880. data/lib/chef/win32/mutex.rb +116 -116
  881. data/lib/chef/win32/net.rb +326 -326
  882. data/lib/chef/win32/process.rb +97 -97
  883. data/lib/chef/win32/registry.rb +374 -374
  884. data/lib/chef/win32/security.rb +698 -698
  885. data/lib/chef/win32/security/ace.rb +123 -123
  886. data/lib/chef/win32/security/acl.rb +103 -103
  887. data/lib/chef/win32/security/securable_object.rb +109 -109
  888. data/lib/chef/win32/security/security_descriptor.rb +93 -93
  889. data/lib/chef/win32/security/sid.rb +347 -347
  890. data/lib/chef/win32/security/token.rb +72 -72
  891. data/lib/chef/win32/system.rb +62 -62
  892. data/lib/chef/win32/unicode.rb +66 -66
  893. data/lib/chef/win32/version.rb +151 -151
  894. data/lib/chef/win32_service_constants.rb +143 -143
  895. data/lib/chef/workstation_config_loader.rb +23 -23
  896. data/spec/.DS_Store +0 -0
  897. data/spec/data/.DS_Store +0 -0
  898. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  899. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  900. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  901. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
  902. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  903. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  904. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  905. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  906. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  907. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  908. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
  909. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  910. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  911. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  912. data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
  913. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
  914. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
  915. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
  916. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
  917. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
  918. data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
  919. data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
  920. data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
  921. data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
  922. data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
  923. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
  924. data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
  925. data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
  926. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
  927. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
  928. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  929. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  930. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  931. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  932. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  933. data/spec/data/apt/var/www/apt/db/version +4 -4
  934. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  935. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  936. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  937. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  938. data/spec/data/bootstrap/no_proxy.erb +2 -2
  939. data/spec/data/bootstrap/secret.erb +9 -9
  940. data/spec/data/bootstrap/test-hints.erb +12 -12
  941. data/spec/data/bootstrap/test.erb +1 -1
  942. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  943. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  944. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  945. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  946. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  947. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  948. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  949. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  950. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  951. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  952. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  953. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  954. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  955. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  956. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  957. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  958. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  959. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  960. data/spec/data/client.d_00/00-foo.rb +2 -2
  961. data/spec/data/client.d_00/01-bar.rb +1 -1
  962. data/spec/data/client.d_00/02-strings.rb +2 -2
  963. data/spec/data/client.d_00/bar +1 -1
  964. data/spec/data/client.d_01/foo/bar.rb +1 -1
  965. data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
  966. data/spec/data/config.rb +6 -6
  967. data/spec/data/cookbooks/.DS_Store +0 -0
  968. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  969. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  970. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  971. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  972. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  973. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  974. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  975. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  976. data/spec/data/cookbooks/chefignore +8 -8
  977. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  978. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  979. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  980. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  981. data/spec/data/cookbooks/java/.DS_Store +0 -0
  982. data/spec/data/cookbooks/java/files/.DS_Store +0 -0
  983. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  984. data/spec/data/cookbooks/java/metadata.rb +2 -2
  985. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  986. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  987. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
  988. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  989. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  990. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  991. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  992. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  993. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  994. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  995. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  996. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  997. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  998. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  999. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  1000. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  1001. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  1002. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  1003. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  1004. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  1005. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  1006. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  1007. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  1008. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  1009. data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
  1010. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  1011. data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
  1012. data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
  1013. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  1014. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
  1015. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  1016. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  1017. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  1018. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  1019. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  1020. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  1021. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  1022. data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
  1023. data/spec/data/definitions/test.rb +4 -4
  1024. data/spec/data/environment-config.rb +4 -4
  1025. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  1026. data/spec/data/fileedit/hosts +4 -4
  1027. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  1028. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  1029. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
  1030. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  1031. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
  1032. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
  1033. data/spec/data/kitchen/chefignore +6 -6
  1034. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  1035. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  1036. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  1037. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  1038. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  1039. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  1040. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  1041. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  1042. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  1043. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  1044. data/spec/data/lwrp/providers/buck_passer.rb +28 -28
  1045. data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
  1046. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
  1047. data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
  1048. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  1049. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  1050. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  1051. data/spec/data/lwrp/resources/bar.rb +2 -2
  1052. data/spec/data/lwrp/resources/buck_passer.rb +5 -5
  1053. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
  1054. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
  1055. data/spec/data/lwrp/resources/foo.rb +4 -4
  1056. data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
  1057. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
  1058. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
  1059. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
  1060. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  1061. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  1062. data/spec/data/lwrp_override/resources/foo.rb +10 -10
  1063. data/spec/data/mac_users/.DS_Store +0 -0
  1064. data/spec/data/mac_users/10.7-8.plist.xml +559 -559
  1065. data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
  1066. data/spec/data/mac_users/10.7.plist.xml +559 -559
  1067. data/spec/data/mac_users/10.7.shadow.xml +11 -11
  1068. data/spec/data/mac_users/10.8.plist.xml +559 -559
  1069. data/spec/data/mac_users/10.8.shadow.xml +21 -21
  1070. data/spec/data/mac_users/10.9.plist.xml +560 -560
  1071. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  1072. data/spec/data/metadata/quick_start/metadata.rb +19 -19
  1073. data/spec/data/mixin/invalid_data.rb +3 -3
  1074. data/spec/data/mixin/real_data.rb +2 -2
  1075. data/spec/data/nested.json +2 -2
  1076. data/spec/data/nodes/Tim.local.json +3 -0
  1077. data/spec/data/nodes/Tims-MBP.local.json +3 -0
  1078. data/spec/data/nodes/default.rb +15 -15
  1079. data/spec/data/nodes/test.example.com.rb +17 -17
  1080. data/spec/data/nodes/test.rb +15 -15
  1081. data/spec/data/null_config.rb +1 -1
  1082. data/spec/data/object_loader/environments/test.json +7 -7
  1083. data/spec/data/object_loader/environments/test.rb +2 -2
  1084. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  1085. data/spec/data/object_loader/nodes/test.json +7 -7
  1086. data/spec/data/object_loader/nodes/test.rb +2 -2
  1087. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  1088. data/spec/data/object_loader/roles/test.json +7 -7
  1089. data/spec/data/object_loader/roles/test.rb +2 -2
  1090. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  1091. data/spec/data/partial_one.erb +1 -1
  1092. data/spec/data/prefer_metadata_json/metadata.json +51 -51
  1093. data/spec/data/prefer_metadata_json/metadata.rb +6 -6
  1094. data/spec/data/recipes/test.rb +7 -7
  1095. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
  1096. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
  1097. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
  1098. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
  1099. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
  1100. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
  1101. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
  1102. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
  1103. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
  1104. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
  1105. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
  1106. data/spec/data/run_context/.DS_Store +0 -0
  1107. data/spec/data/run_context/cookbooks/.DS_Store +0 -0
  1108. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
  1109. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  1110. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  1111. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  1112. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  1113. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  1114. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
  1115. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  1116. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  1117. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  1118. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  1119. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  1120. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
  1121. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
  1122. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
  1123. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  1124. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  1125. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  1126. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  1127. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
  1128. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  1129. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  1130. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  1131. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  1132. data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
  1133. data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
  1134. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
  1135. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  1136. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  1137. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  1138. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
  1139. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  1140. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  1141. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  1142. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  1143. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  1144. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
  1145. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  1146. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  1147. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  1148. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  1149. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  1150. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  1151. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  1152. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  1153. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  1154. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  1155. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  1156. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  1157. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  1158. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  1159. data/spec/data/run_context/nodes/run_context.rb +5 -5
  1160. data/spec/data/sample_msu1.xml +10 -10
  1161. data/spec/data/sample_msu2.xml +14 -14
  1162. data/spec/data/sample_msu3.xml +16 -16
  1163. data/spec/data/search_queries_to_transform.txt +98 -98
  1164. data/spec/data/shef-config.rb +11 -11
  1165. data/spec/data/ssl/5e707473.0 +18 -18
  1166. data/spec/data/ssl/chef-rspec.cert +27 -27
  1167. data/spec/data/ssl/chef-rspec.key +27 -27
  1168. data/spec/data/ssl/key.pem +15 -15
  1169. data/spec/data/ssl/private_key.pem +27 -27
  1170. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  1171. data/spec/data/standalone_cookbook/chefignore +9 -9
  1172. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  1173. data/spec/data/templates/failed.erb +5 -5
  1174. data/spec/data/trusted_certs/example.crt +22 -22
  1175. data/spec/data/trusted_certs/example_no_cn.crt +36 -36
  1176. data/spec/data/trusted_certs/intermediate.pem +27 -27
  1177. data/spec/data/trusted_certs/opscode.pem +57 -57
  1178. data/spec/data/trusted_certs/root.pem +22 -22
  1179. data/spec/data/windows_certificates/base64_test.cer +22 -22
  1180. data/spec/data/windows_certificates/test.pem +21 -21
  1181. data/spec/functional/.DS_Store +0 -0
  1182. data/spec/functional/application_spec.rb +58 -58
  1183. data/spec/functional/assets/chefinittest +36 -36
  1184. data/spec/functional/assets/inittest +36 -36
  1185. data/spec/functional/assets/testchefsubsys +10 -10
  1186. data/spec/functional/assets/yumrepo/repodata/repomd.xml +21 -21
  1187. data/spec/functional/audit/rspec_formatter_spec.rb +54 -54
  1188. data/spec/functional/audit/runner_spec.rb +121 -121
  1189. data/spec/functional/dsl/reboot_pending_spec.rb +106 -106
  1190. data/spec/functional/dsl/registry_helper_spec.rb +61 -61
  1191. data/spec/functional/event_loggers/windows_eventlog_spec.rb +104 -104
  1192. data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
  1193. data/spec/functional/http/simple_spec.rb +146 -146
  1194. data/spec/functional/knife/configure_spec.rb +33 -33
  1195. data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
  1196. data/spec/functional/knife/exec_spec.rb +55 -55
  1197. data/spec/functional/knife/rehash_spec.rb +39 -39
  1198. data/spec/functional/knife/smoke_test.rb +42 -42
  1199. data/spec/functional/knife/ssh_spec.rb +359 -359
  1200. data/spec/functional/mixin/from_file_spec.rb +82 -82
  1201. data/spec/functional/mixin/powershell_out_spec.rb +43 -43
  1202. data/spec/functional/mixin/shell_out_spec.rb +78 -78
  1203. data/spec/functional/mixin/user_context_spec.rb +117 -117
  1204. data/spec/functional/notifications_spec.rb +238 -238
  1205. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
  1206. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
  1207. data/spec/functional/rebooter_spec.rb +117 -117
  1208. data/spec/functional/resource/.DS_Store +0 -0
  1209. data/spec/functional/resource/aix_service_spec.rb +138 -138
  1210. data/spec/functional/resource/aixinit_service_spec.rb +211 -211
  1211. data/spec/functional/resource/apt_package_spec.rb +386 -386
  1212. data/spec/functional/resource/base.rb +28 -28
  1213. data/spec/functional/resource/bash_spec.rb +54 -54
  1214. data/spec/functional/resource/batch_spec.rb +34 -34
  1215. data/spec/functional/resource/bff_spec.rb +120 -120
  1216. data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
  1217. data/spec/functional/resource/cookbook_file_spec.rb +81 -81
  1218. data/spec/functional/resource/cron_spec.rb +179 -179
  1219. data/spec/functional/resource/directory_spec.rb +43 -43
  1220. data/spec/functional/resource/dnf_package_spec.rb +686 -686
  1221. data/spec/functional/resource/dpkg_package_spec.rb +339 -339
  1222. data/spec/functional/resource/dsc_resource_spec.rb +90 -90
  1223. data/spec/functional/resource/dsc_script_spec.rb +484 -484
  1224. data/spec/functional/resource/execute_spec.rb +171 -171
  1225. data/spec/functional/resource/file_spec.rb +167 -167
  1226. data/spec/functional/resource/git_spec.rb +257 -257
  1227. data/spec/functional/resource/group_spec.rb +497 -497
  1228. data/spec/functional/resource/ifconfig_spec.rb +172 -172
  1229. data/spec/functional/resource/insserv_spec.rb +206 -205
  1230. data/spec/functional/resource/link_spec.rb +699 -699
  1231. data/spec/functional/resource/mount_spec.rb +207 -207
  1232. data/spec/functional/resource/msu_package_spec.rb +98 -98
  1233. data/spec/functional/resource/ohai_spec.rb +62 -62
  1234. data/spec/functional/resource/powershell_script_spec.rb +599 -599
  1235. data/spec/functional/resource/reboot_spec.rb +103 -103
  1236. data/spec/functional/resource/registry_spec.rb +676 -676
  1237. data/spec/functional/resource/remote_directory_spec.rb +220 -220
  1238. data/spec/functional/resource/remote_file_spec.rb +424 -424
  1239. data/spec/functional/resource/rpm_spec.rb +120 -120
  1240. data/spec/functional/resource/template_spec.rb +245 -245
  1241. data/spec/functional/resource/timezone_spec.rb +39 -39
  1242. data/spec/functional/resource/user/dscl_spec.rb +195 -195
  1243. data/spec/functional/resource/user/windows_spec.rb +245 -245
  1244. data/spec/functional/resource/windows_certificate_spec.rb +492 -492
  1245. data/spec/functional/resource/windows_env_spec.rb +285 -285
  1246. data/spec/functional/resource/windows_package_spec.rb +168 -168
  1247. data/spec/functional/resource/windows_path_spec.rb +64 -64
  1248. data/spec/functional/resource/windows_service_spec.rb +102 -102
  1249. data/spec/functional/resource/windows_task_spec.rb +1917 -1917
  1250. data/spec/functional/resource/yum_package_spec.rb +959 -959
  1251. data/spec/functional/resource/zypper_package_spec.rb +233 -233
  1252. data/spec/functional/root_alias_spec.rb +78 -78
  1253. data/spec/functional/run_lock_spec.rb +473 -473
  1254. data/spec/functional/shell_spec.rb +146 -146
  1255. data/spec/functional/tiny_server_spec.rb +79 -79
  1256. data/spec/functional/util/.DS_Store +0 -0
  1257. data/spec/functional/util/path_helper_spec.rb +37 -37
  1258. data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
  1259. data/spec/functional/version_spec.rb +35 -35
  1260. data/spec/functional/win32/crypto_spec.rb +54 -54
  1261. data/spec/functional/win32/registry_spec.rb +624 -624
  1262. data/spec/functional/win32/security_spec.rb +206 -206
  1263. data/spec/functional/win32/service_manager_spec.rb +220 -220
  1264. data/spec/functional/win32/sid_spec.rb +55 -55
  1265. data/spec/functional/win32/version_info_spec.rb +50 -50
  1266. data/spec/functional/win32/versions_spec.rb +115 -115
  1267. data/spec/integration/.DS_Store +0 -0
  1268. data/spec/integration/client/client_spec.rb +732 -732
  1269. data/spec/integration/client/exit_code_spec.rb +142 -142
  1270. data/spec/integration/client/ipv6_spec.rb +134 -134
  1271. data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
  1272. data/spec/integration/knife/chef_repo_path_spec.rb +961 -959
  1273. data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
  1274. data/spec/integration/knife/chefignore_spec.rb +300 -300
  1275. data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
  1276. data/spec/integration/knife/client_create_spec.rb +69 -69
  1277. data/spec/integration/knife/client_delete_spec.rb +63 -63
  1278. data/spec/integration/knife/client_key_create_spec.rb +65 -65
  1279. data/spec/integration/knife/client_key_delete_spec.rb +42 -42
  1280. data/spec/integration/knife/client_key_list_spec.rb +60 -60
  1281. data/spec/integration/knife/client_key_show_spec.rb +44 -44
  1282. data/spec/integration/knife/client_list_spec.rb +48 -48
  1283. data/spec/integration/knife/client_show_spec.rb +36 -36
  1284. data/spec/integration/knife/common_options_spec.rb +173 -173
  1285. data/spec/integration/knife/config_get_profile_spec.rb +112 -112
  1286. data/spec/integration/knife/config_get_spec.rb +183 -183
  1287. data/spec/integration/knife/config_list_profiles_spec.rb +188 -188
  1288. data/spec/integration/knife/config_use_profile_spec.rb +100 -100
  1289. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
  1290. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
  1291. data/spec/integration/knife/cookbook_download_spec.rb +71 -71
  1292. data/spec/integration/knife/cookbook_list_spec.rb +54 -54
  1293. data/spec/integration/knife/cookbook_show_spec.rb +148 -148
  1294. data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
  1295. data/spec/integration/knife/data_bag_create_spec.rb +124 -124
  1296. data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
  1297. data/spec/integration/knife/data_bag_edit_spec.rb +104 -104
  1298. data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
  1299. data/spec/integration/knife/data_bag_list_spec.rb +43 -43
  1300. data/spec/integration/knife/data_bag_show_spec.rb +94 -94
  1301. data/spec/integration/knife/delete_spec.rb +1017 -1017
  1302. data/spec/integration/knife/deps_spec.rb +702 -702
  1303. data/spec/integration/knife/diff_spec.rb +602 -602
  1304. data/spec/integration/knife/download_spec.rb +1333 -1333
  1305. data/spec/integration/knife/environment_compare_spec.rb +74 -74
  1306. data/spec/integration/knife/environment_create_spec.rb +40 -40
  1307. data/spec/integration/knife/environment_delete_spec.rb +36 -36
  1308. data/spec/integration/knife/environment_from_file_spec.rb +115 -115
  1309. data/spec/integration/knife/environment_list_spec.rb +41 -41
  1310. data/spec/integration/knife/environment_show_spec.rb +76 -76
  1311. data/spec/integration/knife/list_spec.rb +1059 -1059
  1312. data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
  1313. data/spec/integration/knife/node_create_spec.rb +46 -46
  1314. data/spec/integration/knife/node_delete_spec.rb +47 -47
  1315. data/spec/integration/knife/node_environment_set_spec.rb +45 -45
  1316. data/spec/integration/knife/node_from_file_spec.rb +58 -58
  1317. data/spec/integration/knife/node_list_spec.rb +44 -44
  1318. data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
  1319. data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
  1320. data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
  1321. data/spec/integration/knife/node_show_spec.rb +35 -35
  1322. data/spec/integration/knife/raw_spec.rb +248 -248
  1323. data/spec/integration/knife/redirection_spec.rb +54 -54
  1324. data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
  1325. data/spec/integration/knife/role_create_spec.rb +40 -40
  1326. data/spec/integration/knife/role_delete_spec.rb +47 -47
  1327. data/spec/integration/knife/role_from_file_spec.rb +95 -95
  1328. data/spec/integration/knife/role_list_spec.rb +44 -44
  1329. data/spec/integration/knife/role_show_spec.rb +50 -50
  1330. data/spec/integration/knife/search_node_spec.rb +39 -39
  1331. data/spec/integration/knife/serve_spec.rb +93 -93
  1332. data/spec/integration/knife/show_spec.rb +167 -167
  1333. data/spec/integration/knife/upload_spec.rb +1540 -1540
  1334. data/spec/integration/recipes/accumulator_spec.rb +232 -232
  1335. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
  1336. data/spec/integration/recipes/lwrp_spec.rb +53 -53
  1337. data/spec/integration/recipes/noop_resource_spec.rb +24 -24
  1338. data/spec/integration/recipes/notifies_spec.rb +394 -394
  1339. data/spec/integration/recipes/notifying_block_spec.rb +111 -111
  1340. data/spec/integration/recipes/provider_choice.rb +37 -37
  1341. data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
  1342. data/spec/integration/recipes/remote_directory.rb +74 -74
  1343. data/spec/integration/recipes/resource_action_spec.rb +504 -504
  1344. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
  1345. data/spec/integration/recipes/resource_load_spec.rb +192 -192
  1346. data/spec/integration/recipes/unified_mode_spec.rb +876 -0
  1347. data/spec/integration/solo/solo_spec.rb +217 -217
  1348. data/spec/rcov.opts +2 -2
  1349. data/spec/scripts/ssl-serve.rb +47 -47
  1350. data/spec/spec_helper.rb +332 -328
  1351. data/spec/stress/.DS_Store +0 -0
  1352. data/spec/stress/win32/file_spec.rb +37 -37
  1353. data/spec/stress/win32/memory_spec.rb +22 -22
  1354. data/spec/stress/win32/security_spec.rb +69 -69
  1355. data/spec/support/.DS_Store +0 -0
  1356. data/spec/support/chef_helpers.rb +115 -115
  1357. data/spec/support/key_helpers.rb +104 -104
  1358. data/spec/support/lib/chef/provider/easy.rb +35 -35
  1359. data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
  1360. data/spec/support/lib/chef/provider/snakeoil.rb +42 -42
  1361. data/spec/support/lib/chef/resource/cat.rb +39 -39
  1362. data/spec/support/lib/chef/resource/one_two_three_four.rb +36 -36
  1363. data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
  1364. data/spec/support/lib/chef/resource/with_state.rb +30 -30
  1365. data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
  1366. data/spec/support/lib/chef/resource/zen_master.rb +40 -40
  1367. data/spec/support/lib/library_load_order.rb +20 -20
  1368. data/spec/support/matchers/leak.rb +98 -98
  1369. data/spec/support/mock/constant.rb +52 -52
  1370. data/spec/support/mock/platform.rb +25 -25
  1371. data/spec/support/platform_helpers.rb +276 -268
  1372. data/spec/support/platforms/prof/gc.rb +51 -51
  1373. data/spec/support/platforms/prof/win32.rb +45 -45
  1374. data/spec/support/platforms/win32/spec_service.rb +59 -59
  1375. data/spec/support/shared/context/client.rb +305 -305
  1376. data/spec/support/shared/context/config.rb +21 -21
  1377. data/spec/support/shared/context/win32.rb +34 -34
  1378. data/spec/support/shared/examples/client.rb +104 -104
  1379. data/spec/support/shared/functional/diff_disabled.rb +10 -10
  1380. data/spec/support/shared/functional/directory_resource.rb +178 -178
  1381. data/spec/support/shared/functional/execute_resource.rb +150 -150
  1382. data/spec/support/shared/functional/file_resource.rb +1050 -1050
  1383. data/spec/support/shared/functional/http.rb +248 -248
  1384. data/spec/support/shared/functional/knife.rb +37 -37
  1385. data/spec/support/shared/functional/securable_resource.rb +578 -578
  1386. data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
  1387. data/spec/support/shared/functional/win32_service.rb +57 -57
  1388. data/spec/support/shared/functional/windows_script.rb +272 -272
  1389. data/spec/support/shared/integration/app_server_support.rb +40 -40
  1390. data/spec/support/shared/integration/integration_helper.rb +154 -154
  1391. data/spec/support/shared/integration/knife_support.rb +196 -196
  1392. data/spec/support/shared/matchers/exit_with_code.rb +32 -32
  1393. data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
  1394. data/spec/support/shared/shared_examples.rb +14 -14
  1395. data/spec/support/shared/unit/api_error_inspector.rb +190 -190
  1396. data/spec/support/shared/unit/api_versioning.rb +77 -77
  1397. data/spec/support/shared/unit/application_dot_d.rb +75 -75
  1398. data/spec/support/shared/unit/execute_resource.rb +168 -168
  1399. data/spec/support/shared/unit/file_system_support.rb +69 -69
  1400. data/spec/support/shared/unit/knife_shared.rb +39 -39
  1401. data/spec/support/shared/unit/mock_shellout.rb +49 -49
  1402. data/spec/support/shared/unit/platform_introspector.rb +189 -189
  1403. data/spec/support/shared/unit/provider/file.rb +854 -854
  1404. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
  1405. data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
  1406. data/spec/support/shared/unit/script_resource.rb +90 -90
  1407. data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
  1408. data/spec/support/shared/unit/windows_script_resource.rb +80 -80
  1409. data/spec/tiny_server.rb +191 -191
  1410. data/spec/unit/.DS_Store +0 -0
  1411. data/spec/unit/api_client/registration_spec.rb +278 -278
  1412. data/spec/unit/api_client_spec.rb +341 -341
  1413. data/spec/unit/api_client_v1_spec.rb +455 -455
  1414. data/spec/unit/application/apply_spec.rb +113 -113
  1415. data/spec/unit/application/client_spec.rb +559 -559
  1416. data/spec/unit/application/exit_code_spec.rb +144 -144
  1417. data/spec/unit/application/knife_spec.rb +229 -229
  1418. data/spec/unit/application/solo_spec.rb +225 -225
  1419. data/spec/unit/application_spec.rb +486 -486
  1420. data/spec/unit/audit/audit_event_proxy_spec.rb +318 -318
  1421. data/spec/unit/audit/audit_reporter_spec.rb +435 -435
  1422. data/spec/unit/audit/control_group_data_spec.rb +482 -482
  1423. data/spec/unit/audit/logger_spec.rb +42 -42
  1424. data/spec/unit/audit/rspec_formatter_spec.rb +29 -29
  1425. data/spec/unit/audit/runner_spec.rb +144 -144
  1426. data/spec/unit/chef_class_spec.rb +240 -240
  1427. data/spec/unit/chef_fs/config_spec.rb +235 -235
  1428. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
  1429. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -65
  1430. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
  1431. data/spec/unit/chef_fs/diff_spec.rb +328 -328
  1432. data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
  1433. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
  1434. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
  1435. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +126 -126
  1436. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
  1437. data/spec/unit/chef_fs/file_system_spec.rb +148 -148
  1438. data/spec/unit/chef_fs/parallelizer.rb +477 -477
  1439. data/spec/unit/chef_fs/path_util_spec.rb +108 -108
  1440. data/spec/unit/chef_spec.rb +25 -25
  1441. data/spec/unit/client_spec.rb +595 -595
  1442. data/spec/unit/config_fetcher_spec.rb +125 -125
  1443. data/spec/unit/config_spec.rb +31 -31
  1444. data/spec/unit/cookbook/chefignore_spec.rb +49 -49
  1445. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +210 -210
  1446. data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
  1447. data/spec/unit/cookbook/gem_installer_spec.rb +113 -92
  1448. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
  1449. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
  1450. data/spec/unit/cookbook/metadata_spec.rb +892 -892
  1451. data/spec/unit/cookbook/synchronizer_spec.rb +557 -557
  1452. data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
  1453. data/spec/unit/cookbook_loader_spec.rb +302 -302
  1454. data/spec/unit/cookbook_manifest_spec.rb +228 -228
  1455. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
  1456. data/spec/unit/cookbook_spec.rb +62 -62
  1457. data/spec/unit/cookbook_uploader_spec.rb +199 -199
  1458. data/spec/unit/cookbook_version_file_specificity_spec.rb +623 -623
  1459. data/spec/unit/cookbook_version_spec.rb +250 -250
  1460. data/spec/unit/daemon_spec.rb +183 -183
  1461. data/spec/unit/data_bag_item_spec.rb +392 -392
  1462. data/spec/unit/data_bag_spec.rb +260 -260
  1463. data/spec/unit/data_collector/messages/helpers_spec.rb +202 -202
  1464. data/spec/unit/data_collector/messages_spec.rb +329 -329
  1465. data/spec/unit/data_collector/resource_report_spec.rb +145 -145
  1466. data/spec/unit/data_collector_spec.rb +876 -876
  1467. data/spec/unit/decorator/lazy_array_spec.rb +58 -58
  1468. data/spec/unit/decorator/lazy_spec.rb +39 -39
  1469. data/spec/unit/decorator_spec.rb +142 -142
  1470. data/spec/unit/deprecated_spec.rb +65 -65
  1471. data/spec/unit/deprecation_spec.rb +129 -129
  1472. data/spec/unit/digester_spec.rb +49 -49
  1473. data/spec/unit/dsl/audit_spec.rb +43 -43
  1474. data/spec/unit/dsl/data_query_spec.rb +107 -107
  1475. data/spec/unit/dsl/declare_resource_spec.rb +374 -374
  1476. data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
  1477. data/spec/unit/dsl/reboot_pending_spec.rb +87 -87
  1478. data/spec/unit/dsl/recipe_spec.rb +76 -76
  1479. data/spec/unit/dsl/registry_helper_spec.rb +52 -52
  1480. data/spec/unit/dsl/resources_spec.rb +85 -85
  1481. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
  1482. data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
  1483. data/spec/unit/environment_spec.rb +470 -470
  1484. data/spec/unit/event_dispatch/dispatcher_spec.rb +122 -122
  1485. data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
  1486. data/spec/unit/exceptions_spec.rb +132 -132
  1487. data/spec/unit/file_access_control_spec.rb +308 -308
  1488. data/spec/unit/file_cache_spec.rb +114 -114
  1489. data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
  1490. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +113 -113
  1491. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
  1492. data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
  1493. data/spec/unit/formatters/base_spec.rb +100 -100
  1494. data/spec/unit/formatters/doc_spec.rb +110 -92
  1495. data/spec/unit/formatters/error_description_spec.rb +141 -141
  1496. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
  1497. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
  1498. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
  1499. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
  1500. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
  1501. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
  1502. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
  1503. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
  1504. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
  1505. data/spec/unit/guard_interpreter_spec.rb +41 -41
  1506. data/spec/unit/handler/json_file_spec.rb +63 -63
  1507. data/spec/unit/handler_spec.rb +302 -302
  1508. data/spec/unit/http/api_versions_spec.rb +82 -82
  1509. data/spec/unit/http/authenticator_spec.rb +125 -125
  1510. data/spec/unit/http/basic_client_spec.rb +72 -72
  1511. data/spec/unit/http/http_request_spec.rb +97 -97
  1512. data/spec/unit/http/json_input_spec.rb +128 -128
  1513. data/spec/unit/http/simple_spec.rb +32 -32
  1514. data/spec/unit/http/socketless_chef_zero_client_spec.rb +174 -174
  1515. data/spec/unit/http/ssl_policies_spec.rb +169 -169
  1516. data/spec/unit/http/validate_content_length_spec.rb +207 -207
  1517. data/spec/unit/http_spec.rb +229 -229
  1518. data/spec/unit/json_compat_spec.rb +73 -73
  1519. data/spec/unit/key_spec.rb +631 -631
  1520. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
  1521. data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
  1522. data/spec/unit/knife/bootstrap_spec.rb +972 -886
  1523. data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
  1524. data/spec/unit/knife/client_create_spec.rb +186 -186
  1525. data/spec/unit/knife/client_delete_spec.rb +99 -99
  1526. data/spec/unit/knife/client_edit_spec.rb +53 -53
  1527. data/spec/unit/knife/client_list_spec.rb +34 -34
  1528. data/spec/unit/knife/client_reregister_spec.rb +62 -62
  1529. data/spec/unit/knife/client_show_spec.rb +52 -52
  1530. data/spec/unit/knife/configure_client_spec.rb +81 -81
  1531. data/spec/unit/knife/configure_spec.rb +190 -190
  1532. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
  1533. data/spec/unit/knife/cookbook_create_spec.rb +42 -42
  1534. data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
  1535. data/spec/unit/knife/cookbook_download_spec.rb +255 -255
  1536. data/spec/unit/knife/cookbook_list_spec.rb +88 -88
  1537. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
  1538. data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
  1539. data/spec/unit/knife/cookbook_show_spec.rb +254 -254
  1540. data/spec/unit/knife/cookbook_test_spec.rb +84 -84
  1541. data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
  1542. data/spec/unit/knife/core/bootstrap_context_spec.rb +324 -324
  1543. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
  1544. data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
  1545. data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
  1546. data/spec/unit/knife/core/node_editor_spec.rb +211 -211
  1547. data/spec/unit/knife/core/object_loader_spec.rb +81 -81
  1548. data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
  1549. data/spec/unit/knife/core/ui_spec.rb +639 -639
  1550. data/spec/unit/knife/data_bag_create_spec.rb +175 -175
  1551. data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
  1552. data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
  1553. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
  1554. data/spec/unit/knife/data_bag_show_spec.rb +138 -138
  1555. data/spec/unit/knife/environment_compare_spec.rb +112 -112
  1556. data/spec/unit/knife/environment_create_spec.rb +91 -91
  1557. data/spec/unit/knife/environment_delete_spec.rb +71 -71
  1558. data/spec/unit/knife/environment_edit_spec.rb +79 -79
  1559. data/spec/unit/knife/environment_from_file_spec.rb +90 -90
  1560. data/spec/unit/knife/environment_list_spec.rb +54 -54
  1561. data/spec/unit/knife/environment_show_spec.rb +52 -52
  1562. data/spec/unit/knife/key_create_spec.rb +223 -223
  1563. data/spec/unit/knife/key_delete_spec.rb +133 -133
  1564. data/spec/unit/knife/key_edit_spec.rb +264 -264
  1565. data/spec/unit/knife/key_helper.rb +74 -74
  1566. data/spec/unit/knife/key_list_spec.rb +216 -216
  1567. data/spec/unit/knife/key_show_spec.rb +126 -126
  1568. data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
  1569. data/spec/unit/knife/node_delete_spec.rb +77 -77
  1570. data/spec/unit/knife/node_edit_spec.rb +116 -116
  1571. data/spec/unit/knife/node_environment_set_spec.rb +56 -56
  1572. data/spec/unit/knife/node_from_file_spec.rb +59 -59
  1573. data/spec/unit/knife/node_list_spec.rb +62 -62
  1574. data/spec/unit/knife/node_policy_set_spec.rb +122 -122
  1575. data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
  1576. data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
  1577. data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
  1578. data/spec/unit/knife/node_show_spec.rb +65 -65
  1579. data/spec/unit/knife/osc_user_create_spec.rb +93 -93
  1580. data/spec/unit/knife/osc_user_delete_spec.rb +44 -44
  1581. data/spec/unit/knife/osc_user_edit_spec.rb +52 -52
  1582. data/spec/unit/knife/osc_user_list_spec.rb +37 -37
  1583. data/spec/unit/knife/osc_user_reregister_spec.rb +58 -58
  1584. data/spec/unit/knife/osc_user_show_spec.rb +46 -46
  1585. data/spec/unit/knife/raw_spec.rb +43 -43
  1586. data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
  1587. data/spec/unit/knife/role_create_spec.rb +80 -80
  1588. data/spec/unit/knife/role_delete_spec.rb +67 -67
  1589. data/spec/unit/knife/role_edit_spec.rb +77 -77
  1590. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
  1591. data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
  1592. data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
  1593. data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
  1594. data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
  1595. data/spec/unit/knife/role_from_file_spec.rb +69 -69
  1596. data/spec/unit/knife/role_list_spec.rb +54 -54
  1597. data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
  1598. data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
  1599. data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
  1600. data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
  1601. data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
  1602. data/spec/unit/knife/role_show_spec.rb +59 -59
  1603. data/spec/unit/knife/ssh_spec.rb +496 -496
  1604. data/spec/unit/knife/ssl_check_spec.rb +256 -256
  1605. data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
  1606. data/spec/unit/knife/status_spec.rb +111 -111
  1607. data/spec/unit/knife/supermarket_download_spec.rb +152 -152
  1608. data/spec/unit/knife/supermarket_install_spec.rb +201 -201
  1609. data/spec/unit/knife/supermarket_share_spec.rb +209 -209
  1610. data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
  1611. data/spec/unit/knife/tag_create_spec.rb +23 -23
  1612. data/spec/unit/knife/tag_delete_spec.rb +25 -25
  1613. data/spec/unit/knife/tag_list_spec.rb +23 -23
  1614. data/spec/unit/knife/user_create_spec.rb +214 -214
  1615. data/spec/unit/knife/user_delete_spec.rb +65 -65
  1616. data/spec/unit/knife/user_edit_spec.rb +66 -66
  1617. data/spec/unit/knife/user_list_spec.rb +36 -36
  1618. data/spec/unit/knife/user_reregister_spec.rb +74 -74
  1619. data/spec/unit/knife/user_show_spec.rb +65 -65
  1620. data/spec/unit/knife_spec.rb +588 -588
  1621. data/spec/unit/log/syslog_spec.rb +51 -51
  1622. data/spec/unit/log/winevt_spec.rb +54 -54
  1623. data/spec/unit/log_spec.rb +24 -24
  1624. data/spec/unit/lwrp_spec.rb +690 -690
  1625. data/spec/unit/mash_spec.rb +51 -51
  1626. data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
  1627. data/spec/unit/mixin/checksum_spec.rb +54 -54
  1628. data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
  1629. data/spec/unit/mixin/deep_merge_spec.rb +342 -342
  1630. data/spec/unit/mixin/deprecation_spec.rb +57 -57
  1631. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
  1632. data/spec/unit/mixin/homebrew_user_spec.rb +96 -96
  1633. data/spec/unit/mixin/lazy_module_include.rb +71 -71
  1634. data/spec/unit/mixin/openssl_helper_spec.rb +857 -857
  1635. data/spec/unit/mixin/params_validate_spec.rb +421 -421
  1636. data/spec/unit/mixin/path_sanity_spec.rb +92 -92
  1637. data/spec/unit/mixin/powershell_exec_spec.rb +43 -43
  1638. data/spec/unit/mixin/powershell_out_spec.rb +94 -94
  1639. data/spec/unit/mixin/powershell_type_coercions_spec.rb +84 -84
  1640. data/spec/unit/mixin/properties_spec.rb +107 -107
  1641. data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
  1642. data/spec/unit/mixin/securable_spec.rb +314 -314
  1643. data/spec/unit/mixin/shell_out_spec.rb +450 -450
  1644. data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
  1645. data/spec/unit/mixin/template_spec.rb +321 -321
  1646. data/spec/unit/mixin/unformatter_spec.rb +61 -61
  1647. data/spec/unit/mixin/uris_spec.rb +57 -57
  1648. data/spec/unit/mixin/user_context_spec.rb +108 -108
  1649. data/spec/unit/mixin/versioned_api_spec.rb +128 -128
  1650. data/spec/unit/mixin/which.rb +160 -160
  1651. data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
  1652. data/spec/unit/mixin/xml_escape_spec.rb +54 -54
  1653. data/spec/unit/monkey_patches/uri_spec.rb +34 -34
  1654. data/spec/unit/monologger_spec.rb +45 -45
  1655. data/spec/unit/node/attribute_spec.rb +1276 -1276
  1656. data/spec/unit/node/immutable_collections_spec.rb +327 -327
  1657. data/spec/unit/node/vivid_mash_spec.rb +353 -353
  1658. data/spec/unit/node_map_spec.rb +242 -242
  1659. data/spec/unit/node_spec.rb +1851 -1851
  1660. data/spec/unit/org_spec.rb +196 -196
  1661. data/spec/unit/platform/query_helpers_spec.rb +207 -207
  1662. data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
  1663. data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
  1664. data/spec/unit/policy_builder/policyfile_spec.rb +872 -872
  1665. data/spec/unit/policy_builder_spec.rb +26 -26
  1666. data/spec/unit/property/state_spec.rb +508 -508
  1667. data/spec/unit/property/validation_spec.rb +758 -758
  1668. data/spec/unit/property_spec.rb +1231 -1231
  1669. data/spec/unit/provider/apt_preference_spec.rb +87 -87
  1670. data/spec/unit/provider/apt_repository_spec.rb +254 -254
  1671. data/spec/unit/provider/apt_update_spec.rb +116 -116
  1672. data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
  1673. data/spec/unit/provider/cookbook_file_spec.rb +59 -59
  1674. data/spec/unit/provider/cron/unix_spec.rb +144 -144
  1675. data/spec/unit/provider/cron_spec.rb +1084 -1084
  1676. data/spec/unit/provider/directory_spec.rb +300 -300
  1677. data/spec/unit/provider/dsc_resource_spec.rb +343 -343
  1678. data/spec/unit/provider/dsc_script_spec.rb +173 -173
  1679. data/spec/unit/provider/execute_spec.rb +251 -251
  1680. data/spec/unit/provider/file/content_spec.rb +114 -114
  1681. data/spec/unit/provider/file_spec.rb +57 -57
  1682. data/spec/unit/provider/git_spec.rb +782 -782
  1683. data/spec/unit/provider/group/dscl_spec.rb +339 -339
  1684. data/spec/unit/provider/group/gpasswd_spec.rb +119 -119
  1685. data/spec/unit/provider/group/groupadd_spec.rb +194 -194
  1686. data/spec/unit/provider/group/groupmod_spec.rb +136 -136
  1687. data/spec/unit/provider/group/pw_spec.rb +141 -141
  1688. data/spec/unit/provider/group/suse_spec.rb +90 -90
  1689. data/spec/unit/provider/group/usermod_spec.rb +115 -115
  1690. data/spec/unit/provider/group/windows_spec.rb +124 -124
  1691. data/spec/unit/provider/group_spec.rb +286 -286
  1692. data/spec/unit/provider/http_request_spec.rb +159 -159
  1693. data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
  1694. data/spec/unit/provider/ifconfig/debian_spec.rb +332 -332
  1695. data/spec/unit/provider/ifconfig/redhat_spec.rb +83 -83
  1696. data/spec/unit/provider/ifconfig_spec.rb +206 -206
  1697. data/spec/unit/provider/launchd_spec.rb +268 -268
  1698. data/spec/unit/provider/link_spec.rb +409 -409
  1699. data/spec/unit/provider/log_spec.rb +94 -94
  1700. data/spec/unit/provider/mdadm_spec.rb +140 -140
  1701. data/spec/unit/provider/mount/aix_spec.rb +277 -277
  1702. data/spec/unit/provider/mount/mount_spec.rb +527 -527
  1703. data/spec/unit/provider/mount/solaris_spec.rb +822 -822
  1704. data/spec/unit/provider/mount/windows_spec.rb +149 -149
  1705. data/spec/unit/provider/mount_spec.rb +191 -191
  1706. data/spec/unit/provider/ohai_spec.rb +84 -84
  1707. data/spec/unit/provider/osx_profile_spec.rb +257 -257
  1708. data/spec/unit/provider/package/apt_spec.rb +610 -610
  1709. data/spec/unit/provider/package/bff_spec.rb +187 -187
  1710. data/spec/unit/provider/package/cab_spec.rb +272 -272
  1711. data/spec/unit/provider/package/chocolatey_spec.rb +507 -507
  1712. data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
  1713. data/spec/unit/provider/package/dpkg_spec.rb +287 -287
  1714. data/spec/unit/provider/package/freebsd/pkg_spec.rb +274 -274
  1715. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +148 -148
  1716. data/spec/unit/provider/package/freebsd/port_spec.rb +163 -163
  1717. data/spec/unit/provider/package/homebrew_spec.rb +293 -293
  1718. data/spec/unit/provider/package/ips_spec.rb +233 -233
  1719. data/spec/unit/provider/package/macports_spec.rb +203 -203
  1720. data/spec/unit/provider/package/msu_spec.rb +283 -283
  1721. data/spec/unit/provider/package/openbsd_spec.rb +132 -132
  1722. data/spec/unit/provider/package/pacman_spec.rb +194 -194
  1723. data/spec/unit/provider/package/paludis_spec.rb +134 -134
  1724. data/spec/unit/provider/package/portage_spec.rb +179 -179
  1725. data/spec/unit/provider/package/powershell_spec.rb +501 -501
  1726. data/spec/unit/provider/package/rpm_spec.rb +429 -429
  1727. data/spec/unit/provider/package/rubygems_spec.rb +981 -981
  1728. data/spec/unit/provider/package/smartos_spec.rb +110 -110
  1729. data/spec/unit/provider/package/solaris_spec.rb +167 -167
  1730. data/spec/unit/provider/package/windows/exe_spec.rb +201 -201
  1731. data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
  1732. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
  1733. data/spec/unit/provider/package/windows_spec.rb +463 -463
  1734. data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -29
  1735. data/spec/unit/provider/package/yum/yum_cache_spec.rb +109 -109
  1736. data/spec/unit/provider/package/zypper_spec.rb +487 -478
  1737. data/spec/unit/provider/package_spec.rb +1013 -1013
  1738. data/spec/unit/provider/powershell_script_spec.rb +116 -116
  1739. data/spec/unit/provider/registry_key_spec.rb +487 -487
  1740. data/spec/unit/provider/remote_directory_spec.rb +236 -236
  1741. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
  1742. data/spec/unit/provider/remote_file/content_spec.rb +253 -253
  1743. data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
  1744. data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
  1745. data/spec/unit/provider/remote_file/http_spec.rb +324 -324
  1746. data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
  1747. data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
  1748. data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
  1749. data/spec/unit/provider/remote_file_spec.rb +62 -62
  1750. data/spec/unit/provider/route_spec.rb +270 -270
  1751. data/spec/unit/provider/ruby_block_spec.rb +45 -45
  1752. data/spec/unit/provider/script_spec.rb +157 -157
  1753. data/spec/unit/provider/service/aix_service_spec.rb +195 -195
  1754. data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
  1755. data/spec/unit/provider/service/arch_service_spec.rb +324 -324
  1756. data/spec/unit/provider/service/debian_service_spec.rb +249 -249
  1757. data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
  1758. data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
  1759. data/spec/unit/provider/service/init_service_spec.rb +235 -235
  1760. data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
  1761. data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
  1762. data/spec/unit/provider/service/macosx_spec.rb +340 -340
  1763. data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
  1764. data/spec/unit/provider/service/redhat_spec.rb +250 -250
  1765. data/spec/unit/provider/service/simple_service_spec.rb +169 -169
  1766. data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
  1767. data/spec/unit/provider/service/systemd_service_spec.rb +364 -364
  1768. data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
  1769. data/spec/unit/provider/service/windows_spec.rb +910 -910
  1770. data/spec/unit/provider/service_spec.rb +168 -168
  1771. data/spec/unit/provider/subversion_spec.rb +361 -361
  1772. data/spec/unit/provider/systemd_unit_spec.rb +967 -967
  1773. data/spec/unit/provider/template/content_spec.rb +169 -169
  1774. data/spec/unit/provider/template_spec.rb +87 -87
  1775. data/spec/unit/provider/user/aix_spec.rb +96 -96
  1776. data/spec/unit/provider/user/dscl_spec.rb +920 -920
  1777. data/spec/unit/provider/user/linux_spec.rb +74 -74
  1778. data/spec/unit/provider/user/pw_spec.rb +235 -235
  1779. data/spec/unit/provider/user/solaris_spec.rb +177 -177
  1780. data/spec/unit/provider/user/windows_spec.rb +197 -197
  1781. data/spec/unit/provider/user_spec.rb +478 -478
  1782. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
  1783. data/spec/unit/provider/windows_env_spec.rb +400 -400
  1784. data/spec/unit/provider/windows_path_spec.rb +65 -65
  1785. data/spec/unit/provider/windows_task_spec.rb +430 -430
  1786. data/spec/unit/provider/yum_repository_spec.rb +35 -35
  1787. data/spec/unit/provider/zypper_repository_spec.rb +126 -126
  1788. data/spec/unit/provider_resolver_spec.rb +923 -923
  1789. data/spec/unit/provider_spec.rb +201 -201
  1790. data/spec/unit/pure_application_spec.rb +32 -32
  1791. data/spec/unit/recipe_spec.rb +589 -589
  1792. data/spec/unit/resource/apt_package_spec.rb +56 -56
  1793. data/spec/unit/resource/apt_preference_spec.rb +57 -57
  1794. data/spec/unit/resource/apt_repository_spec.rb +92 -92
  1795. data/spec/unit/resource/apt_update_spec.rb +62 -62
  1796. data/spec/unit/resource/bash_spec.rb +45 -45
  1797. data/spec/unit/resource/batch_spec.rb +46 -46
  1798. data/spec/unit/resource/bff_package_spec.rb +51 -51
  1799. data/spec/unit/resource/breakpoint_spec.rb +64 -64
  1800. data/spec/unit/resource/build_essential_spec.rb +43 -43
  1801. data/spec/unit/resource/cab_package_spec.rb +64 -64
  1802. data/spec/unit/resource/chef_gem_spec.rb +125 -125
  1803. data/spec/unit/resource/chef_handler_spec.rb +40 -40
  1804. data/spec/unit/resource/chocolatey_config_spec.rb +98 -98
  1805. data/spec/unit/resource/chocolatey_package_spec.rb +91 -91
  1806. data/spec/unit/resource/chocolatey_source_spec.rb +102 -102
  1807. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
  1808. data/spec/unit/resource/conditional_spec.rb +254 -254
  1809. data/spec/unit/resource/cookbook_file_spec.rb +93 -93
  1810. data/spec/unit/resource/cron_access_spec.rb +36 -36
  1811. data/spec/unit/resource/cron_d_spec.rb +90 -90
  1812. data/spec/unit/resource/cron_spec.rb +173 -173
  1813. data/spec/unit/resource/csh_spec.rb +45 -45
  1814. data/spec/unit/resource/directory_spec.rb +69 -69
  1815. data/spec/unit/resource/dmg_package_spec.rb +39 -39
  1816. data/spec/unit/resource/dnf_package_spec.rb +108 -108
  1817. data/spec/unit/resource/dpkg_package_spec.rb +50 -50
  1818. data/spec/unit/resource/dsc_resource_spec.rb +102 -102
  1819. data/spec/unit/resource/dsc_script_spec.rb +134 -134
  1820. data/spec/unit/resource/execute_spec.rb +277 -277
  1821. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
  1822. data/spec/unit/resource/file/verification_spec.rb +147 -147
  1823. data/spec/unit/resource/file_spec.rb +127 -127
  1824. data/spec/unit/resource/freebsd_package_spec.rb +103 -103
  1825. data/spec/unit/resource/gem_package_spec.rb +67 -67
  1826. data/spec/unit/resource/git_spec.rb +62 -62
  1827. data/spec/unit/resource/group_spec.rb +165 -165
  1828. data/spec/unit/resource/homebrew_cask_spec.rb +40 -40
  1829. data/spec/unit/resource/homebrew_package_spec.rb +68 -68
  1830. data/spec/unit/resource/homebrew_tap_spec.rb +44 -44
  1831. data/spec/unit/resource/hostname_spec.rb +47 -47
  1832. data/spec/unit/resource/http_request_spec.rb +65 -65
  1833. data/spec/unit/resource/ifconfig_spec.rb +109 -109
  1834. data/spec/unit/resource/ips_package_spec.rb +54 -54
  1835. data/spec/unit/resource/kernel_module_spec.rb +48 -48
  1836. data/spec/unit/resource/ksh_spec.rb +45 -45
  1837. data/spec/unit/resource/launchd_spec.rb +40 -40
  1838. data/spec/unit/resource/link_spec.rb +124 -124
  1839. data/spec/unit/resource/locale_spec.rb +60 -60
  1840. data/spec/unit/resource/log_spec.rb +64 -64
  1841. data/spec/unit/resource/macos_user_defaults_spec.rb +35 -35
  1842. data/spec/unit/resource/macports_package_spec.rb +51 -51
  1843. data/spec/unit/resource/mdadm_spec.rb +104 -104
  1844. data/spec/unit/resource/mount_spec.rb +178 -178
  1845. data/spec/unit/resource/msu_package_spec.rb +63 -63
  1846. data/spec/unit/resource/ohai_hint_spec.rb +44 -44
  1847. data/spec/unit/resource/ohai_spec.rb +62 -62
  1848. data/spec/unit/resource/openbsd_package_spec.rb +58 -58
  1849. data/spec/unit/resource/openssl_dhparam.rb +61 -61
  1850. data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -64
  1851. data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -43
  1852. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -64
  1853. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -43
  1854. data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -72
  1855. data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -61
  1856. data/spec/unit/resource/openssl_x509_request.rb +68 -68
  1857. data/spec/unit/resource/osx_profile_spec.rb +60 -60
  1858. data/spec/unit/resource/package_spec.rb +108 -108
  1859. data/spec/unit/resource/pacman_package_spec.rb +46 -46
  1860. data/spec/unit/resource/paludis_package_spec.rb +36 -36
  1861. data/spec/unit/resource/perl_spec.rb +44 -44
  1862. data/spec/unit/resource/portage_package_spec.rb +46 -46
  1863. data/spec/unit/resource/powershell_package_source_spec.rb +219 -219
  1864. data/spec/unit/resource/powershell_package_spec.rb +98 -98
  1865. data/spec/unit/resource/powershell_script_spec.rb +136 -136
  1866. data/spec/unit/resource/python_spec.rb +40 -40
  1867. data/spec/unit/resource/reboot_spec.rb +47 -47
  1868. data/spec/unit/resource/registry_key_spec.rb +215 -215
  1869. data/spec/unit/resource/remote_directory_spec.rb +105 -105
  1870. data/spec/unit/resource/remote_file_spec.rb +220 -220
  1871. data/spec/unit/resource/resource_notification_spec.rb +169 -169
  1872. data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -50
  1873. data/spec/unit/resource/rhsm_errata_spec.rb +39 -39
  1874. data/spec/unit/resource/rhsm_register_spec.rb +204 -204
  1875. data/spec/unit/resource/rhsm_repo_spec.rb +64 -64
  1876. data/spec/unit/resource/rhsm_subscription_spec.rb +98 -98
  1877. data/spec/unit/resource/route_spec.rb +95 -95
  1878. data/spec/unit/resource/rpm_package_spec.rb +62 -62
  1879. data/spec/unit/resource/ruby_block_spec.rb +58 -58
  1880. data/spec/unit/resource/ruby_spec.rb +39 -39
  1881. data/spec/unit/resource/scm_spec.rb +173 -173
  1882. data/spec/unit/resource/script_spec.rb +52 -52
  1883. data/spec/unit/resource/service_spec.rb +206 -206
  1884. data/spec/unit/resource/smartos_package_spec.rb +52 -52
  1885. data/spec/unit/resource/solaris_package_spec.rb +54 -54
  1886. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +55 -55
  1887. data/spec/unit/resource/subversion_spec.rb +91 -91
  1888. data/spec/unit/resource/sudo_spec.rb +99 -99
  1889. data/spec/unit/resource/swap_file_spec.rb +39 -39
  1890. data/spec/unit/resource/sysctl_spec.rb +54 -54
  1891. data/spec/unit/resource/systemd_unit_spec.rb +130 -130
  1892. data/spec/unit/resource/template_spec.rb +222 -222
  1893. data/spec/unit/resource/timezone.rb +39 -39
  1894. data/spec/unit/resource/user_spec.rb +122 -122
  1895. data/spec/unit/resource/windows_ad_join_spec.rb +51 -51
  1896. data/spec/unit/resource/windows_auto_run_spec.rb +50 -50
  1897. data/spec/unit/resource/windows_certificate.rb +83 -83
  1898. data/spec/unit/resource/windows_env_spec.rb +75 -75
  1899. data/spec/unit/resource/windows_feature.rb +64 -64
  1900. data/spec/unit/resource/windows_feature_dism.rb +72 -72
  1901. data/spec/unit/resource/windows_feature_powershell.rb +72 -72
  1902. data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -401
  1903. data/spec/unit/resource/windows_font_spec.rb +43 -43
  1904. data/spec/unit/resource/windows_package_spec.rb +105 -105
  1905. data/spec/unit/resource/windows_pagefile_spec.rb +49 -49
  1906. data/spec/unit/resource/windows_path_spec.rb +40 -40
  1907. data/spec/unit/resource/windows_printer_port_spec.rb +62 -62
  1908. data/spec/unit/resource/windows_printer_spec.rb +52 -52
  1909. data/spec/unit/resource/windows_service_spec.rb +93 -93
  1910. data/spec/unit/resource/windows_share.rb +39 -39
  1911. data/spec/unit/resource/windows_shortcut_spec.rb +38 -38
  1912. data/spec/unit/resource/windows_task_spec.rb +399 -399
  1913. data/spec/unit/resource/windows_workgroup_spec.rb +74 -74
  1914. data/spec/unit/resource/yum_package_spec.rb +150 -150
  1915. data/spec/unit/resource/yum_repository_spec.rb +152 -152
  1916. data/spec/unit/resource/zypper_package_spec.rb +51 -51
  1917. data/spec/unit/resource/zypper_repository_spec.rb +115 -115
  1918. data/spec/unit/resource_builder_spec.rb +1 -1
  1919. data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
  1920. data/spec/unit/resource_collection/resource_set_spec.rb +244 -244
  1921. data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
  1922. data/spec/unit/resource_collection_spec.rb +408 -408
  1923. data/spec/unit/resource_definition_spec.rb +117 -117
  1924. data/spec/unit/resource_inspector_spec.rb +60 -60
  1925. data/spec/unit/resource_reporter_spec.rb +782 -782
  1926. data/spec/unit/resource_resolver_spec.rb +52 -52
  1927. data/spec/unit/resource_spec.rb +1195 -1195
  1928. data/spec/unit/role_spec.rb +358 -358
  1929. data/spec/unit/run_context/child_run_context_spec.rb +133 -133
  1930. data/spec/unit/run_context/cookbook_compiler_spec.rb +224 -224
  1931. data/spec/unit/run_context_spec.rb +241 -241
  1932. data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
  1933. data/spec/unit/run_list/run_list_item_spec.rb +117 -117
  1934. data/spec/unit/run_list/versioned_recipe_list_spec.rb +197 -197
  1935. data/spec/unit/run_list_spec.rb +312 -312
  1936. data/spec/unit/run_lock_spec.rb +140 -140
  1937. data/spec/unit/run_status_spec.rb +144 -144
  1938. data/spec/unit/runner_spec.rb +398 -398
  1939. data/spec/unit/scan_access_control_spec.rb +183 -183
  1940. data/spec/unit/search/query_spec.rb +283 -283
  1941. data/spec/unit/server_api_spec.rb +124 -124
  1942. data/spec/unit/server_api_versions_spec.rb +66 -66
  1943. data/spec/unit/shell/model_wrapper_spec.rb +96 -96
  1944. data/spec/unit/shell/shell_ext_spec.rb +153 -153
  1945. data/spec/unit/shell/shell_session_spec.rb +250 -250
  1946. data/spec/unit/shell_spec.rb +162 -162
  1947. data/spec/unit/user_spec.rb +275 -275
  1948. data/spec/unit/user_v1_spec.rb +583 -583
  1949. data/spec/unit/util/backup_spec.rb +141 -141
  1950. data/spec/unit/util/diff_spec.rb +576 -576
  1951. data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
  1952. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +248 -248
  1953. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
  1954. data/spec/unit/util/dsc/resource_store.rb +78 -78
  1955. data/spec/unit/util/editor_spec.rb +152 -152
  1956. data/spec/unit/util/file_edit_spec.rb +224 -224
  1957. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
  1958. data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
  1959. data/spec/unit/util/selinux_spec.rb +157 -157
  1960. data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
  1961. data/spec/unit/util/windows/logon_session_spec.rb +285 -285
  1962. data/spec/unit/version/platform_spec.rb +60 -60
  1963. data/spec/unit/version_class_spec.rb +171 -171
  1964. data/spec/unit/version_constraint/platform_spec.rb +45 -45
  1965. data/spec/unit/version_constraint_spec.rb +179 -179
  1966. data/spec/unit/version_string_spec.rb +79 -79
  1967. data/spec/unit/win32/error_spec.rb +77 -77
  1968. data/spec/unit/win32/link_spec.rb +73 -73
  1969. data/spec/unit/win32/registry_spec.rb +394 -394
  1970. data/spec/unit/win32/security_spec.rb +134 -134
  1971. data/spec/unit/windows_service_spec.rb +118 -118
  1972. data/tasks/.DS_Store +0 -0
  1973. data/tasks/announce.rb +58 -58
  1974. data/tasks/bin/run_external_test +29 -29
  1975. data/tasks/dependencies.rb +58 -58
  1976. data/tasks/maintainers.rb +211 -211
  1977. data/tasks/rspec.rb +90 -90
  1978. data/tasks/templates/prerelease.md.erb +35 -35
  1979. data/tasks/templates/release.md.erb +34 -34
  1980. metadata +34 -6
@@ -1,1231 +1,1231 @@
1
- require "support/shared/integration/integration_helper"
2
-
3
- describe "Chef::Resource.property" do
4
- include IntegrationSupport
5
-
6
- module Namer
7
- @i = 0
8
- def self.next_resource_name
9
- "chef_resource_property_spec_#{@i += 1}"
10
- end
11
-
12
- def self.reset_index
13
- @current_index = 0
14
- end
15
-
16
- def self.current_index
17
- @current_index
18
- end
19
-
20
- def self.next_index
21
- @current_index += 1
22
- end
23
- end
24
-
25
- def lazy(&block)
26
- Chef::DelayedEvaluator.new(&block)
27
- end
28
-
29
- before do
30
- Namer.reset_index
31
- end
32
-
33
- def self.new_resource_name
34
- Namer.next_resource_name
35
- end
36
-
37
- let(:resource_class) do
38
- new_resource_name = self.class.new_resource_name
39
- Class.new(Chef::Resource) do
40
- resource_name new_resource_name
41
- def next_index
42
- Namer.next_index
43
- end
44
- end
45
- end
46
-
47
- let(:resource) do
48
- resource_class.new("blah")
49
- end
50
-
51
- def self.english_join(values)
52
- return "<nothing>" if values.size == 0
53
- return values[0].inspect if values.size == 1
54
- "#{values[0..-2].map { |v| v.inspect }.join(", ")} and #{values[-1].inspect}"
55
- end
56
-
57
- def self.with_property(*properties, &block)
58
- tags_index = properties.find_index { |p| !p.is_a?(String) }
59
- if tags_index
60
- properties, tags = properties[0..tags_index - 1], properties[tags_index..-1]
61
- else
62
- tags = []
63
- end
64
- if properties.size == 1
65
- description = "With property #{properties.first}"
66
- else
67
- description = "With properties #{english_join(properties.map { |property| (property.inspect).to_s })}"
68
- end
69
- context description, *tags do
70
- before do
71
- properties.each do |property_str|
72
- resource_class.class_eval("property #{property_str}", __FILE__, __LINE__)
73
- end
74
- end
75
- instance_eval(&block)
76
- end
77
- end
78
-
79
- # Basic properties
80
- with_property ":bare_property" do
81
- it "can be set" do
82
- expect(resource.bare_property 10).to eq 10
83
- expect(resource.bare_property).to eq 10
84
- end
85
- it "nil does a set" do
86
- expect(resource.bare_property 10).to eq 10
87
- expect(resource.bare_property nil).to eq nil
88
- expect(resource.bare_property).to eq nil
89
- end
90
- it "can be updated" do
91
- expect(resource.bare_property 10).to eq 10
92
- expect(resource.bare_property 20).to eq 20
93
- expect(resource.bare_property).to eq 20
94
- end
95
- it "can be set with =" do
96
- expect(resource.bare_property = 10).to eq 10
97
- expect(resource.bare_property).to eq 10
98
- end
99
- it "can be set to nil with =" do
100
- expect(resource.bare_property 10).to eq 10
101
- expect(resource.bare_property = nil).to be_nil
102
- expect(resource.bare_property).to be_nil
103
- end
104
- it "can be updated with =" do
105
- expect(resource.bare_property 10).to eq 10
106
- expect(resource.bare_property = 20).to eq 20
107
- expect(resource.bare_property).to eq 20
108
- end
109
- end
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
-
121
- context "deprecated properties" do
122
- it "does not create a deprecation warning on definition" do
123
- expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error Chef::Exceptions::DeprecatedFeatureError
124
- end
125
-
126
- with_property ":x, deprecated: 'a deprecated property'" do
127
- it "deprecated properties emit a deprecation warning" do
128
- expect(Chef).to receive(:deprecated).with(:property, "a deprecated property")
129
- expect(resource.x 10).to eq 10
130
- end
131
- end
132
- end
133
-
134
- with_property ":x, name_property: true" do
135
- context "and subclass" do
136
- let(:subresource_class) do
137
- new_resource_name = self.class.new_resource_name
138
- Class.new(resource_class) do
139
- resource_name new_resource_name
140
- end
141
- end
142
- let(:subresource) do
143
- subresource_class.new("blah")
144
- end
145
-
146
- context "with property :x on the subclass" do
147
- before do
148
- subresource_class.class_eval do
149
- property :x
150
- end
151
- end
152
-
153
- it "x is still name_property" do
154
- expect(subresource.x).to eq "blah"
155
- end
156
- end
157
-
158
- context "with property :x, name_attribute: false on the subclass" do
159
- before do
160
- subresource_class.class_eval do
161
- property :x, name_attribute: false
162
- end
163
- end
164
-
165
- it "x is no longer name_property" do
166
- expect(subresource.x).to be_nil
167
- end
168
- end
169
-
170
- context "with property :x, default: 10 on the subclass" do
171
- before do
172
- subresource_class.class_eval do
173
- property :x, default: 10
174
- end
175
- end
176
-
177
- it "x is no longer name_property" do
178
- expect(subresource.x).to eq(10)
179
- end
180
- end
181
- end
182
- end
183
-
184
- with_property ":x, Integer" do
185
- context "and subclass" do
186
- let(:subresource_class) do
187
- new_resource_name = self.class.new_resource_name
188
- Class.new(resource_class) do
189
- resource_name new_resource_name
190
- end
191
- end
192
- let(:subresource) do
193
- subresource_class.new("blah")
194
- end
195
-
196
- it "x is inherited" do
197
- expect(subresource.x 10).to eq 10
198
- expect(subresource.x).to eq 10
199
- expect(subresource.x = 20).to eq 20
200
- expect(subresource.x).to eq 20
201
- expect(subresource_class.properties[:x]).not_to be_nil
202
- end
203
-
204
- it "x's validation is inherited" do
205
- expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
206
- end
207
-
208
- context "with property :y on the subclass" do
209
- before do
210
- subresource_class.class_eval do
211
- property :y
212
- end
213
- end
214
-
215
- it "x is still there" do
216
- expect(subresource.x 10).to eq 10
217
- expect(subresource.x).to eq 10
218
- expect(subresource.x = 20).to eq 20
219
- expect(subresource.x).to eq 20
220
- expect(subresource_class.properties[:x]).not_to be_nil
221
- end
222
- it "y is there" do
223
- expect(subresource.y 10).to eq 10
224
- expect(subresource.y).to eq 10
225
- expect(subresource.y = 20).to eq 20
226
- expect(subresource.y).to eq 20
227
- expect(subresource_class.properties[:y]).not_to be_nil
228
- end
229
- it "y is not on the superclass" do
230
- expect { resource_class.y 10 }.to raise_error NoMethodError
231
- expect(resource_class.properties[:y]).to be_nil
232
- end
233
- end
234
-
235
- context "with property :x on the subclass" do
236
- before do
237
- subresource_class.class_eval do
238
- property :x
239
- end
240
- end
241
-
242
- it "x is still there" do
243
- expect(subresource.x 10).to eq 10
244
- expect(subresource.x).to eq 10
245
- expect(subresource.x = 20).to eq 20
246
- expect(subresource.x).to eq 20
247
- expect(subresource_class.properties[:x]).not_to be_nil
248
- expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
249
- end
250
-
251
- it "x's validation is inherited" do
252
- expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
253
- end
254
- end
255
-
256
- context "with property :x, default: 80 on the subclass" do
257
- before do
258
- subresource_class.class_eval do
259
- property :x, default: 80
260
- end
261
- end
262
-
263
- it "x is still there" do
264
- expect(subresource.x 10).to eq 10
265
- expect(subresource.x).to eq 10
266
- expect(subresource.x = 20).to eq 20
267
- expect(subresource.x).to eq 20
268
- expect(subresource_class.properties[:x]).not_to be_nil
269
- expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
270
- end
271
-
272
- it "x defaults to 80" do
273
- expect(subresource.x).to eq 80
274
- end
275
-
276
- it "x's validation is inherited" do
277
- expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
278
- end
279
- end
280
-
281
- context "with property :x, String on the subclass" do
282
- before do
283
- subresource_class.class_eval do
284
- property :x, String
285
- end
286
- end
287
-
288
- it "x is still there" do
289
- expect(subresource.x "10").to eq "10"
290
- expect(subresource.x).to eq "10"
291
- expect(subresource.x = "20").to eq "20"
292
- expect(subresource.x).to eq "20"
293
- expect(subresource_class.properties[:x]).not_to be_nil
294
- expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
295
- end
296
-
297
- it "x's validation is overwritten" do
298
- expect { subresource.x 10 }.to raise_error Chef::Exceptions::ValidationFailed
299
- expect(subresource.x "ohno").to eq "ohno"
300
- expect(subresource.x).to eq "ohno"
301
- end
302
-
303
- it "the superclass's validation for x is still there" do
304
- expect { resource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
305
- expect(resource.x 10).to eq 10
306
- expect(resource.x).to eq 10
307
- end
308
- end
309
- end
310
- end
311
-
312
- context "Chef::Resource::Property#reset_property" do
313
- it "when a resource is newly created, reset_property(:name) sets property to nil" do
314
- expect(resource.property_is_set?(:name)).to be_truthy
315
- resource.reset_property(:name)
316
- expect(resource.property_is_set?(:name)).to be_falsey
317
- expect { resource.name }.to raise_error Chef::Exceptions::ValidationFailed
318
- end
319
-
320
- it "when referencing an undefined property, reset_property(:x) raises an error" do
321
- expect { resource.reset_property(:x) }.to raise_error(ArgumentError)
322
- end
323
-
324
- with_property ":x" do
325
- it "when the resource is newly created, reset_property(:x) does nothing" do
326
- expect(resource.property_is_set?(:x)).to be_falsey
327
- resource.reset_property(:x)
328
- expect(resource.property_is_set?(:x)).to be_falsey
329
- expect(resource.x).to be_nil
330
- end
331
- it "when x is set, reset_property resets it" do
332
- resource.x 10
333
- expect(resource.property_is_set?(:x)).to be_truthy
334
- resource.reset_property(:x)
335
- expect(resource.property_is_set?(:x)).to be_falsey
336
- expect(resource.x).to be_nil
337
- end
338
- end
339
-
340
- with_property ":x, Integer" do
341
- it "when the resource is newly created, reset_property(:x) does nothing" do
342
- expect(resource.property_is_set?(:x)).to be_falsey
343
- resource.reset_property(:x)
344
- expect(resource.property_is_set?(:x)).to be_falsey
345
- expect(resource.x).to be_nil
346
- end
347
- it "when x is set, reset_property resets it even though `nil` is technically invalid" do
348
- resource.x 10
349
- expect(resource.property_is_set?(:x)).to be_truthy
350
- resource.reset_property(:x)
351
- expect(resource.property_is_set?(:x)).to be_falsey
352
- expect(resource.x).to be_nil
353
- end
354
- end
355
-
356
- with_property ":x, default: 10" do
357
- it "when the resource is newly created, reset_property(:x) does nothing" do
358
- expect(resource.property_is_set?(:x)).to be_falsey
359
- resource.reset_property(:x)
360
- expect(resource.property_is_set?(:x)).to be_falsey
361
- expect(resource.x).to eq 10
362
- end
363
- it "when x is set, reset_property resets it and it returns the default" do
364
- resource.x 20
365
- resource.reset_property(:x)
366
- expect(resource.property_is_set?(:x)).to be_falsey
367
- expect(resource.x).to eq 10
368
- end
369
- end
370
-
371
- with_property ":x, default: lazy { 10 }" do
372
- it "when the resource is newly created, reset_property(:x) does nothing" do
373
- expect(resource.property_is_set?(:x)).to be_falsey
374
- resource.reset_property(:x)
375
- expect(resource.property_is_set?(:x)).to be_falsey
376
- expect(resource.x).to eq 10
377
- end
378
- it "when x is set, reset_property resets it and it returns the default" do
379
- resource.x 20
380
- resource.reset_property(:x)
381
- expect(resource.property_is_set?(:x)).to be_falsey
382
- expect(resource.x).to eq 10
383
- end
384
- end
385
- end
386
-
387
- context "Chef::Resource::Property#property_is_set?" do
388
- it "when a resource is newly created, property_is_set?(:name) is true" do
389
- expect(resource.property_is_set?(:name)).to be_truthy
390
- end
391
-
392
- it "when referencing an undefined property, property_is_set?(:x) raises an error" do
393
- expect { resource.property_is_set?(:x) }.to raise_error(ArgumentError)
394
- end
395
-
396
- with_property ":x" do
397
- it "when the resource is newly created, property_is_set?(:x) is false" do
398
- expect(resource.property_is_set?(:x)).to be_falsey
399
- end
400
- it "when x is set, property_is_set?(:x) is true" do
401
- resource.x 10
402
- expect(resource.property_is_set?(:x)).to be_truthy
403
- end
404
- it "when x is set with =, property_is_set?(:x) is true" do
405
- resource.x = 10
406
- expect(resource.property_is_set?(:x)).to be_truthy
407
- end
408
- it "when x is set to a lazy value, property_is_set?(:x) is true" do
409
- resource.x lazy { 10 }
410
- expect(resource.property_is_set?(:x)).to be_truthy
411
- end
412
- it "when x is retrieved, property_is_set?(:x) is false" do
413
- resource.x
414
- expect(resource.property_is_set?(:x)).to be_falsey
415
- end
416
- end
417
-
418
- with_property ":x, default: 10" do
419
- it "when the resource is newly created, property_is_set?(:x) is false" do
420
- expect(resource.property_is_set?(:x)).to be_falsey
421
- end
422
- it "when x is set, property_is_set?(:x) is true" do
423
- resource.x 10
424
- expect(resource.property_is_set?(:x)).to be_truthy
425
- end
426
- it "when x is set with =, property_is_set?(:x) is true" do
427
- resource.x = 10
428
- expect(resource.property_is_set?(:x)).to be_truthy
429
- end
430
- it "when x is set to a lazy value, property_is_set?(:x) is true" do
431
- resource.x lazy { 10 }
432
- expect(resource.property_is_set?(:x)).to be_truthy
433
- end
434
- it "when x is retrieved, property_is_set?(:x) is false" do
435
- resource.x
436
- expect(resource.property_is_set?(:x)).to be_falsey
437
- end
438
- end
439
-
440
- with_property ":x, default: nil" do
441
- it "when the resource is newly created, property_is_set?(:x) is false" do
442
- expect(resource.property_is_set?(:x)).to be_falsey
443
- end
444
- it "when x is set, property_is_set?(:x) is true" do
445
- resource.x 10
446
- expect(resource.property_is_set?(:x)).to be_truthy
447
- end
448
- it "when x is set with =, property_is_set?(:x) is true" do
449
- resource.x = 10
450
- expect(resource.property_is_set?(:x)).to be_truthy
451
- end
452
- it "when x is set to a lazy value, property_is_set?(:x) is true" do
453
- resource.x lazy { 10 }
454
- expect(resource.property_is_set?(:x)).to be_truthy
455
- end
456
- it "when x is retrieved, property_is_set?(:x) is false" do
457
- resource.x
458
- expect(resource.property_is_set?(:x)).to be_falsey
459
- end
460
- end
461
-
462
- with_property ":x, default: lazy { 10 }" do
463
- it "when the resource is newly created, property_is_set?(:x) is false" do
464
- expect(resource.property_is_set?(:x)).to be_falsey
465
- end
466
- it "when x is set, property_is_set?(:x) is true" do
467
- resource.x 10
468
- expect(resource.property_is_set?(:x)).to be_truthy
469
- end
470
- it "when x is set with =, property_is_set?(:x) is true" do
471
- resource.x = 10
472
- expect(resource.property_is_set?(:x)).to be_truthy
473
- end
474
- it "when x is retrieved, property_is_set?(:x) is false" do
475
- resource.x
476
- expect(resource.property_is_set?(:x)).to be_falsey
477
- end
478
- end
479
- end
480
-
481
- context "Chef::Resource::Property#default" do
482
- with_property ":x, default: 10" do
483
- it "when x is set, it returns its value" do
484
- expect(resource.x 20).to eq 20
485
- expect(resource.property_is_set?(:x)).to be_truthy
486
- expect(resource.x).to eq 20
487
- end
488
- it "when x is not set, it returns 10" do
489
- expect(resource.x).to eq 10
490
- end
491
- it "when x is not set, it is not included in state" do
492
- expect(resource.state_for_resource_reporter).to eq({})
493
- end
494
- it "when x is set to nil, it returns nil" do
495
- resource.instance_eval { @x = nil }
496
- expect(resource.x).to be_nil
497
- end
498
-
499
- context "With a subclass" do
500
- let(:subresource_class) do
501
- new_resource_name = self.class.new_resource_name
502
- Class.new(resource_class) do
503
- resource_name new_resource_name
504
- end
505
- end
506
- let(:subresource) { subresource_class.new("blah") }
507
- it "The default is inherited" do
508
- expect(subresource.x).to eq 10
509
- end
510
- end
511
- end
512
-
513
- with_property ":x, default: 10, identity: true" do
514
- it "when x is not set, it is included in identity" do
515
- expect(resource.identity).to eq(10)
516
- end
517
- end
518
-
519
- with_property ":x, default: 1, identity: true", ":y, default: 2, identity: true" do
520
- it "when x is not set, it is still included in identity" do
521
- resource.y 20
522
- expect(resource.identity).to eq(x: 1, y: 20)
523
- end
524
- end
525
-
526
- with_property ":x, default: nil" do
527
- it "when x is not set, it returns nil" do
528
- expect(resource.x).to be_nil
529
- end
530
- end
531
-
532
- with_property ":x" do
533
- it "when x is not set, it returns nil" do
534
- expect(resource.x).to be_nil
535
- end
536
- end
537
-
538
- context "string default" do
539
- with_property ":x, default: ''" do
540
- it "when x is not set, it returns ''" do
541
- expect(resource.x).to eq ""
542
- end
543
- it "x is immutable" do
544
- expect { resource.x << "foo" }.to raise_error(RuntimeError, "can't modify frozen String")
545
- end
546
- end
547
-
548
- with_property ":x, default: lazy { '' }" do
549
- it "x is immutable" do
550
- expect(resource.x).to eq ""
551
- resource.x << "foo"
552
- expect(resource.x).to eq "foo"
553
- expect(resource_class.new("other").x).to eq ""
554
- end
555
- end
556
- end
557
-
558
- context "hash default" do
559
- with_property ":x, default: {}" do
560
- it "when x is not set, it returns {}" do
561
- expect(resource.x).to eq({})
562
- end
563
- it "x is immutable" do
564
- expect { resource.x["foo"] = "bar" }.to raise_error(RuntimeError, "can't modify frozen Hash")
565
- end
566
- it "The same exact value is returned multiple times in a row" do
567
- value = resource.x
568
- expect(value).to eq({})
569
- expect(resource.x.object_id).to eq(value.object_id)
570
- end
571
- it "Multiple instances of x receive the exact same value" do
572
- expect(resource.x.object_id).to eq(resource_class.new("blah2").x.object_id)
573
- end
574
- end
575
-
576
- with_property ":x, default: lazy { {} }" do
577
- it "when x is not set, it returns {}" do
578
- expect(resource.x).to eq({})
579
- end
580
- it "The value is the same each time it is called" do
581
- value = resource.x
582
- expect(value).to eq({})
583
- expect(resource.x.object_id).to eq(value.object_id)
584
- end
585
- it "Multiple instances of x receive different values" do
586
- expect(resource.x.object_id).not_to eq(resource_class.new("blah2").x.object_id)
587
- end
588
- end
589
- end
590
-
591
- context "complex, nested default" do
592
- with_property ":x, default: [{foo: 'bar'}]" do
593
- it "when x is not set, it returns [{foo: 'bar'}]" do
594
- expect(resource.x).to eq([{ foo: "bar" }])
595
- end
596
- it "x is immutable" do
597
- expect { resource.x << :other }.to raise_error(RuntimeError, "can't modify frozen Array")
598
- end
599
- it "x.first is immutable" do
600
- expect { resource.x.first[:foo] = "other" }.to raise_error(RuntimeError, "can't modify frozen Hash")
601
- end
602
- it "x.first[:foo] is immutable" do
603
- expect { resource.x.first[:foo] << "other" }.to raise_error(RuntimeError, "can't modify frozen String")
604
- end
605
- end
606
- end
607
-
608
- context "with a class with 'blah' as both class and instance methods" do
609
- before do
610
- resource_class.class_eval do
611
- def self.blah
612
- "class"
613
- end
614
-
615
- def blah
616
- "#{name}#{next_index}"
617
- end
618
- end
619
- end
620
-
621
- with_property ":x, default: lazy { blah }" do
622
- it "x is run in context of the instance" do
623
- expect(resource.x).to eq "blah1"
624
- end
625
- it "x is run in the context of each instance it is run in" do
626
- expect(resource.x).to eq "blah1"
627
- expect(resource_class.new("another").x).to eq "another2"
628
- end
629
- end
630
-
631
- with_property ':x, default: lazy { |x| "#{blah}#{x.blah}" }' do
632
- it "x is run in context of the class (where it was defined) and passed the instance" do
633
- expect(resource.x).to eq "classblah1"
634
- end
635
- it "x is passed the value of each instance it is run in" do
636
- expect(resource.x).to eq "classblah1"
637
- expect(resource_class.new("another").x).to eq "classanother2"
638
- end
639
- end
640
- end
641
-
642
- context "validation of defaults" do
643
- it "When a class is declared with property :x, String, default: 10, it immediately fails validation" do
644
- expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::ValidationFailed
645
- end
646
-
647
- with_property ":x, String, default: lazy { Namer.next_index }" do
648
- it "when the resource is created, no error is raised" do
649
- resource
650
- end
651
- it "when x is set, no error is raised" do
652
- expect(resource.x "hi").to eq "hi"
653
- expect(resource.x).to eq "hi"
654
- end
655
- it "when x is retrieved, it fails validation" do
656
- expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
657
- expect(Namer.current_index).to eq 1
658
- end
659
- end
660
-
661
- with_property ":x, default: lazy { Namer.next_index.to_s }, is: proc { |v| Namer.next_index; true }" do
662
- it "coercion and validation is only run the first time" do
663
- expect(resource.x).to eq "1"
664
- expect(Namer.current_index).to eq 2
665
- expect(resource.x).to eq "1"
666
- expect(Namer.current_index).to eq 2
667
- end
668
- end
669
-
670
- with_property ":x, default: lazy { Namer.next_index.to_s.freeze }, is: proc { |v| Namer.next_index; true }" do
671
- it "coercion and validation is run each time" do
672
- expect(resource.x).to eq "1"
673
- expect(Namer.current_index).to eq 2
674
- expect(resource.x).to eq "3"
675
- expect(Namer.current_index).to eq 4
676
- end
677
- end
678
- end
679
-
680
- context "coercion of defaults" do
681
- # Frozen default, non-frozen coerce
682
- with_property ':x, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
683
- it "when the resource is created, the proc is not yet run" do
684
- resource
685
- expect(Namer.current_index).to eq 0
686
- end
687
- it "when x is set, coercion is run" do
688
- expect(resource.x "hi").to eq "hi1"
689
- expect(resource.x).to eq "hi1"
690
- expect(Namer.current_index).to eq 1
691
- end
692
- it "when x is retrieved, coercion is run exactly once" do
693
- expect(resource.x).to eq "101"
694
- expect(resource.x).to eq "101"
695
- expect(Namer.current_index).to eq 1
696
- end
697
- end
698
-
699
- # Frozen default, frozen coerce
700
- with_property ':x, coerce: proc { |v| "#{v}#{next_index}".freeze }, default: 10' do
701
- it "when the resource is created, the proc is not yet run" do
702
- resource
703
- expect(Namer.current_index).to eq 0
704
- end
705
- it "when x is set, coercion is run" do
706
- expect(resource.x "hi").to eq "hi1"
707
- expect(resource.x).to eq "hi1"
708
- expect(Namer.current_index).to eq 1
709
- end
710
- it "when x is retrieved, coercion is run each time" do
711
- expect(resource.x).to eq "101"
712
- expect(resource.x).to eq "102"
713
- expect(Namer.current_index).to eq 2
714
- end
715
- end
716
-
717
- # Frozen lazy default, non-frozen coerce
718
- with_property ':x, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
719
- it "when the resource is created, the proc is not yet run" do
720
- resource
721
- expect(Namer.current_index).to eq 0
722
- end
723
- it "when x is set, coercion is run" do
724
- expect(resource.x "hi").to eq "hi1"
725
- expect(resource.x).to eq "hi1"
726
- expect(Namer.current_index).to eq 1
727
- end
728
- it "when x is retrieved, coercion is run exactly once" do
729
- expect(resource.x).to eq "101"
730
- expect(resource.x).to eq "101"
731
- expect(Namer.current_index).to eq 1
732
- end
733
- end
734
-
735
- # Non-frozen lazy default, frozen coerce
736
- with_property ':x, coerce: proc { |v| "#{v}#{next_index}".freeze }, default: lazy { "10" }' do
737
- it "when the resource is created, the proc is not yet run" do
738
- resource
739
- expect(Namer.current_index).to eq 0
740
- end
741
- it "when x is set, coercion is run" do
742
- expect(resource.x "hi").to eq "hi1"
743
- expect(resource.x).to eq "hi1"
744
- expect(Namer.current_index).to eq 1
745
- end
746
- it "when x is retrieved, coercion is run each time" do
747
- expect(resource.x).to eq "101"
748
- expect(resource.x).to eq "102"
749
- expect(Namer.current_index).to eq 2
750
- end
751
- end
752
-
753
- with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
754
- it "coercion and validation is only run the first time x is retrieved" do
755
- expect(Namer.current_index).to eq 0
756
- expect(resource.x).to eq "101"
757
- expect(Namer.current_index).to eq 2
758
- expect(resource.x).to eq "101"
759
- expect(Namer.current_index).to eq 2
760
- end
761
- end
762
-
763
- context "validation and coercion of defaults" do
764
- with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
765
- it "when x is retrieved, it is coerced before validating and passes" do
766
- expect(resource.x).to eq "101"
767
- end
768
- end
769
- with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
770
- it "when x is retrieved, it is coerced and fails validation" do
771
- expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
772
- end
773
- end
774
- with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
775
- it "when x is retrieved, it is coerced before validating and passes" do
776
- expect(resource.x).to eq "101"
777
- end
778
- end
779
- with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
780
- it "when x is retrieved, it is coerced and fails validation" do
781
- expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
782
- end
783
- end
784
- with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
785
- it "coercion is only run the first time x is retrieved, and validation is run" do
786
- expect(Namer.current_index).to eq 0
787
- expect(resource.x).to eq "101"
788
- expect(Namer.current_index).to eq 2
789
- expect(resource.x).to eq "101"
790
- expect(Namer.current_index).to eq 2
791
- end
792
- end
793
- end
794
- end
795
- end
796
-
797
- context "Chef::Resource#lazy" do
798
- with_property ":x" do
799
- it "setting x to a lazy value does not run it immediately" do
800
- resource.x lazy { Namer.next_index }
801
- expect(Namer.current_index).to eq 0
802
- end
803
- it "you can set x to a lazy value in the instance" do
804
- resource.instance_eval do
805
- x lazy { Namer.next_index }
806
- end
807
- expect(resource.x).to eq 1
808
- expect(Namer.current_index).to eq 1
809
- end
810
- it "retrieving a lazy value pops it open" do
811
- resource.x lazy { Namer.next_index }
812
- expect(resource.x).to eq 1
813
- expect(Namer.current_index).to eq 1
814
- end
815
- it "retrieving a lazy value twice evaluates it twice" do
816
- resource.x lazy { Namer.next_index }
817
- expect(resource.x).to eq 1
818
- expect(resource.x).to eq 2
819
- expect(Namer.current_index).to eq 2
820
- end
821
- it "setting the same lazy value on two different instances runs it on each instancee" do
822
- resource2 = resource_class.new("blah2")
823
- l = lazy { Namer.next_index }
824
- resource.x l
825
- resource2.x l
826
- expect(resource2.x).to eq 1
827
- expect(resource.x).to eq 2
828
- expect(resource2.x).to eq 3
829
- end
830
-
831
- context "when the class has a class and instance method named blah" do
832
- before do
833
- resource_class.class_eval do
834
- def self.blah
835
- "class"
836
- end
837
-
838
- def blah
839
- "#{name}#{Namer.next_index}"
840
- end
841
- end
842
- end
843
- def blah
844
- "example"
845
- end
846
- # it "retrieving lazy { blah } gets the instance variable" do
847
- # resource.x lazy { blah }
848
- # expect(resource.x).to eq "blah1"
849
- # end
850
- # it "retrieving lazy { blah } from two different instances gets two different instance variables" do
851
- # resource2 = resource_class.new("another")
852
- # l = lazy { blah }
853
- # resource2.x l
854
- # resource.x l
855
- # expect(resource2.x).to eq "another1"
856
- # expect(resource.x).to eq "blah2"
857
- # expect(resource2.x).to eq "another3"
858
- # end
859
- it 'retrieving lazy { |x| "#{blah}#{x.blah}" } gets the example and instance variables' do
860
- resource.x lazy { |x| "#{blah}#{x.blah}" }
861
- expect(resource.x).to eq "exampleblah1"
862
- end
863
- it 'retrieving lazy { |x| "#{blah}#{x.blah}" } from two different instances gets two different instance variables' do
864
- resource2 = resource_class.new("another")
865
- l = lazy { |x| "#{blah}#{x.blah}" }
866
- resource2.x l
867
- resource.x l
868
- expect(resource2.x).to eq "exampleanother1"
869
- expect(resource.x).to eq "exampleblah2"
870
- expect(resource2.x).to eq "exampleanother3"
871
- end
872
- end
873
- end
874
-
875
- with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
876
- it "lazy values are not coerced on set" do
877
- resource.x lazy { Namer.next_index }
878
- expect(Namer.current_index).to eq 0
879
- end
880
- it "lazy values are coerced on get" do
881
- resource.x lazy { Namer.next_index }
882
- expect(resource.x).to eq "12"
883
- expect(Namer.current_index).to eq 2
884
- end
885
- it "lazy values are coerced on each access" do
886
- resource.x lazy { Namer.next_index }
887
- expect(resource.x).to eq "12"
888
- expect(Namer.current_index).to eq 2
889
- expect(resource.x).to eq "34"
890
- expect(Namer.current_index).to eq 4
891
- end
892
- end
893
-
894
- with_property ":x, String" do
895
- it "lazy values are not validated on set" do
896
- resource.x lazy { Namer.next_index }
897
- expect(Namer.current_index).to eq 0
898
- end
899
- it "lazy values are validated on get" do
900
- resource.x lazy { Namer.next_index }
901
- expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
902
- expect(Namer.current_index).to eq 1
903
- end
904
- end
905
-
906
- with_property ":x, is: proc { |v| Namer.next_index; true }" do
907
- it "lazy values are validated on each access" do
908
- resource.x lazy { Namer.next_index }
909
- expect(resource.x).to eq 1
910
- expect(Namer.current_index).to eq 2
911
- expect(resource.x).to eq 3
912
- expect(Namer.current_index).to eq 4
913
- end
914
- end
915
-
916
- with_property ':x, Integer, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
917
- it "lazy values are not validated or coerced on set" do
918
- resource.x lazy { Namer.next_index }
919
- expect(Namer.current_index).to eq 0
920
- end
921
- it "lazy values are coerced before being validated, which fails" do
922
- resource.x lazy { Namer.next_index }
923
- expect(Namer.current_index).to eq 0
924
- expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
925
- expect(Namer.current_index).to eq 2
926
- end
927
- end
928
-
929
- with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }, is: proc { |v| Namer.next_index; true }' do
930
- it "lazy values are coerced and validated exactly once" do
931
- resource.x lazy { Namer.next_index }
932
- expect(resource.x).to eq "12"
933
- expect(Namer.current_index).to eq 3
934
- expect(resource.x).to eq "45"
935
- expect(Namer.current_index).to eq 6
936
- end
937
- end
938
-
939
- with_property ':x, String, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
940
- it "lazy values are coerced before being validated, which succeeds" do
941
- resource.x lazy { Namer.next_index }
942
- expect(resource.x).to eq "12"
943
- expect(Namer.current_index).to eq 2
944
- end
945
- end
946
- end
947
-
948
- context "Chef::Resource::Property#coerce" do
949
- with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
950
- it "coercion runs on set" do
951
- expect(resource.x 10).to eq "101"
952
- expect(Namer.current_index).to eq 1
953
- end
954
- it "does not emit a deprecation warning if set to nil" do
955
- # nil is never coerced
956
- expect(resource.x nil).to be_nil
957
- end
958
- it "coercion sets the value (and coercion does not run on get)" do
959
- expect(resource.x 10).to eq "101"
960
- expect(resource.x).to eq "101"
961
- expect(Namer.current_index).to eq 1
962
- end
963
- it "coercion runs each time set happens" do
964
- expect(resource.x 10).to eq "101"
965
- expect(Namer.current_index).to eq 1
966
- expect(resource.x 10).to eq "102"
967
- expect(Namer.current_index).to eq 2
968
- end
969
- end
970
- with_property ":x, coerce: proc { |x| x }" do
971
- it "does not emit a deprecation warning if set to nil" do
972
- expect(resource.x nil).to be_nil
973
- end
974
- end
975
- with_property ':x, coerce: proc { |x| Namer.next_index; raise "hi" if x == 10; x }, is: proc { |x| Namer.next_index; x != 10 }' do
976
- it "failed coercion fails to set the value" do
977
- resource.x 20
978
- expect(resource.x).to eq 20
979
- expect(Namer.current_index).to eq 2
980
- expect { resource.x 10 }.to raise_error "hi"
981
- expect(resource.x).to eq 20
982
- expect(Namer.current_index).to eq 3
983
- end
984
- it "validation does not run if coercion fails" do
985
- expect { resource.x 10 }.to raise_error "hi"
986
- expect(Namer.current_index).to eq 1
987
- end
988
- end
989
- end
990
-
991
- context "Chef::Resource::Property validation" do
992
- with_property ":x, is: proc { |v| Namer.next_index; v.is_a?(Integer) }" do
993
- it "validation runs on set" do
994
- expect(resource.x 10).to eq 10
995
- expect(Namer.current_index).to eq 1
996
- end
997
- it "validation sets the value (and validation does not run on get)" do
998
- expect(resource.x 10).to eq 10
999
- expect(resource.x).to eq 10
1000
- expect(Namer.current_index).to eq 1
1001
- end
1002
- it "validation runs each time set happens" do
1003
- expect(resource.x 10).to eq 10
1004
- expect(Namer.current_index).to eq 1
1005
- expect(resource.x 10).to eq 10
1006
- expect(Namer.current_index).to eq 2
1007
- end
1008
- it "failed validation fails to set the value" do
1009
- expect(resource.x 10).to eq 10
1010
- expect(Namer.current_index).to eq 1
1011
- expect { resource.x "blah" }.to raise_error Chef::Exceptions::ValidationFailed
1012
- expect(resource.x).to eq 10
1013
- expect(Namer.current_index).to eq 2
1014
- end
1015
- end
1016
- end
1017
-
1018
- %w{name_attribute name_property}.each do |name|
1019
- context "Chef::Resource::Property##{name}" do
1020
- with_property ":x, #{name}: true" do
1021
- it "defaults x to resource.name" do
1022
- expect(resource.x).to eq "blah"
1023
- end
1024
- it "does not pick up resource.name if set" do
1025
- expect(resource.x 10).to eq 10
1026
- expect(resource.x).to eq 10
1027
- end
1028
- it "binds to the latest resource.name when run" do
1029
- resource.name "foo"
1030
- expect(resource.x).to eq "foo"
1031
- end
1032
- it "caches resource.name" do
1033
- expect(resource.x).to eq "blah"
1034
- resource.name "foo"
1035
- expect(resource.x).to eq "blah"
1036
- end
1037
- end
1038
-
1039
- with_property ":x, #{name}: false" do
1040
- it "defaults to nil" do
1041
- expect(resource.x).to be_nil
1042
- end
1043
- end
1044
-
1045
- with_property ":x, #{name}: nil" do
1046
- it "defaults to nil" do
1047
- expect(resource.x).to be_nil
1048
- end
1049
- end
1050
-
1051
- context "default ordering deprecation warnings" do
1052
- it "emits an error for property :x, default: 10, #{name}: true" do
1053
- expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error ArgumentError,
1054
- /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1055
- end
1056
- it "emits an error for property :x, default: nil, #{name}: true" do
1057
- expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error ArgumentError,
1058
- /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1059
- end
1060
- it "emits an error for property :x, #{name}: true, default: 10" do
1061
- expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error ArgumentError,
1062
- /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1063
- end
1064
- it "emits an error for property :x, #{name}: true, default: nil" do
1065
- expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error ArgumentError,
1066
- /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1067
- end
1068
- end
1069
- end
1070
- end
1071
-
1072
- it "raises an error if both name_property and name_attribute are specified" do
1073
- expect { resource_class.property :x, name_property: false, name_attribute: 1 }.to raise_error ArgumentError,
1074
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1075
- expect { resource_class.property :x, name_property: false, name_attribute: nil }.to raise_error ArgumentError,
1076
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1077
- expect { resource_class.property :x, name_property: false, name_attribute: false }.to raise_error ArgumentError,
1078
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1079
- expect { resource_class.property :x, name_property: true, name_attribute: true }.to raise_error ArgumentError,
1080
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1081
- end
1082
-
1083
- context "property_type" do
1084
- it "property_types validate their defaults" do
1085
- expect do
1086
- module ::PropertySpecPropertyTypes
1087
- include Chef::Mixin::Properties
1088
- property_type(is: [:a, :b], default: :c)
1089
- end
1090
- end.to raise_error(Chef::Exceptions::ValidationFailed)
1091
- expect do
1092
- module ::PropertySpecPropertyTypes
1093
- include Chef::Mixin::Properties
1094
- property_type(is: [:a, :b], default: :b)
1095
- end
1096
- end.not_to raise_error
1097
- end
1098
-
1099
- context "With property_type ABType (is: [:a, :b]) and CDType (is: [:c, :d])" do
1100
- before :all do
1101
- module ::PropertySpecPropertyTypes
1102
- include Chef::Mixin::Properties
1103
- ABType = property_type(is: [:a, :b])
1104
- CDType = property_type(is: [:c, :d])
1105
- end
1106
- end
1107
-
1108
- with_property ":x, [PropertySpecPropertyTypes::ABType, nil, PropertySpecPropertyTypes::CDType]" do
1109
- it "The property can be set to nil without triggering a warning" do
1110
- expect(resource.x nil).to be_nil
1111
- expect(resource.x).to be_nil
1112
- end
1113
- it "The property can be set to :a" do
1114
- expect(resource.x :a).to eq(:a)
1115
- expect(resource.x).to eq(:a)
1116
- end
1117
- it "The property can be set to :c" do
1118
- expect(resource.x :c).to eq(:c)
1119
- expect(resource.x).to eq(:c)
1120
- end
1121
- it "The property cannot be set to :z" do
1122
- expect { resource.x :z }.to raise_error(Chef::Exceptions::ValidationFailed, /Property x must be one of/)
1123
- end
1124
- end
1125
-
1126
- with_property ":x, [nil, PropertySpecPropertyTypes::ABType, PropertySpecPropertyTypes::CDType]" do
1127
- it "The property can be set to nil without triggering a warning" do
1128
- expect(resource.x nil).to be_nil
1129
- expect(resource.x).to be_nil
1130
- end
1131
- it "The property can be set to :a" do
1132
- expect(resource.x :a).to eq(:a)
1133
- expect(resource.x).to eq(:a)
1134
- end
1135
- it "The property can be set to :c" do
1136
- expect(resource.x :c).to eq(:c)
1137
- expect(resource.x).to eq(:c)
1138
- end
1139
- it "The property cannot be set to :z" do
1140
- expect { resource.x :z }.to raise_error(Chef::Exceptions::ValidationFailed, /Property x must be one of/)
1141
- end
1142
- end
1143
-
1144
- with_property ":x, [PropertySpecPropertyTypes::ABType, nil], default: nil" do
1145
- it "The value defaults to nil" do
1146
- expect(resource.x).to be_nil
1147
- end
1148
- end
1149
-
1150
- with_property ":x, [PropertySpecPropertyTypes::ABType, nil], default: lazy { nil }" do
1151
- it "The value defaults to nil" do
1152
- expect(resource.x).to be_nil
1153
- end
1154
- end
1155
- end
1156
-
1157
- end
1158
-
1159
- context "with aliased properties" do
1160
- with_property ":real, Integer" do
1161
- it "should set the real property and emit a deprecation message" do
1162
- expect(Chef).to receive(:deprecated).with(:property, "we don't like the deprecated property no more")
1163
- resource_class.class_eval { deprecated_property_alias :deprecated, :real, "we don't like the deprecated property no more" }
1164
- resource.deprecated 10
1165
- expect(resource.real).to eq 10
1166
- end
1167
- end
1168
- end
1169
-
1170
- context "redefining Object methods" do
1171
- it "disallows redefining Object methods" do
1172
- expect { resource_class.class_eval { property :hash } }.to raise_error(ArgumentError)
1173
- end
1174
-
1175
- it "disallows redefining Chef::Resource methods" do
1176
- expect { resource_class.class_eval { property :action } }.to raise_error(ArgumentError)
1177
- end
1178
-
1179
- it "allows redefining properties on Chef::Resource" do
1180
- expect { resource_class.class_eval { property :sensitive } }.not_to raise_error
1181
- end
1182
- end
1183
-
1184
- context "with a custom property type" do
1185
- class CustomPropertyType < Chef::Property
1186
- end
1187
-
1188
- with_property ":x, CustomPropertyType.new" do
1189
- it "creates x with the given type" do
1190
- expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1191
- end
1192
-
1193
- context "and a subclass" do
1194
- let(:subresource_class) do
1195
- new_resource_name = self.class.new_resource_name
1196
- Class.new(resource_class) do
1197
- resource_name new_resource_name
1198
- end
1199
- end
1200
- let(:subresource) do
1201
- subresource_class.new("blah")
1202
- end
1203
-
1204
- context "with property :x, default: 10 on the subclass" do
1205
- before do
1206
- subresource_class.class_eval do
1207
- property :x, default: 10
1208
- end
1209
- end
1210
-
1211
- it "x has the given type and default on the subclass" do
1212
- expect(subresource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1213
- expect(subresource_class.properties[:x].default).to eq(10)
1214
- end
1215
-
1216
- it "x does not have the default on the superclass" do
1217
- expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1218
- expect(resource_class.properties[:x].default).to be_nil
1219
- end
1220
- end
1221
- end
1222
- end
1223
-
1224
- with_property ":x, CustomPropertyType.new, default: 10" do
1225
- it "passes the default to the custom property type" do
1226
- expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1227
- expect(resource_class.properties[:x].default).to eq(10)
1228
- end
1229
- end
1230
- end
1231
- end
1
+ require "support/shared/integration/integration_helper"
2
+
3
+ describe "Chef::Resource.property" do
4
+ include IntegrationSupport
5
+
6
+ module Namer
7
+ @i = 0
8
+ def self.next_resource_name
9
+ "chef_resource_property_spec_#{@i += 1}"
10
+ end
11
+
12
+ def self.reset_index
13
+ @current_index = 0
14
+ end
15
+
16
+ def self.current_index
17
+ @current_index
18
+ end
19
+
20
+ def self.next_index
21
+ @current_index += 1
22
+ end
23
+ end
24
+
25
+ def lazy(&block)
26
+ Chef::DelayedEvaluator.new(&block)
27
+ end
28
+
29
+ before do
30
+ Namer.reset_index
31
+ end
32
+
33
+ def self.new_resource_name
34
+ Namer.next_resource_name
35
+ end
36
+
37
+ let(:resource_class) do
38
+ new_resource_name = self.class.new_resource_name
39
+ Class.new(Chef::Resource) do
40
+ resource_name new_resource_name
41
+ def next_index
42
+ Namer.next_index
43
+ end
44
+ end
45
+ end
46
+
47
+ let(:resource) do
48
+ resource_class.new("blah")
49
+ end
50
+
51
+ def self.english_join(values)
52
+ return "<nothing>" if values.size == 0
53
+ return values[0].inspect if values.size == 1
54
+ "#{values[0..-2].map { |v| v.inspect }.join(", ")} and #{values[-1].inspect}"
55
+ end
56
+
57
+ def self.with_property(*properties, &block)
58
+ tags_index = properties.find_index { |p| !p.is_a?(String) }
59
+ if tags_index
60
+ properties, tags = properties[0..tags_index - 1], properties[tags_index..-1]
61
+ else
62
+ tags = []
63
+ end
64
+ if properties.size == 1
65
+ description = "With property #{properties.first}"
66
+ else
67
+ description = "With properties #{english_join(properties.map { |property| (property.inspect).to_s })}"
68
+ end
69
+ context description, *tags do
70
+ before do
71
+ properties.each do |property_str|
72
+ resource_class.class_eval("property #{property_str}", __FILE__, __LINE__)
73
+ end
74
+ end
75
+ instance_eval(&block)
76
+ end
77
+ end
78
+
79
+ # Basic properties
80
+ with_property ":bare_property" do
81
+ it "can be set" do
82
+ expect(resource.bare_property 10).to eq 10
83
+ expect(resource.bare_property).to eq 10
84
+ end
85
+ it "nil does a set" do
86
+ expect(resource.bare_property 10).to eq 10
87
+ expect(resource.bare_property nil).to eq nil
88
+ expect(resource.bare_property).to eq nil
89
+ end
90
+ it "can be updated" do
91
+ expect(resource.bare_property 10).to eq 10
92
+ expect(resource.bare_property 20).to eq 20
93
+ expect(resource.bare_property).to eq 20
94
+ end
95
+ it "can be set with =" do
96
+ expect(resource.bare_property = 10).to eq 10
97
+ expect(resource.bare_property).to eq 10
98
+ end
99
+ it "can be set to nil with =" do
100
+ expect(resource.bare_property 10).to eq 10
101
+ expect(resource.bare_property = nil).to be_nil
102
+ expect(resource.bare_property).to be_nil
103
+ end
104
+ it "can be updated with =" do
105
+ expect(resource.bare_property 10).to eq 10
106
+ expect(resource.bare_property = 20).to eq 20
107
+ expect(resource.bare_property).to eq 20
108
+ end
109
+ end
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
+
121
+ context "deprecated properties" do
122
+ it "does not create a deprecation warning on definition" do
123
+ expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error Chef::Exceptions::DeprecatedFeatureError
124
+ end
125
+
126
+ with_property ":x, deprecated: 'a deprecated property'" do
127
+ it "deprecated properties emit a deprecation warning" do
128
+ expect(Chef).to receive(:deprecated).with(:property, "a deprecated property")
129
+ expect(resource.x 10).to eq 10
130
+ end
131
+ end
132
+ end
133
+
134
+ with_property ":x, name_property: true" do
135
+ context "and subclass" do
136
+ let(:subresource_class) do
137
+ new_resource_name = self.class.new_resource_name
138
+ Class.new(resource_class) do
139
+ resource_name new_resource_name
140
+ end
141
+ end
142
+ let(:subresource) do
143
+ subresource_class.new("blah")
144
+ end
145
+
146
+ context "with property :x on the subclass" do
147
+ before do
148
+ subresource_class.class_eval do
149
+ property :x
150
+ end
151
+ end
152
+
153
+ it "x is still name_property" do
154
+ expect(subresource.x).to eq "blah"
155
+ end
156
+ end
157
+
158
+ context "with property :x, name_attribute: false on the subclass" do
159
+ before do
160
+ subresource_class.class_eval do
161
+ property :x, name_attribute: false
162
+ end
163
+ end
164
+
165
+ it "x is no longer name_property" do
166
+ expect(subresource.x).to be_nil
167
+ end
168
+ end
169
+
170
+ context "with property :x, default: 10 on the subclass" do
171
+ before do
172
+ subresource_class.class_eval do
173
+ property :x, default: 10
174
+ end
175
+ end
176
+
177
+ it "x is no longer name_property" do
178
+ expect(subresource.x).to eq(10)
179
+ end
180
+ end
181
+ end
182
+ end
183
+
184
+ with_property ":x, Integer" do
185
+ context "and subclass" do
186
+ let(:subresource_class) do
187
+ new_resource_name = self.class.new_resource_name
188
+ Class.new(resource_class) do
189
+ resource_name new_resource_name
190
+ end
191
+ end
192
+ let(:subresource) do
193
+ subresource_class.new("blah")
194
+ end
195
+
196
+ it "x is inherited" do
197
+ expect(subresource.x 10).to eq 10
198
+ expect(subresource.x).to eq 10
199
+ expect(subresource.x = 20).to eq 20
200
+ expect(subresource.x).to eq 20
201
+ expect(subresource_class.properties[:x]).not_to be_nil
202
+ end
203
+
204
+ it "x's validation is inherited" do
205
+ expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
206
+ end
207
+
208
+ context "with property :y on the subclass" do
209
+ before do
210
+ subresource_class.class_eval do
211
+ property :y
212
+ end
213
+ end
214
+
215
+ it "x is still there" do
216
+ expect(subresource.x 10).to eq 10
217
+ expect(subresource.x).to eq 10
218
+ expect(subresource.x = 20).to eq 20
219
+ expect(subresource.x).to eq 20
220
+ expect(subresource_class.properties[:x]).not_to be_nil
221
+ end
222
+ it "y is there" do
223
+ expect(subresource.y 10).to eq 10
224
+ expect(subresource.y).to eq 10
225
+ expect(subresource.y = 20).to eq 20
226
+ expect(subresource.y).to eq 20
227
+ expect(subresource_class.properties[:y]).not_to be_nil
228
+ end
229
+ it "y is not on the superclass" do
230
+ expect { resource_class.y 10 }.to raise_error NoMethodError
231
+ expect(resource_class.properties[:y]).to be_nil
232
+ end
233
+ end
234
+
235
+ context "with property :x on the subclass" do
236
+ before do
237
+ subresource_class.class_eval do
238
+ property :x
239
+ end
240
+ end
241
+
242
+ it "x is still there" do
243
+ expect(subresource.x 10).to eq 10
244
+ expect(subresource.x).to eq 10
245
+ expect(subresource.x = 20).to eq 20
246
+ expect(subresource.x).to eq 20
247
+ expect(subresource_class.properties[:x]).not_to be_nil
248
+ expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
249
+ end
250
+
251
+ it "x's validation is inherited" do
252
+ expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
253
+ end
254
+ end
255
+
256
+ context "with property :x, default: 80 on the subclass" do
257
+ before do
258
+ subresource_class.class_eval do
259
+ property :x, default: 80
260
+ end
261
+ end
262
+
263
+ it "x is still there" do
264
+ expect(subresource.x 10).to eq 10
265
+ expect(subresource.x).to eq 10
266
+ expect(subresource.x = 20).to eq 20
267
+ expect(subresource.x).to eq 20
268
+ expect(subresource_class.properties[:x]).not_to be_nil
269
+ expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
270
+ end
271
+
272
+ it "x defaults to 80" do
273
+ expect(subresource.x).to eq 80
274
+ end
275
+
276
+ it "x's validation is inherited" do
277
+ expect { subresource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
278
+ end
279
+ end
280
+
281
+ context "with property :x, String on the subclass" do
282
+ before do
283
+ subresource_class.class_eval do
284
+ property :x, String
285
+ end
286
+ end
287
+
288
+ it "x is still there" do
289
+ expect(subresource.x "10").to eq "10"
290
+ expect(subresource.x).to eq "10"
291
+ expect(subresource.x = "20").to eq "20"
292
+ expect(subresource.x).to eq "20"
293
+ expect(subresource_class.properties[:x]).not_to be_nil
294
+ expect(subresource_class.properties[:x]).not_to eq resource_class.properties[:x]
295
+ end
296
+
297
+ it "x's validation is overwritten" do
298
+ expect { subresource.x 10 }.to raise_error Chef::Exceptions::ValidationFailed
299
+ expect(subresource.x "ohno").to eq "ohno"
300
+ expect(subresource.x).to eq "ohno"
301
+ end
302
+
303
+ it "the superclass's validation for x is still there" do
304
+ expect { resource.x "ohno" }.to raise_error Chef::Exceptions::ValidationFailed
305
+ expect(resource.x 10).to eq 10
306
+ expect(resource.x).to eq 10
307
+ end
308
+ end
309
+ end
310
+ end
311
+
312
+ context "Chef::Resource::Property#reset_property" do
313
+ it "when a resource is newly created, reset_property(:name) sets property to nil" do
314
+ expect(resource.property_is_set?(:name)).to be_truthy
315
+ resource.reset_property(:name)
316
+ expect(resource.property_is_set?(:name)).to be_falsey
317
+ expect { resource.name }.to raise_error Chef::Exceptions::ValidationFailed
318
+ end
319
+
320
+ it "when referencing an undefined property, reset_property(:x) raises an error" do
321
+ expect { resource.reset_property(:x) }.to raise_error(ArgumentError)
322
+ end
323
+
324
+ with_property ":x" do
325
+ it "when the resource is newly created, reset_property(:x) does nothing" do
326
+ expect(resource.property_is_set?(:x)).to be_falsey
327
+ resource.reset_property(:x)
328
+ expect(resource.property_is_set?(:x)).to be_falsey
329
+ expect(resource.x).to be_nil
330
+ end
331
+ it "when x is set, reset_property resets it" do
332
+ resource.x 10
333
+ expect(resource.property_is_set?(:x)).to be_truthy
334
+ resource.reset_property(:x)
335
+ expect(resource.property_is_set?(:x)).to be_falsey
336
+ expect(resource.x).to be_nil
337
+ end
338
+ end
339
+
340
+ with_property ":x, Integer" do
341
+ it "when the resource is newly created, reset_property(:x) does nothing" do
342
+ expect(resource.property_is_set?(:x)).to be_falsey
343
+ resource.reset_property(:x)
344
+ expect(resource.property_is_set?(:x)).to be_falsey
345
+ expect(resource.x).to be_nil
346
+ end
347
+ it "when x is set, reset_property resets it even though `nil` is technically invalid" do
348
+ resource.x 10
349
+ expect(resource.property_is_set?(:x)).to be_truthy
350
+ resource.reset_property(:x)
351
+ expect(resource.property_is_set?(:x)).to be_falsey
352
+ expect(resource.x).to be_nil
353
+ end
354
+ end
355
+
356
+ with_property ":x, default: 10" do
357
+ it "when the resource is newly created, reset_property(:x) does nothing" do
358
+ expect(resource.property_is_set?(:x)).to be_falsey
359
+ resource.reset_property(:x)
360
+ expect(resource.property_is_set?(:x)).to be_falsey
361
+ expect(resource.x).to eq 10
362
+ end
363
+ it "when x is set, reset_property resets it and it returns the default" do
364
+ resource.x 20
365
+ resource.reset_property(:x)
366
+ expect(resource.property_is_set?(:x)).to be_falsey
367
+ expect(resource.x).to eq 10
368
+ end
369
+ end
370
+
371
+ with_property ":x, default: lazy { 10 }" do
372
+ it "when the resource is newly created, reset_property(:x) does nothing" do
373
+ expect(resource.property_is_set?(:x)).to be_falsey
374
+ resource.reset_property(:x)
375
+ expect(resource.property_is_set?(:x)).to be_falsey
376
+ expect(resource.x).to eq 10
377
+ end
378
+ it "when x is set, reset_property resets it and it returns the default" do
379
+ resource.x 20
380
+ resource.reset_property(:x)
381
+ expect(resource.property_is_set?(:x)).to be_falsey
382
+ expect(resource.x).to eq 10
383
+ end
384
+ end
385
+ end
386
+
387
+ context "Chef::Resource::Property#property_is_set?" do
388
+ it "when a resource is newly created, property_is_set?(:name) is true" do
389
+ expect(resource.property_is_set?(:name)).to be_truthy
390
+ end
391
+
392
+ it "when referencing an undefined property, property_is_set?(:x) raises an error" do
393
+ expect { resource.property_is_set?(:x) }.to raise_error(ArgumentError)
394
+ end
395
+
396
+ with_property ":x" do
397
+ it "when the resource is newly created, property_is_set?(:x) is false" do
398
+ expect(resource.property_is_set?(:x)).to be_falsey
399
+ end
400
+ it "when x is set, property_is_set?(:x) is true" do
401
+ resource.x 10
402
+ expect(resource.property_is_set?(:x)).to be_truthy
403
+ end
404
+ it "when x is set with =, property_is_set?(:x) is true" do
405
+ resource.x = 10
406
+ expect(resource.property_is_set?(:x)).to be_truthy
407
+ end
408
+ it "when x is set to a lazy value, property_is_set?(:x) is true" do
409
+ resource.x lazy { 10 }
410
+ expect(resource.property_is_set?(:x)).to be_truthy
411
+ end
412
+ it "when x is retrieved, property_is_set?(:x) is false" do
413
+ resource.x
414
+ expect(resource.property_is_set?(:x)).to be_falsey
415
+ end
416
+ end
417
+
418
+ with_property ":x, default: 10" do
419
+ it "when the resource is newly created, property_is_set?(:x) is false" do
420
+ expect(resource.property_is_set?(:x)).to be_falsey
421
+ end
422
+ it "when x is set, property_is_set?(:x) is true" do
423
+ resource.x 10
424
+ expect(resource.property_is_set?(:x)).to be_truthy
425
+ end
426
+ it "when x is set with =, property_is_set?(:x) is true" do
427
+ resource.x = 10
428
+ expect(resource.property_is_set?(:x)).to be_truthy
429
+ end
430
+ it "when x is set to a lazy value, property_is_set?(:x) is true" do
431
+ resource.x lazy { 10 }
432
+ expect(resource.property_is_set?(:x)).to be_truthy
433
+ end
434
+ it "when x is retrieved, property_is_set?(:x) is false" do
435
+ resource.x
436
+ expect(resource.property_is_set?(:x)).to be_falsey
437
+ end
438
+ end
439
+
440
+ with_property ":x, default: nil" do
441
+ it "when the resource is newly created, property_is_set?(:x) is false" do
442
+ expect(resource.property_is_set?(:x)).to be_falsey
443
+ end
444
+ it "when x is set, property_is_set?(:x) is true" do
445
+ resource.x 10
446
+ expect(resource.property_is_set?(:x)).to be_truthy
447
+ end
448
+ it "when x is set with =, property_is_set?(:x) is true" do
449
+ resource.x = 10
450
+ expect(resource.property_is_set?(:x)).to be_truthy
451
+ end
452
+ it "when x is set to a lazy value, property_is_set?(:x) is true" do
453
+ resource.x lazy { 10 }
454
+ expect(resource.property_is_set?(:x)).to be_truthy
455
+ end
456
+ it "when x is retrieved, property_is_set?(:x) is false" do
457
+ resource.x
458
+ expect(resource.property_is_set?(:x)).to be_falsey
459
+ end
460
+ end
461
+
462
+ with_property ":x, default: lazy { 10 }" do
463
+ it "when the resource is newly created, property_is_set?(:x) is false" do
464
+ expect(resource.property_is_set?(:x)).to be_falsey
465
+ end
466
+ it "when x is set, property_is_set?(:x) is true" do
467
+ resource.x 10
468
+ expect(resource.property_is_set?(:x)).to be_truthy
469
+ end
470
+ it "when x is set with =, property_is_set?(:x) is true" do
471
+ resource.x = 10
472
+ expect(resource.property_is_set?(:x)).to be_truthy
473
+ end
474
+ it "when x is retrieved, property_is_set?(:x) is false" do
475
+ resource.x
476
+ expect(resource.property_is_set?(:x)).to be_falsey
477
+ end
478
+ end
479
+ end
480
+
481
+ context "Chef::Resource::Property#default" do
482
+ with_property ":x, default: 10" do
483
+ it "when x is set, it returns its value" do
484
+ expect(resource.x 20).to eq 20
485
+ expect(resource.property_is_set?(:x)).to be_truthy
486
+ expect(resource.x).to eq 20
487
+ end
488
+ it "when x is not set, it returns 10" do
489
+ expect(resource.x).to eq 10
490
+ end
491
+ it "when x is not set, it is not included in state" do
492
+ expect(resource.state_for_resource_reporter).to eq({})
493
+ end
494
+ it "when x is set to nil, it returns nil" do
495
+ resource.instance_eval { @x = nil }
496
+ expect(resource.x).to be_nil
497
+ end
498
+
499
+ context "With a subclass" do
500
+ let(:subresource_class) do
501
+ new_resource_name = self.class.new_resource_name
502
+ Class.new(resource_class) do
503
+ resource_name new_resource_name
504
+ end
505
+ end
506
+ let(:subresource) { subresource_class.new("blah") }
507
+ it "The default is inherited" do
508
+ expect(subresource.x).to eq 10
509
+ end
510
+ end
511
+ end
512
+
513
+ with_property ":x, default: 10, identity: true" do
514
+ it "when x is not set, it is included in identity" do
515
+ expect(resource.identity).to eq(10)
516
+ end
517
+ end
518
+
519
+ with_property ":x, default: 1, identity: true", ":y, default: 2, identity: true" do
520
+ it "when x is not set, it is still included in identity" do
521
+ resource.y 20
522
+ expect(resource.identity).to eq(x: 1, y: 20)
523
+ end
524
+ end
525
+
526
+ with_property ":x, default: nil" do
527
+ it "when x is not set, it returns nil" do
528
+ expect(resource.x).to be_nil
529
+ end
530
+ end
531
+
532
+ with_property ":x" do
533
+ it "when x is not set, it returns nil" do
534
+ expect(resource.x).to be_nil
535
+ end
536
+ end
537
+
538
+ context "string default" do
539
+ with_property ":x, default: ''" do
540
+ it "when x is not set, it returns ''" do
541
+ expect(resource.x).to eq ""
542
+ end
543
+ it "x is immutable" do
544
+ expect { resource.x << "foo" }.to raise_error(RuntimeError, "can't modify frozen String")
545
+ end
546
+ end
547
+
548
+ with_property ":x, default: lazy { '' }" do
549
+ it "x is immutable" do
550
+ expect(resource.x).to eq ""
551
+ resource.x << "foo"
552
+ expect(resource.x).to eq "foo"
553
+ expect(resource_class.new("other").x).to eq ""
554
+ end
555
+ end
556
+ end
557
+
558
+ context "hash default" do
559
+ with_property ":x, default: {}" do
560
+ it "when x is not set, it returns {}" do
561
+ expect(resource.x).to eq({})
562
+ end
563
+ it "x is immutable" do
564
+ expect { resource.x["foo"] = "bar" }.to raise_error(RuntimeError, "can't modify frozen Hash")
565
+ end
566
+ it "The same exact value is returned multiple times in a row" do
567
+ value = resource.x
568
+ expect(value).to eq({})
569
+ expect(resource.x.object_id).to eq(value.object_id)
570
+ end
571
+ it "Multiple instances of x receive the exact same value" do
572
+ expect(resource.x.object_id).to eq(resource_class.new("blah2").x.object_id)
573
+ end
574
+ end
575
+
576
+ with_property ":x, default: lazy { {} }" do
577
+ it "when x is not set, it returns {}" do
578
+ expect(resource.x).to eq({})
579
+ end
580
+ it "The value is the same each time it is called" do
581
+ value = resource.x
582
+ expect(value).to eq({})
583
+ expect(resource.x.object_id).to eq(value.object_id)
584
+ end
585
+ it "Multiple instances of x receive different values" do
586
+ expect(resource.x.object_id).not_to eq(resource_class.new("blah2").x.object_id)
587
+ end
588
+ end
589
+ end
590
+
591
+ context "complex, nested default" do
592
+ with_property ":x, default: [{foo: 'bar'}]" do
593
+ it "when x is not set, it returns [{foo: 'bar'}]" do
594
+ expect(resource.x).to eq([{ foo: "bar" }])
595
+ end
596
+ it "x is immutable" do
597
+ expect { resource.x << :other }.to raise_error(RuntimeError, "can't modify frozen Array")
598
+ end
599
+ it "x.first is immutable" do
600
+ expect { resource.x.first[:foo] = "other" }.to raise_error(RuntimeError, "can't modify frozen Hash")
601
+ end
602
+ it "x.first[:foo] is immutable" do
603
+ expect { resource.x.first[:foo] << "other" }.to raise_error(RuntimeError, "can't modify frozen String")
604
+ end
605
+ end
606
+ end
607
+
608
+ context "with a class with 'blah' as both class and instance methods" do
609
+ before do
610
+ resource_class.class_eval do
611
+ def self.blah
612
+ "class"
613
+ end
614
+
615
+ def blah
616
+ "#{name}#{next_index}"
617
+ end
618
+ end
619
+ end
620
+
621
+ with_property ":x, default: lazy { blah }" do
622
+ it "x is run in context of the instance" do
623
+ expect(resource.x).to eq "blah1"
624
+ end
625
+ it "x is run in the context of each instance it is run in" do
626
+ expect(resource.x).to eq "blah1"
627
+ expect(resource_class.new("another").x).to eq "another2"
628
+ end
629
+ end
630
+
631
+ with_property ':x, default: lazy { |x| "#{blah}#{x.blah}" }' do
632
+ it "x is run in context of the class (where it was defined) and passed the instance" do
633
+ expect(resource.x).to eq "classblah1"
634
+ end
635
+ it "x is passed the value of each instance it is run in" do
636
+ expect(resource.x).to eq "classblah1"
637
+ expect(resource_class.new("another").x).to eq "classanother2"
638
+ end
639
+ end
640
+ end
641
+
642
+ context "validation of defaults" do
643
+ it "When a class is declared with property :x, String, default: 10, it immediately fails validation" do
644
+ expect { resource_class.class_eval { property :x, String, default: 10 } }.to raise_error Chef::Exceptions::ValidationFailed
645
+ end
646
+
647
+ with_property ":x, String, default: lazy { Namer.next_index }" do
648
+ it "when the resource is created, no error is raised" do
649
+ resource
650
+ end
651
+ it "when x is set, no error is raised" do
652
+ expect(resource.x "hi").to eq "hi"
653
+ expect(resource.x).to eq "hi"
654
+ end
655
+ it "when x is retrieved, it fails validation" do
656
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
657
+ expect(Namer.current_index).to eq 1
658
+ end
659
+ end
660
+
661
+ with_property ":x, default: lazy { Namer.next_index.to_s }, is: proc { |v| Namer.next_index; true }" do
662
+ it "coercion and validation is only run the first time" do
663
+ expect(resource.x).to eq "1"
664
+ expect(Namer.current_index).to eq 2
665
+ expect(resource.x).to eq "1"
666
+ expect(Namer.current_index).to eq 2
667
+ end
668
+ end
669
+
670
+ with_property ":x, default: lazy { Namer.next_index.to_s.freeze }, is: proc { |v| Namer.next_index; true }" do
671
+ it "coercion and validation is run each time" do
672
+ expect(resource.x).to eq "1"
673
+ expect(Namer.current_index).to eq 2
674
+ expect(resource.x).to eq "3"
675
+ expect(Namer.current_index).to eq 4
676
+ end
677
+ end
678
+ end
679
+
680
+ context "coercion of defaults" do
681
+ # Frozen default, non-frozen coerce
682
+ with_property ':x, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
683
+ it "when the resource is created, the proc is not yet run" do
684
+ resource
685
+ expect(Namer.current_index).to eq 0
686
+ end
687
+ it "when x is set, coercion is run" do
688
+ expect(resource.x "hi").to eq "hi1"
689
+ expect(resource.x).to eq "hi1"
690
+ expect(Namer.current_index).to eq 1
691
+ end
692
+ it "when x is retrieved, coercion is run exactly once" do
693
+ expect(resource.x).to eq "101"
694
+ expect(resource.x).to eq "101"
695
+ expect(Namer.current_index).to eq 1
696
+ end
697
+ end
698
+
699
+ # Frozen default, frozen coerce
700
+ with_property ':x, coerce: proc { |v| "#{v}#{next_index}".freeze }, default: 10' do
701
+ it "when the resource is created, the proc is not yet run" do
702
+ resource
703
+ expect(Namer.current_index).to eq 0
704
+ end
705
+ it "when x is set, coercion is run" do
706
+ expect(resource.x "hi").to eq "hi1"
707
+ expect(resource.x).to eq "hi1"
708
+ expect(Namer.current_index).to eq 1
709
+ end
710
+ it "when x is retrieved, coercion is run each time" do
711
+ expect(resource.x).to eq "101"
712
+ expect(resource.x).to eq "102"
713
+ expect(Namer.current_index).to eq 2
714
+ end
715
+ end
716
+
717
+ # Frozen lazy default, non-frozen coerce
718
+ with_property ':x, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
719
+ it "when the resource is created, the proc is not yet run" do
720
+ resource
721
+ expect(Namer.current_index).to eq 0
722
+ end
723
+ it "when x is set, coercion is run" do
724
+ expect(resource.x "hi").to eq "hi1"
725
+ expect(resource.x).to eq "hi1"
726
+ expect(Namer.current_index).to eq 1
727
+ end
728
+ it "when x is retrieved, coercion is run exactly once" do
729
+ expect(resource.x).to eq "101"
730
+ expect(resource.x).to eq "101"
731
+ expect(Namer.current_index).to eq 1
732
+ end
733
+ end
734
+
735
+ # Non-frozen lazy default, frozen coerce
736
+ with_property ':x, coerce: proc { |v| "#{v}#{next_index}".freeze }, default: lazy { "10" }' do
737
+ it "when the resource is created, the proc is not yet run" do
738
+ resource
739
+ expect(Namer.current_index).to eq 0
740
+ end
741
+ it "when x is set, coercion is run" do
742
+ expect(resource.x "hi").to eq "hi1"
743
+ expect(resource.x).to eq "hi1"
744
+ expect(Namer.current_index).to eq 1
745
+ end
746
+ it "when x is retrieved, coercion is run each time" do
747
+ expect(resource.x).to eq "101"
748
+ expect(resource.x).to eq "102"
749
+ expect(Namer.current_index).to eq 2
750
+ end
751
+ end
752
+
753
+ with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
754
+ it "coercion and validation is only run the first time x is retrieved" do
755
+ expect(Namer.current_index).to eq 0
756
+ expect(resource.x).to eq "101"
757
+ expect(Namer.current_index).to eq 2
758
+ expect(resource.x).to eq "101"
759
+ expect(Namer.current_index).to eq 2
760
+ end
761
+ end
762
+
763
+ context "validation and coercion of defaults" do
764
+ with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
765
+ it "when x is retrieved, it is coerced before validating and passes" do
766
+ expect(resource.x).to eq "101"
767
+ end
768
+ end
769
+ with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: 10' do
770
+ it "when x is retrieved, it is coerced and fails validation" do
771
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
772
+ end
773
+ end
774
+ with_property ':x, String, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
775
+ it "when x is retrieved, it is coerced before validating and passes" do
776
+ expect(resource.x).to eq "101"
777
+ end
778
+ end
779
+ with_property ':x, Integer, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
780
+ it "when x is retrieved, it is coerced and fails validation" do
781
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
782
+ end
783
+ end
784
+ with_property ':x, proc { |v| Namer.next_index; true }, coerce: proc { |v| "#{v}#{next_index}" }, default: lazy { 10 }' do
785
+ it "coercion is only run the first time x is retrieved, and validation is run" do
786
+ expect(Namer.current_index).to eq 0
787
+ expect(resource.x).to eq "101"
788
+ expect(Namer.current_index).to eq 2
789
+ expect(resource.x).to eq "101"
790
+ expect(Namer.current_index).to eq 2
791
+ end
792
+ end
793
+ end
794
+ end
795
+ end
796
+
797
+ context "Chef::Resource#lazy" do
798
+ with_property ":x" do
799
+ it "setting x to a lazy value does not run it immediately" do
800
+ resource.x lazy { Namer.next_index }
801
+ expect(Namer.current_index).to eq 0
802
+ end
803
+ it "you can set x to a lazy value in the instance" do
804
+ resource.instance_eval do
805
+ x lazy { Namer.next_index }
806
+ end
807
+ expect(resource.x).to eq 1
808
+ expect(Namer.current_index).to eq 1
809
+ end
810
+ it "retrieving a lazy value pops it open" do
811
+ resource.x lazy { Namer.next_index }
812
+ expect(resource.x).to eq 1
813
+ expect(Namer.current_index).to eq 1
814
+ end
815
+ it "retrieving a lazy value twice evaluates it twice" do
816
+ resource.x lazy { Namer.next_index }
817
+ expect(resource.x).to eq 1
818
+ expect(resource.x).to eq 2
819
+ expect(Namer.current_index).to eq 2
820
+ end
821
+ it "setting the same lazy value on two different instances runs it on each instancee" do
822
+ resource2 = resource_class.new("blah2")
823
+ l = lazy { Namer.next_index }
824
+ resource.x l
825
+ resource2.x l
826
+ expect(resource2.x).to eq 1
827
+ expect(resource.x).to eq 2
828
+ expect(resource2.x).to eq 3
829
+ end
830
+
831
+ context "when the class has a class and instance method named blah" do
832
+ before do
833
+ resource_class.class_eval do
834
+ def self.blah
835
+ "class"
836
+ end
837
+
838
+ def blah
839
+ "#{name}#{Namer.next_index}"
840
+ end
841
+ end
842
+ end
843
+ def blah
844
+ "example"
845
+ end
846
+ # it "retrieving lazy { blah } gets the instance variable" do
847
+ # resource.x lazy { blah }
848
+ # expect(resource.x).to eq "blah1"
849
+ # end
850
+ # it "retrieving lazy { blah } from two different instances gets two different instance variables" do
851
+ # resource2 = resource_class.new("another")
852
+ # l = lazy { blah }
853
+ # resource2.x l
854
+ # resource.x l
855
+ # expect(resource2.x).to eq "another1"
856
+ # expect(resource.x).to eq "blah2"
857
+ # expect(resource2.x).to eq "another3"
858
+ # end
859
+ it 'retrieving lazy { |x| "#{blah}#{x.blah}" } gets the example and instance variables' do
860
+ resource.x lazy { |x| "#{blah}#{x.blah}" }
861
+ expect(resource.x).to eq "exampleblah1"
862
+ end
863
+ it 'retrieving lazy { |x| "#{blah}#{x.blah}" } from two different instances gets two different instance variables' do
864
+ resource2 = resource_class.new("another")
865
+ l = lazy { |x| "#{blah}#{x.blah}" }
866
+ resource2.x l
867
+ resource.x l
868
+ expect(resource2.x).to eq "exampleanother1"
869
+ expect(resource.x).to eq "exampleblah2"
870
+ expect(resource2.x).to eq "exampleanother3"
871
+ end
872
+ end
873
+ end
874
+
875
+ with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
876
+ it "lazy values are not coerced on set" do
877
+ resource.x lazy { Namer.next_index }
878
+ expect(Namer.current_index).to eq 0
879
+ end
880
+ it "lazy values are coerced on get" do
881
+ resource.x lazy { Namer.next_index }
882
+ expect(resource.x).to eq "12"
883
+ expect(Namer.current_index).to eq 2
884
+ end
885
+ it "lazy values are coerced on each access" do
886
+ resource.x lazy { Namer.next_index }
887
+ expect(resource.x).to eq "12"
888
+ expect(Namer.current_index).to eq 2
889
+ expect(resource.x).to eq "34"
890
+ expect(Namer.current_index).to eq 4
891
+ end
892
+ end
893
+
894
+ with_property ":x, String" do
895
+ it "lazy values are not validated on set" do
896
+ resource.x lazy { Namer.next_index }
897
+ expect(Namer.current_index).to eq 0
898
+ end
899
+ it "lazy values are validated on get" do
900
+ resource.x lazy { Namer.next_index }
901
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
902
+ expect(Namer.current_index).to eq 1
903
+ end
904
+ end
905
+
906
+ with_property ":x, is: proc { |v| Namer.next_index; true }" do
907
+ it "lazy values are validated on each access" do
908
+ resource.x lazy { Namer.next_index }
909
+ expect(resource.x).to eq 1
910
+ expect(Namer.current_index).to eq 2
911
+ expect(resource.x).to eq 3
912
+ expect(Namer.current_index).to eq 4
913
+ end
914
+ end
915
+
916
+ with_property ':x, Integer, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
917
+ it "lazy values are not validated or coerced on set" do
918
+ resource.x lazy { Namer.next_index }
919
+ expect(Namer.current_index).to eq 0
920
+ end
921
+ it "lazy values are coerced before being validated, which fails" do
922
+ resource.x lazy { Namer.next_index }
923
+ expect(Namer.current_index).to eq 0
924
+ expect { resource.x }.to raise_error Chef::Exceptions::ValidationFailed
925
+ expect(Namer.current_index).to eq 2
926
+ end
927
+ end
928
+
929
+ with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }, is: proc { |v| Namer.next_index; true }' do
930
+ it "lazy values are coerced and validated exactly once" do
931
+ resource.x lazy { Namer.next_index }
932
+ expect(resource.x).to eq "12"
933
+ expect(Namer.current_index).to eq 3
934
+ expect(resource.x).to eq "45"
935
+ expect(Namer.current_index).to eq 6
936
+ end
937
+ end
938
+
939
+ with_property ':x, String, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
940
+ it "lazy values are coerced before being validated, which succeeds" do
941
+ resource.x lazy { Namer.next_index }
942
+ expect(resource.x).to eq "12"
943
+ expect(Namer.current_index).to eq 2
944
+ end
945
+ end
946
+ end
947
+
948
+ context "Chef::Resource::Property#coerce" do
949
+ with_property ':x, coerce: proc { |v| "#{v}#{Namer.next_index}" }' do
950
+ it "coercion runs on set" do
951
+ expect(resource.x 10).to eq "101"
952
+ expect(Namer.current_index).to eq 1
953
+ end
954
+ it "does not emit a deprecation warning if set to nil" do
955
+ # nil is never coerced
956
+ expect(resource.x nil).to be_nil
957
+ end
958
+ it "coercion sets the value (and coercion does not run on get)" do
959
+ expect(resource.x 10).to eq "101"
960
+ expect(resource.x).to eq "101"
961
+ expect(Namer.current_index).to eq 1
962
+ end
963
+ it "coercion runs each time set happens" do
964
+ expect(resource.x 10).to eq "101"
965
+ expect(Namer.current_index).to eq 1
966
+ expect(resource.x 10).to eq "102"
967
+ expect(Namer.current_index).to eq 2
968
+ end
969
+ end
970
+ with_property ":x, coerce: proc { |x| x }" do
971
+ it "does not emit a deprecation warning if set to nil" do
972
+ expect(resource.x nil).to be_nil
973
+ end
974
+ end
975
+ with_property ':x, coerce: proc { |x| Namer.next_index; raise "hi" if x == 10; x }, is: proc { |x| Namer.next_index; x != 10 }' do
976
+ it "failed coercion fails to set the value" do
977
+ resource.x 20
978
+ expect(resource.x).to eq 20
979
+ expect(Namer.current_index).to eq 2
980
+ expect { resource.x 10 }.to raise_error "hi"
981
+ expect(resource.x).to eq 20
982
+ expect(Namer.current_index).to eq 3
983
+ end
984
+ it "validation does not run if coercion fails" do
985
+ expect { resource.x 10 }.to raise_error "hi"
986
+ expect(Namer.current_index).to eq 1
987
+ end
988
+ end
989
+ end
990
+
991
+ context "Chef::Resource::Property validation" do
992
+ with_property ":x, is: proc { |v| Namer.next_index; v.is_a?(Integer) }" do
993
+ it "validation runs on set" do
994
+ expect(resource.x 10).to eq 10
995
+ expect(Namer.current_index).to eq 1
996
+ end
997
+ it "validation sets the value (and validation does not run on get)" do
998
+ expect(resource.x 10).to eq 10
999
+ expect(resource.x).to eq 10
1000
+ expect(Namer.current_index).to eq 1
1001
+ end
1002
+ it "validation runs each time set happens" do
1003
+ expect(resource.x 10).to eq 10
1004
+ expect(Namer.current_index).to eq 1
1005
+ expect(resource.x 10).to eq 10
1006
+ expect(Namer.current_index).to eq 2
1007
+ end
1008
+ it "failed validation fails to set the value" do
1009
+ expect(resource.x 10).to eq 10
1010
+ expect(Namer.current_index).to eq 1
1011
+ expect { resource.x "blah" }.to raise_error Chef::Exceptions::ValidationFailed
1012
+ expect(resource.x).to eq 10
1013
+ expect(Namer.current_index).to eq 2
1014
+ end
1015
+ end
1016
+ end
1017
+
1018
+ %w{name_attribute name_property}.each do |name|
1019
+ context "Chef::Resource::Property##{name}" do
1020
+ with_property ":x, #{name}: true" do
1021
+ it "defaults x to resource.name" do
1022
+ expect(resource.x).to eq "blah"
1023
+ end
1024
+ it "does not pick up resource.name if set" do
1025
+ expect(resource.x 10).to eq 10
1026
+ expect(resource.x).to eq 10
1027
+ end
1028
+ it "binds to the latest resource.name when run" do
1029
+ resource.name "foo"
1030
+ expect(resource.x).to eq "foo"
1031
+ end
1032
+ it "caches resource.name" do
1033
+ expect(resource.x).to eq "blah"
1034
+ resource.name "foo"
1035
+ expect(resource.x).to eq "blah"
1036
+ end
1037
+ end
1038
+
1039
+ with_property ":x, #{name}: false" do
1040
+ it "defaults to nil" do
1041
+ expect(resource.x).to be_nil
1042
+ end
1043
+ end
1044
+
1045
+ with_property ":x, #{name}: nil" do
1046
+ it "defaults to nil" do
1047
+ expect(resource.x).to be_nil
1048
+ end
1049
+ end
1050
+
1051
+ context "default ordering deprecation warnings" do
1052
+ it "emits an error for property :x, default: 10, #{name}: true" do
1053
+ expect { resource_class.property :x, :default => 10, name.to_sym => true }.to raise_error ArgumentError,
1054
+ /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1055
+ end
1056
+ it "emits an error for property :x, default: nil, #{name}: true" do
1057
+ expect { resource_class.property :x, :default => nil, name.to_sym => true }.to raise_error ArgumentError,
1058
+ /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1059
+ end
1060
+ it "emits an error for property :x, #{name}: true, default: 10" do
1061
+ expect { resource_class.property :x, name.to_sym => true, :default => 10 }.to raise_error ArgumentError,
1062
+ /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1063
+ end
1064
+ it "emits an error for property :x, #{name}: true, default: nil" do
1065
+ expect { resource_class.property :x, name.to_sym => true, :default => nil }.to raise_error ArgumentError,
1066
+ /A property cannot be both a name_property\/name_attribute and have a default value. Use one or the other on property x of resource chef_resource_property_spec_(\d+)/
1067
+ end
1068
+ end
1069
+ end
1070
+ end
1071
+
1072
+ it "raises an error if both name_property and name_attribute are specified" do
1073
+ expect { resource_class.property :x, name_property: false, name_attribute: 1 }.to raise_error ArgumentError,
1074
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1075
+ expect { resource_class.property :x, name_property: false, name_attribute: nil }.to raise_error ArgumentError,
1076
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1077
+ expect { resource_class.property :x, name_property: false, name_attribute: false }.to raise_error ArgumentError,
1078
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1079
+ expect { resource_class.property :x, name_property: true, name_attribute: true }.to raise_error ArgumentError,
1080
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1081
+ end
1082
+
1083
+ context "property_type" do
1084
+ it "property_types validate their defaults" do
1085
+ expect do
1086
+ module ::PropertySpecPropertyTypes
1087
+ include Chef::Mixin::Properties
1088
+ property_type(is: [:a, :b], default: :c)
1089
+ end
1090
+ end.to raise_error(Chef::Exceptions::ValidationFailed)
1091
+ expect do
1092
+ module ::PropertySpecPropertyTypes
1093
+ include Chef::Mixin::Properties
1094
+ property_type(is: [:a, :b], default: :b)
1095
+ end
1096
+ end.not_to raise_error
1097
+ end
1098
+
1099
+ context "With property_type ABType (is: [:a, :b]) and CDType (is: [:c, :d])" do
1100
+ before :all do
1101
+ module ::PropertySpecPropertyTypes
1102
+ include Chef::Mixin::Properties
1103
+ ABType = property_type(is: [:a, :b])
1104
+ CDType = property_type(is: [:c, :d])
1105
+ end
1106
+ end
1107
+
1108
+ with_property ":x, [PropertySpecPropertyTypes::ABType, nil, PropertySpecPropertyTypes::CDType]" do
1109
+ it "The property can be set to nil without triggering a warning" do
1110
+ expect(resource.x nil).to be_nil
1111
+ expect(resource.x).to be_nil
1112
+ end
1113
+ it "The property can be set to :a" do
1114
+ expect(resource.x :a).to eq(:a)
1115
+ expect(resource.x).to eq(:a)
1116
+ end
1117
+ it "The property can be set to :c" do
1118
+ expect(resource.x :c).to eq(:c)
1119
+ expect(resource.x).to eq(:c)
1120
+ end
1121
+ it "The property cannot be set to :z" do
1122
+ expect { resource.x :z }.to raise_error(Chef::Exceptions::ValidationFailed, /Property x must be one of/)
1123
+ end
1124
+ end
1125
+
1126
+ with_property ":x, [nil, PropertySpecPropertyTypes::ABType, PropertySpecPropertyTypes::CDType]" do
1127
+ it "The property can be set to nil without triggering a warning" do
1128
+ expect(resource.x nil).to be_nil
1129
+ expect(resource.x).to be_nil
1130
+ end
1131
+ it "The property can be set to :a" do
1132
+ expect(resource.x :a).to eq(:a)
1133
+ expect(resource.x).to eq(:a)
1134
+ end
1135
+ it "The property can be set to :c" do
1136
+ expect(resource.x :c).to eq(:c)
1137
+ expect(resource.x).to eq(:c)
1138
+ end
1139
+ it "The property cannot be set to :z" do
1140
+ expect { resource.x :z }.to raise_error(Chef::Exceptions::ValidationFailed, /Property x must be one of/)
1141
+ end
1142
+ end
1143
+
1144
+ with_property ":x, [PropertySpecPropertyTypes::ABType, nil], default: nil" do
1145
+ it "The value defaults to nil" do
1146
+ expect(resource.x).to be_nil
1147
+ end
1148
+ end
1149
+
1150
+ with_property ":x, [PropertySpecPropertyTypes::ABType, nil], default: lazy { nil }" do
1151
+ it "The value defaults to nil" do
1152
+ expect(resource.x).to be_nil
1153
+ end
1154
+ end
1155
+ end
1156
+
1157
+ end
1158
+
1159
+ context "with aliased properties" do
1160
+ with_property ":real, Integer" do
1161
+ it "should set the real property and emit a deprecation message" do
1162
+ expect(Chef).to receive(:deprecated).with(:property, "we don't like the deprecated property no more")
1163
+ resource_class.class_eval { deprecated_property_alias :deprecated, :real, "we don't like the deprecated property no more" }
1164
+ resource.deprecated 10
1165
+ expect(resource.real).to eq 10
1166
+ end
1167
+ end
1168
+ end
1169
+
1170
+ context "redefining Object methods" do
1171
+ it "disallows redefining Object methods" do
1172
+ expect { resource_class.class_eval { property :hash } }.to raise_error(ArgumentError)
1173
+ end
1174
+
1175
+ it "disallows redefining Chef::Resource methods" do
1176
+ expect { resource_class.class_eval { property :action } }.to raise_error(ArgumentError)
1177
+ end
1178
+
1179
+ it "allows redefining properties on Chef::Resource" do
1180
+ expect { resource_class.class_eval { property :sensitive } }.not_to raise_error
1181
+ end
1182
+ end
1183
+
1184
+ context "with a custom property type" do
1185
+ class CustomPropertyType < Chef::Property
1186
+ end
1187
+
1188
+ with_property ":x, CustomPropertyType.new" do
1189
+ it "creates x with the given type" do
1190
+ expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1191
+ end
1192
+
1193
+ context "and a subclass" do
1194
+ let(:subresource_class) do
1195
+ new_resource_name = self.class.new_resource_name
1196
+ Class.new(resource_class) do
1197
+ resource_name new_resource_name
1198
+ end
1199
+ end
1200
+ let(:subresource) do
1201
+ subresource_class.new("blah")
1202
+ end
1203
+
1204
+ context "with property :x, default: 10 on the subclass" do
1205
+ before do
1206
+ subresource_class.class_eval do
1207
+ property :x, default: 10
1208
+ end
1209
+ end
1210
+
1211
+ it "x has the given type and default on the subclass" do
1212
+ expect(subresource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1213
+ expect(subresource_class.properties[:x].default).to eq(10)
1214
+ end
1215
+
1216
+ it "x does not have the default on the superclass" do
1217
+ expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1218
+ expect(resource_class.properties[:x].default).to be_nil
1219
+ end
1220
+ end
1221
+ end
1222
+ end
1223
+
1224
+ with_property ":x, CustomPropertyType.new, default: 10" do
1225
+ it "passes the default to the custom property type" do
1226
+ expect(resource_class.properties[:x]).to be_kind_of(CustomPropertyType)
1227
+ expect(resource_class.properties[:x].default).to eq(10)
1228
+ end
1229
+ end
1230
+ end
1231
+ end