chef 14.15.6 → 15.0.293

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 (2119) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +26 -5
  3. data/LICENSE +0 -0
  4. data/README.md +11 -198
  5. data/Rakefile +13 -8
  6. data/chef-universal-mingw32.gemspec +2 -4
  7. data/chef.gemspec +12 -14
  8. data/lib/chef.rb +15 -14
  9. data/lib/chef/action_collection.rb +252 -0
  10. data/lib/chef/api_client.rb +7 -7
  11. data/lib/chef/api_client/registration.rb +3 -3
  12. data/lib/chef/api_client_v1.rb +10 -10
  13. data/lib/chef/application.rb +22 -11
  14. data/lib/chef/application/apply.rb +24 -27
  15. data/lib/chef/application/client.rb +76 -89
  16. data/lib/chef/application/exit_code.rb +7 -14
  17. data/lib/chef/application/knife.rb +27 -26
  18. data/lib/chef/application/solo.rb +47 -53
  19. data/lib/chef/application/windows_service.rb +27 -26
  20. data/lib/chef/application/windows_service_manager.rb +9 -8
  21. data/lib/chef/applications.rb +4 -4
  22. data/lib/chef/blacklist.rb +1 -1
  23. data/lib/chef/chef_class.rb +7 -7
  24. data/lib/chef/chef_fs.rb +1 -1
  25. data/lib/chef/chef_fs/chef_fs_data_store.rb +5 -5
  26. data/lib/chef/chef_fs/command_line.rb +3 -3
  27. data/lib/chef/chef_fs/config.rb +4 -4
  28. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
  29. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +2 -2
  30. data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +2 -2
  31. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +2 -2
  33. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +3 -3
  34. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +0 -0
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +2 -2
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +2 -2
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +2 -2
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +1 -1
  42. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
  43. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +2 -2
  44. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  45. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  46. data/lib/chef/chef_fs/file_system.rb +3 -3
  47. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +2 -2
  48. data/lib/chef/chef_fs/file_system/base_fs_object.rb +3 -3
  49. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +3 -3
  50. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +2 -2
  51. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +6 -6
  52. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +24 -24
  53. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +1 -1
  54. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +2 -2
  55. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +7 -7
  56. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  57. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +1 -1
  58. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +1 -1
  59. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -5
  60. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +4 -4
  61. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +2 -2
  62. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +2 -2
  63. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +3 -3
  64. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +4 -4
  65. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +2 -2
  66. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +3 -3
  67. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +3 -3
  68. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +1 -1
  69. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +2 -2
  70. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +8 -7
  71. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +4 -4
  72. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +2 -2
  73. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
  74. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +5 -5
  75. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +2 -2
  76. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +2 -2
  77. data/lib/chef/chef_fs/file_system/exceptions.rb +0 -0
  78. data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +2 -2
  79. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  80. data/lib/chef/chef_fs/file_system/memory/memory_root.rb +1 -1
  81. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -2
  82. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +2 -2
  83. data/lib/chef/chef_fs/file_system/repository/acl.rb +2 -2
  84. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +5 -5
  85. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +3 -3
  86. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  87. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +5 -5
  89. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +3 -3
  90. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +29 -29
  91. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +1 -1
  92. data/lib/chef/chef_fs/file_system/repository/client.rb +2 -2
  93. data/lib/chef/chef_fs/file_system/repository/client_key.rb +2 -2
  94. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +3 -3
  95. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +3 -3
  96. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +3 -3
  97. data/lib/chef/chef_fs/file_system/repository/container.rb +2 -2
  98. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +3 -3
  99. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +2 -2
  100. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +3 -3
  101. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +2 -2
  102. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +2 -2
  103. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +2 -2
  104. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  105. data/lib/chef/chef_fs/file_system/repository/environment.rb +2 -2
  106. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +3 -3
  107. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +4 -4
  108. data/lib/chef/chef_fs/file_system/repository/group.rb +2 -2
  109. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +3 -3
  110. data/lib/chef/chef_fs/file_system/repository/node.rb +2 -2
  111. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +4 -4
  112. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +3 -3
  113. data/lib/chef/chef_fs/file_system/repository/policy.rb +2 -2
  114. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +2 -2
  115. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +3 -3
  116. data/lib/chef/chef_fs/file_system/repository/role.rb +2 -2
  117. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +3 -3
  118. data/lib/chef/chef_fs/file_system/repository/user.rb +2 -2
  119. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +3 -3
  120. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +2 -2
  121. data/lib/chef/chef_fs/file_system_cache.rb +1 -1
  122. data/lib/chef/chef_fs/knife.rb +6 -6
  123. data/lib/chef/chef_fs/parallelizer.rb +1 -1
  124. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -0
  125. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  126. data/lib/chef/chef_fs/path_utils.rb +1 -1
  127. data/lib/chef/client.rb +139 -242
  128. data/lib/chef/config.rb +2 -2
  129. data/lib/chef/config_fetcher.rb +4 -4
  130. data/lib/chef/constants.rb +0 -0
  131. data/lib/chef/cookbook/chefignore.rb +1 -2
  132. data/lib/chef/cookbook/cookbook_collection.rb +2 -3
  133. data/lib/chef/cookbook/cookbook_version_loader.rb +73 -62
  134. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -2
  135. data/lib/chef/cookbook/file_vendor.rb +0 -1
  136. data/lib/chef/cookbook/gem_installer.rb +3 -10
  137. data/lib/chef/cookbook/manifest_v0.rb +2 -2
  138. data/lib/chef/cookbook/manifest_v2.rb +2 -2
  139. data/lib/chef/cookbook/metadata.rb +30 -82
  140. data/lib/chef/cookbook/remote_file_vendor.rb +1 -2
  141. data/lib/chef/cookbook/synchronizer.rb +20 -4
  142. data/lib/chef/cookbook/syntax_check.rb +3 -4
  143. data/lib/chef/cookbook_loader.rb +88 -111
  144. data/lib/chef/cookbook_manifest.rb +5 -5
  145. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -0
  146. data/lib/chef/cookbook_uploader.rb +10 -10
  147. data/lib/chef/cookbook_version.rb +7 -7
  148. data/lib/chef/daemon.rb +2 -2
  149. data/lib/chef/data_bag.rb +12 -12
  150. data/lib/chef/data_bag_item.rb +12 -12
  151. data/lib/chef/data_collector.rb +213 -454
  152. data/lib/chef/data_collector/config_validation.rb +88 -0
  153. data/lib/chef/data_collector/error_handlers.rb +116 -0
  154. data/lib/chef/data_collector/message_helpers.rb +50 -0
  155. data/lib/chef/data_collector/run_end_message.rb +172 -0
  156. data/lib/chef/data_collector/run_start_message.rb +60 -0
  157. data/lib/chef/decorator.rb +0 -0
  158. data/lib/chef/decorator/lazy.rb +1 -1
  159. data/lib/chef/decorator/lazy_array.rb +1 -1
  160. data/lib/chef/decorator/unchain.rb +0 -0
  161. data/lib/chef/delayed_evaluator.rb +0 -0
  162. data/lib/chef/deprecated.rb +6 -13
  163. data/lib/chef/deprecation/warnings.rb +1 -1
  164. data/lib/chef/digester.rb +0 -0
  165. data/lib/chef/dist.rb +19 -0
  166. data/lib/chef/dsl.rb +6 -6
  167. data/lib/chef/dsl/cheffish.rb +0 -0
  168. data/lib/chef/dsl/core.rb +4 -4
  169. data/lib/chef/dsl/data_query.rb +5 -5
  170. data/lib/chef/dsl/declare_resource.rb +2 -2
  171. data/lib/chef/dsl/definitions.rb +0 -0
  172. data/lib/chef/dsl/include_attribute.rb +1 -1
  173. data/lib/chef/dsl/include_recipe.rb +1 -7
  174. data/lib/chef/dsl/platform_introspection.rb +0 -0
  175. data/lib/chef/dsl/powershell.rb +1 -1
  176. data/lib/chef/dsl/reboot_pending.rb +2 -2
  177. data/lib/chef/dsl/recipe.rb +8 -10
  178. data/lib/chef/dsl/registry_helper.rb +0 -0
  179. data/lib/chef/dsl/resources.rb +5 -7
  180. data/lib/chef/dsl/universal.rb +10 -8
  181. data/lib/chef/encrypted_data_bag_item.rb +4 -4
  182. data/lib/chef/encrypted_data_bag_item/assertions.rb +2 -2
  183. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +1 -1
  184. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +0 -0
  185. data/lib/chef/encrypted_data_bag_item/decryptor.rb +46 -41
  186. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +0 -0
  187. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +0 -0
  188. data/lib/chef/encrypted_data_bag_item/encryptor.rb +4 -4
  189. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +0 -0
  190. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +0 -0
  191. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +0 -0
  192. data/lib/chef/environment.rb +7 -7
  193. data/lib/chef/event_dispatch/base.rb +18 -32
  194. data/lib/chef/event_dispatch/dispatcher.rb +41 -15
  195. data/lib/chef/event_dispatch/dsl.rb +3 -3
  196. data/lib/chef/event_dispatch/events_output_stream.rb +0 -0
  197. data/lib/chef/event_loggers/base.rb +1 -1
  198. data/lib/chef/event_loggers/windows_eventlog.rb +5 -5
  199. data/lib/chef/exceptions.rb +6 -35
  200. data/lib/chef/file_access_control.rb +3 -3
  201. data/lib/chef/file_access_control/unix.rb +1 -1
  202. data/lib/chef/file_access_control/windows.rb +2 -2
  203. data/lib/chef/file_cache.rb +5 -5
  204. data/lib/chef/file_content_management/content_base.rb +0 -0
  205. data/lib/chef/file_content_management/deploy.rb +3 -3
  206. data/lib/chef/file_content_management/deploy/cp.rb +0 -0
  207. data/lib/chef/file_content_management/deploy/mv_unix.rb +0 -0
  208. data/lib/chef/file_content_management/deploy/mv_windows.rb +2 -2
  209. data/lib/chef/file_content_management/tempfile.rb +0 -0
  210. data/lib/chef/formatters/base.rb +5 -5
  211. data/lib/chef/formatters/doc.rb +15 -57
  212. data/lib/chef/formatters/error_description.rb +1 -1
  213. data/lib/chef/formatters/error_inspectors.rb +7 -7
  214. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +15 -14
  215. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +0 -0
  216. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +3 -3
  217. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
  218. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +9 -8
  219. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +18 -17
  220. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -2
  221. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +10 -9
  222. data/lib/chef/formatters/error_mapper.rb +0 -0
  223. data/lib/chef/formatters/indentable_output_stream.rb +0 -0
  224. data/lib/chef/formatters/minimal.rb +7 -5
  225. data/lib/chef/guard_interpreter.rb +2 -2
  226. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -7
  227. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +1 -1
  228. data/lib/chef/handler.rb +1 -1
  229. data/lib/chef/handler/error_report.rb +2 -2
  230. data/lib/chef/handler/json_file.rb +2 -2
  231. data/lib/chef/http.rb +6 -6
  232. data/lib/chef/http/api_versions.rb +2 -2
  233. data/lib/chef/http/auth_credentials.rb +1 -1
  234. data/lib/chef/http/authenticator.rb +2 -2
  235. data/lib/chef/http/basic_client.rb +2 -2
  236. data/lib/chef/http/cookie_jar.rb +0 -0
  237. data/lib/chef/http/cookie_manager.rb +1 -1
  238. data/lib/chef/http/decompressor.rb +1 -1
  239. data/lib/chef/http/http_request.rb +3 -2
  240. data/lib/chef/http/json_input.rb +1 -1
  241. data/lib/chef/http/json_output.rb +2 -2
  242. data/lib/chef/http/json_to_model_output.rb +1 -1
  243. data/lib/chef/http/remote_request_id.rb +1 -1
  244. data/lib/chef/http/simple.rb +5 -5
  245. data/lib/chef/http/simple_json.rb +5 -5
  246. data/lib/chef/http/socketless_chef_zero_client.rb +8 -8
  247. data/lib/chef/http/ssl_policies.rb +1 -1
  248. data/lib/chef/http/validate_content_length.rb +1 -1
  249. data/lib/chef/json_compat.rb +1 -1
  250. data/lib/chef/key.rb +4 -4
  251. data/lib/chef/knife.rb +55 -37
  252. data/lib/chef/knife/bootstrap.rb +728 -196
  253. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -1
  254. data/lib/chef/knife/bootstrap/client_builder.rb +4 -5
  255. data/lib/chef/knife/bootstrap/templates/README.md +0 -0
  256. data/lib/chef/knife/bootstrap/templates/chef-full.erb +5 -5
  257. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +276 -0
  258. data/lib/chef/knife/bootstrap/train_connector.rb +325 -0
  259. data/lib/chef/knife/client_bulk_delete.rb +3 -3
  260. data/lib/chef/knife/client_create.rb +5 -14
  261. data/lib/chef/knife/client_delete.rb +3 -3
  262. data/lib/chef/knife/client_edit.rb +2 -2
  263. data/lib/chef/knife/client_key_create.rb +3 -3
  264. data/lib/chef/knife/client_key_delete.rb +2 -2
  265. data/lib/chef/knife/client_key_edit.rb +3 -3
  266. data/lib/chef/knife/client_key_list.rb +3 -3
  267. data/lib/chef/knife/client_key_show.rb +2 -2
  268. data/lib/chef/knife/client_list.rb +3 -3
  269. data/lib/chef/knife/client_reregister.rb +3 -3
  270. data/lib/chef/knife/client_show.rb +2 -2
  271. data/lib/chef/knife/config_get.rb +2 -3
  272. data/lib/chef/knife/config_get_profile.rb +1 -1
  273. data/lib/chef/knife/config_list_profiles.rb +2 -2
  274. data/lib/chef/knife/config_use_profile.rb +1 -1
  275. data/lib/chef/knife/configure.rb +3 -3
  276. data/lib/chef/knife/configure_client.rb +1 -1
  277. data/lib/chef/knife/cookbook_bulk_delete.rb +3 -3
  278. data/lib/chef/knife/cookbook_delete.rb +2 -2
  279. data/lib/chef/knife/cookbook_download.rb +5 -5
  280. data/lib/chef/knife/cookbook_list.rb +2 -2
  281. data/lib/chef/knife/cookbook_metadata.rb +5 -5
  282. data/lib/chef/knife/cookbook_metadata_from_file.rb +3 -3
  283. data/lib/chef/knife/cookbook_show.rb +7 -7
  284. data/lib/chef/knife/cookbook_site_download.rb +3 -3
  285. data/lib/chef/knife/cookbook_site_install.rb +3 -3
  286. data/lib/chef/knife/cookbook_site_list.rb +3 -3
  287. data/lib/chef/knife/cookbook_site_search.rb +3 -3
  288. data/lib/chef/knife/cookbook_site_share.rb +3 -3
  289. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  290. data/lib/chef/knife/cookbook_site_unshare.rb +3 -3
  291. data/lib/chef/knife/cookbook_upload.rb +11 -46
  292. data/lib/chef/knife/core/bootstrap_context.rb +18 -32
  293. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  294. data/lib/chef/knife/core/gem_glob_loader.rb +4 -4
  295. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  296. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  297. data/lib/chef/knife/core/node_editor.rb +2 -2
  298. data/lib/chef/knife/core/node_presenter.rb +10 -10
  299. data/lib/chef/knife/core/object_loader.rb +2 -2
  300. data/lib/chef/knife/core/status_presenter.rb +2 -2
  301. data/lib/chef/knife/core/subcommand_loader.rb +4 -4
  302. data/lib/chef/knife/core/text_formatter.rb +0 -0
  303. data/lib/chef/knife/core/ui.rb +26 -3
  304. data/lib/chef/knife/core/windows_bootstrap_context.rb +379 -0
  305. data/lib/chef/knife/data_bag_create.rb +4 -4
  306. data/lib/chef/knife/data_bag_delete.rb +2 -2
  307. data/lib/chef/knife/data_bag_edit.rb +4 -4
  308. data/lib/chef/knife/data_bag_from_file.rb +7 -7
  309. data/lib/chef/knife/data_bag_list.rb +2 -2
  310. data/lib/chef/knife/data_bag_secret_options.rb +3 -3
  311. data/lib/chef/knife/data_bag_show.rb +4 -4
  312. data/lib/chef/knife/delete.rb +2 -2
  313. data/lib/chef/knife/deps.rb +6 -4
  314. data/lib/chef/knife/diff.rb +4 -5
  315. data/lib/chef/knife/download.rb +2 -2
  316. data/lib/chef/knife/edit.rb +3 -3
  317. data/lib/chef/knife/environment_compare.rb +2 -2
  318. data/lib/chef/knife/environment_create.rb +2 -2
  319. data/lib/chef/knife/environment_delete.rb +2 -2
  320. data/lib/chef/knife/environment_edit.rb +2 -2
  321. data/lib/chef/knife/environment_from_file.rb +3 -3
  322. data/lib/chef/knife/environment_list.rb +2 -2
  323. data/lib/chef/knife/environment_show.rb +2 -2
  324. data/lib/chef/knife/exec.rb +5 -5
  325. data/lib/chef/knife/key_create.rb +4 -4
  326. data/lib/chef/knife/key_create_base.rb +0 -0
  327. data/lib/chef/knife/key_delete.rb +1 -1
  328. data/lib/chef/knife/key_edit.rb +4 -4
  329. data/lib/chef/knife/key_edit_base.rb +0 -0
  330. data/lib/chef/knife/key_list.rb +4 -4
  331. data/lib/chef/knife/key_list_base.rb +0 -0
  332. data/lib/chef/knife/key_show.rb +3 -3
  333. data/lib/chef/knife/list.rb +15 -10
  334. data/lib/chef/knife/node_bulk_delete.rb +3 -3
  335. data/lib/chef/knife/node_create.rb +3 -3
  336. data/lib/chef/knife/node_delete.rb +3 -3
  337. data/lib/chef/knife/node_edit.rb +5 -5
  338. data/lib/chef/knife/node_environment_set.rb +2 -2
  339. data/lib/chef/knife/node_from_file.rb +4 -4
  340. data/lib/chef/knife/node_list.rb +4 -4
  341. data/lib/chef/knife/node_policy_set.rb +3 -3
  342. data/lib/chef/knife/node_run_list_add.rb +7 -7
  343. data/lib/chef/knife/node_run_list_remove.rb +3 -3
  344. data/lib/chef/knife/node_run_list_set.rb +3 -3
  345. data/lib/chef/knife/node_show.rb +4 -4
  346. data/lib/chef/knife/null.rb +3 -0
  347. data/lib/chef/knife/raw.rb +9 -9
  348. data/lib/chef/knife/recipe_list.rb +1 -1
  349. data/lib/chef/knife/rehash.rb +2 -2
  350. data/lib/chef/knife/role_bulk_delete.rb +3 -3
  351. data/lib/chef/knife/role_create.rb +3 -3
  352. data/lib/chef/knife/role_delete.rb +3 -3
  353. data/lib/chef/knife/role_edit.rb +3 -3
  354. data/lib/chef/knife/role_env_run_list_add.rb +3 -3
  355. data/lib/chef/knife/role_env_run_list_clear.rb +3 -3
  356. data/lib/chef/knife/role_env_run_list_remove.rb +3 -3
  357. data/lib/chef/knife/role_env_run_list_replace.rb +3 -3
  358. data/lib/chef/knife/role_env_run_list_set.rb +3 -3
  359. data/lib/chef/knife/role_from_file.rb +4 -4
  360. data/lib/chef/knife/role_list.rb +3 -3
  361. data/lib/chef/knife/role_run_list_add.rb +3 -3
  362. data/lib/chef/knife/role_run_list_clear.rb +3 -3
  363. data/lib/chef/knife/role_run_list_remove.rb +2 -2
  364. data/lib/chef/knife/role_run_list_replace.rb +3 -3
  365. data/lib/chef/knife/role_run_list_set.rb +2 -2
  366. data/lib/chef/knife/role_show.rb +2 -2
  367. data/lib/chef/knife/search.rb +6 -6
  368. data/lib/chef/knife/serve.rb +2 -2
  369. data/lib/chef/knife/show.rb +3 -3
  370. data/lib/chef/knife/ssh.rb +6 -12
  371. data/lib/chef/knife/ssl_check.rb +7 -7
  372. data/lib/chef/knife/ssl_fetch.rb +4 -4
  373. data/lib/chef/knife/status.rb +4 -17
  374. data/lib/chef/knife/supermarket_download.rb +1 -1
  375. data/lib/chef/knife/supermarket_install.rb +4 -4
  376. data/lib/chef/knife/supermarket_list.rb +1 -1
  377. data/lib/chef/knife/supermarket_search.rb +1 -1
  378. data/lib/chef/knife/supermarket_share.rb +5 -5
  379. data/lib/chef/knife/supermarket_show.rb +1 -1
  380. data/lib/chef/knife/supermarket_unshare.rb +2 -2
  381. data/lib/chef/knife/tag_create.rb +2 -2
  382. data/lib/chef/knife/tag_delete.rb +2 -2
  383. data/lib/chef/knife/tag_list.rb +2 -2
  384. data/lib/chef/knife/upload.rb +2 -2
  385. data/lib/chef/knife/user_create.rb +36 -80
  386. data/lib/chef/knife/user_delete.rb +3 -55
  387. data/lib/chef/knife/user_edit.rb +10 -40
  388. data/lib/chef/knife/user_key_create.rb +3 -3
  389. data/lib/chef/knife/user_key_delete.rb +2 -2
  390. data/lib/chef/knife/user_key_edit.rb +3 -3
  391. data/lib/chef/knife/user_key_list.rb +3 -3
  392. data/lib/chef/knife/user_key_show.rb +2 -2
  393. data/lib/chef/knife/user_list.rb +2 -4
  394. data/lib/chef/knife/user_reregister.rb +11 -42
  395. data/lib/chef/knife/user_show.rb +3 -34
  396. data/lib/chef/knife/xargs.rb +4 -4
  397. data/lib/chef/local_mode.rb +6 -9
  398. data/lib/chef/log.rb +4 -4
  399. data/lib/chef/log/syslog.rb +3 -2
  400. data/lib/chef/log/winevt.rb +3 -3
  401. data/lib/chef/mash.rb +0 -0
  402. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  403. data/lib/chef/mixin/checksum.rb +1 -1
  404. data/lib/chef/mixin/convert_to_class_name.rb +0 -0
  405. data/lib/chef/mixin/create_path.rb +0 -0
  406. data/lib/chef/mixin/deep_merge.rb +0 -0
  407. data/lib/chef/mixin/deprecation.rb +0 -0
  408. data/lib/chef/mixin/descendants_tracker.rb +0 -0
  409. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +1 -1
  410. data/lib/chef/mixin/file_class.rb +1 -1
  411. data/lib/chef/mixin/from_file.rb +0 -0
  412. data/lib/chef/mixin/get_source_from_package.rb +0 -0
  413. data/lib/chef/mixin/homebrew_user.rb +1 -1
  414. data/lib/chef/mixin/lazy_module_include.rb +0 -0
  415. data/lib/chef/mixin/notifying_block.rb +0 -0
  416. data/lib/chef/mixin/openssl_helper.rb +0 -0
  417. data/lib/chef/mixin/params_validate.rb +4 -4
  418. data/lib/chef/mixin/path_sanity.rb +0 -0
  419. data/lib/chef/mixin/powershell_exec.rb +1 -1
  420. data/lib/chef/mixin/powershell_out.rb +2 -2
  421. data/lib/chef/mixin/powershell_type_coercions.rb +0 -0
  422. data/lib/chef/mixin/properties.rb +39 -7
  423. data/lib/chef/mixin/provides.rb +1 -1
  424. data/lib/chef/mixin/proxified_socket.rb +0 -0
  425. data/lib/chef/mixin/securable.rb +0 -0
  426. data/lib/chef/mixin/shell_out.rb +6 -77
  427. data/lib/chef/mixin/subclass_directive.rb +0 -0
  428. data/lib/chef/mixin/template.rb +9 -14
  429. data/lib/chef/mixin/train_or_shell.rb +83 -0
  430. data/lib/chef/mixin/unformatter.rb +0 -0
  431. data/lib/chef/mixin/uris.rb +0 -0
  432. data/lib/chef/mixin/user_context.rb +1 -1
  433. data/lib/chef/mixin/versioned_api.rb +0 -0
  434. data/lib/chef/mixin/which.rb +1 -1
  435. data/lib/chef/mixin/why_run.rb +0 -0
  436. data/lib/chef/mixin/wide_string.rb +0 -0
  437. data/lib/chef/mixin/windows_architecture_helper.rb +4 -4
  438. data/lib/chef/mixin/windows_env_helper.rb +6 -6
  439. data/lib/chef/mixin/xml_escape.rb +7 -7
  440. data/lib/chef/mixins.rb +12 -12
  441. data/lib/chef/monkey_patches/net_http.rb +0 -0
  442. data/lib/chef/monkey_patches/webrick-utils.rb +0 -0
  443. data/lib/chef/monkey_patches/win32/registry.rb +3 -29
  444. data/lib/chef/monologger.rb +0 -0
  445. data/lib/chef/nil_argument.rb +0 -0
  446. data/lib/chef/node.rb +65 -21
  447. data/lib/chef/node/attribute.rb +22 -20
  448. data/lib/chef/node/attribute_collections.rb +14 -49
  449. data/lib/chef/node/common_api.rb +0 -0
  450. data/lib/chef/node/immutable_collections.rb +4 -4
  451. data/lib/chef/node/mixin/deep_merge_cache.rb +0 -0
  452. data/lib/chef/node/mixin/immutablize_array.rb +0 -1
  453. data/lib/chef/node/mixin/immutablize_hash.rb +0 -0
  454. data/lib/chef/node/mixin/mashy_array.rb +68 -0
  455. data/lib/chef/node/mixin/state_tracking.rb +0 -0
  456. data/lib/chef/node_map.rb +16 -3
  457. data/lib/chef/null_logger.rb +0 -0
  458. data/lib/chef/org.rb +3 -3
  459. data/lib/chef/platform.rb +2 -2
  460. data/lib/chef/platform/priority_map.rb +1 -1
  461. data/lib/chef/platform/provider_handler_map.rb +1 -1
  462. data/lib/chef/platform/provider_mapping.rb +5 -5
  463. data/lib/chef/platform/provider_priority_map.rb +1 -1
  464. data/lib/chef/platform/query_helpers.rb +1 -1
  465. data/lib/chef/platform/rebooter.rb +5 -5
  466. data/lib/chef/platform/resource_handler_map.rb +1 -1
  467. data/lib/chef/platform/resource_priority_map.rb +1 -1
  468. data/lib/chef/platform/service_helpers.rb +1 -1
  469. data/lib/chef/policy_builder.rb +3 -3
  470. data/lib/chef/policy_builder/dynamic.rb +8 -7
  471. data/lib/chef/policy_builder/expand_node_object.rb +42 -33
  472. data/lib/chef/policy_builder/policyfile.rb +18 -16
  473. data/lib/chef/powershell.rb +1 -1
  474. data/lib/chef/property.rb +4 -4
  475. data/lib/chef/provider.rb +34 -25
  476. data/lib/chef/provider/apt_preference.rb +4 -4
  477. data/lib/chef/provider/apt_repository.rb +5 -5
  478. data/lib/chef/provider/apt_update.rb +3 -3
  479. data/lib/chef/provider/batch.rb +1 -1
  480. data/lib/chef/provider/cookbook_file.rb +1 -1
  481. data/lib/chef/provider/cookbook_file/content.rb +2 -2
  482. data/lib/chef/provider/cron.rb +5 -5
  483. data/lib/chef/provider/cron/aix.rb +1 -1
  484. data/lib/chef/provider/cron/solaris.rb +1 -1
  485. data/lib/chef/provider/cron/unix.rb +3 -3
  486. data/lib/chef/provider/directory.rb +5 -5
  487. data/lib/chef/provider/dsc_resource.rb +4 -4
  488. data/lib/chef/provider/dsc_script.rb +4 -4
  489. data/lib/chef/provider/execute.rb +7 -4
  490. data/lib/chef/provider/file.rb +14 -13
  491. data/lib/chef/provider/file/content.rb +2 -2
  492. data/lib/chef/provider/git.rb +22 -20
  493. data/lib/chef/provider/group.rb +2 -2
  494. data/lib/chef/provider/group/aix.rb +1 -1
  495. data/lib/chef/provider/group/dscl.rb +0 -0
  496. data/lib/chef/provider/group/gpasswd.rb +1 -1
  497. data/lib/chef/provider/group/groupadd.rb +1 -1
  498. data/lib/chef/provider/group/groupmod.rb +0 -0
  499. data/lib/chef/provider/group/pw.rb +0 -0
  500. data/lib/chef/provider/group/solaris.rb +62 -0
  501. data/lib/chef/provider/group/suse.rb +2 -3
  502. data/lib/chef/provider/group/usermod.rb +4 -7
  503. data/lib/chef/provider/group/windows.rb +2 -2
  504. data/lib/chef/provider/http_request.rb +1 -1
  505. data/lib/chef/provider/ifconfig.rb +13 -24
  506. data/lib/chef/provider/ifconfig/aix.rb +1 -1
  507. data/lib/chef/provider/ifconfig/debian.rb +2 -2
  508. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  509. data/lib/chef/provider/launchd.rb +4 -4
  510. data/lib/chef/provider/link.rb +7 -7
  511. data/lib/chef/provider/log.rb +0 -0
  512. data/lib/chef/provider/lwrp_base.rb +3 -3
  513. data/lib/chef/provider/mdadm.rb +2 -2
  514. data/lib/chef/provider/mount.rb +3 -3
  515. data/lib/chef/provider/mount/aix.rb +1 -1
  516. data/lib/chef/provider/mount/mount.rb +2 -2
  517. data/lib/chef/provider/mount/solaris.rb +2 -2
  518. data/lib/chef/provider/mount/windows.rb +3 -3
  519. data/lib/chef/provider/noop.rb +0 -0
  520. data/lib/chef/provider/ohai.rb +0 -0
  521. data/lib/chef/provider/osx_profile.rb +4 -4
  522. data/lib/chef/provider/package.rb +12 -99
  523. data/lib/chef/provider/package/apt.rb +7 -22
  524. data/lib/chef/provider/package/bff.rb +3 -3
  525. data/lib/chef/provider/package/cab.rb +5 -5
  526. data/lib/chef/provider/package/chocolatey.rb +4 -4
  527. data/lib/chef/provider/package/deb.rb +131 -0
  528. data/lib/chef/provider/package/dnf.rb +7 -7
  529. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -15
  530. data/lib/chef/provider/package/dnf/python_helper.rb +4 -6
  531. data/lib/chef/provider/package/dnf/version.rb +0 -0
  532. data/lib/chef/provider/package/dpkg.rb +7 -21
  533. data/lib/chef/provider/package/freebsd/base.rb +3 -3
  534. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  535. data/lib/chef/provider/package/freebsd/port.rb +2 -6
  536. data/lib/chef/provider/package/homebrew.rb +1 -1
  537. data/lib/chef/provider/package/ips.rb +2 -2
  538. data/lib/chef/provider/package/macports.rb +0 -0
  539. data/lib/chef/provider/package/msu.rb +7 -7
  540. data/lib/chef/provider/package/openbsd.rb +4 -4
  541. data/lib/chef/provider/package/pacman.rb +2 -2
  542. data/lib/chef/provider/package/paludis.rb +2 -2
  543. data/lib/chef/provider/package/portage.rb +4 -4
  544. data/lib/chef/provider/package/powershell.rb +3 -3
  545. data/lib/chef/provider/package/rpm.rb +4 -4
  546. data/lib/chef/provider/package/rubygems.rb +5 -5
  547. data/lib/chef/provider/package/smartos.rb +3 -3
  548. data/lib/chef/provider/package/snap.rb +358 -0
  549. data/lib/chef/provider/package/solaris.rb +3 -3
  550. data/lib/chef/provider/package/windows.rb +7 -7
  551. data/lib/chef/provider/package/windows/exe.rb +1 -1
  552. data/lib/chef/provider/package/windows/msi.rb +2 -2
  553. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +0 -0
  554. data/lib/chef/provider/package/yum.rb +9 -9
  555. data/lib/chef/provider/package/yum/python_helper.rb +4 -4
  556. data/lib/chef/provider/package/yum/rpm_utils.rb +6 -16
  557. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -0
  558. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -0
  559. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  560. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -0
  561. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  562. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -0
  563. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  564. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -0
  565. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  566. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -0
  567. data/lib/chef/provider/package/yum/version.rb +4 -0
  568. data/lib/chef/provider/package/yum/yum_cache.rb +2 -2
  569. data/lib/chef/provider/package/yum/yum_helper.py +0 -0
  570. data/lib/chef/provider/package/zypper.rb +3 -3
  571. data/lib/chef/provider/powershell_script.rb +6 -36
  572. data/lib/chef/provider/reboot.rb +2 -2
  573. data/lib/chef/provider/registry_key.rb +7 -7
  574. data/lib/chef/provider/remote_directory.rb +7 -7
  575. data/lib/chef/provider/remote_file.rb +1 -1
  576. data/lib/chef/provider/remote_file/cache_control_data.rb +4 -4
  577. data/lib/chef/provider/remote_file/content.rb +2 -2
  578. data/lib/chef/provider/remote_file/fetcher.rb +0 -0
  579. data/lib/chef/provider/remote_file/ftp.rb +2 -2
  580. data/lib/chef/provider/remote_file/http.rb +4 -4
  581. data/lib/chef/provider/remote_file/local_file.rb +1 -1
  582. data/lib/chef/provider/remote_file/network_file.rb +2 -2
  583. data/lib/chef/provider/remote_file/sftp.rb +2 -2
  584. data/lib/chef/provider/resource_update.rb +0 -0
  585. data/lib/chef/provider/route.rb +36 -36
  586. data/lib/chef/provider/ruby_block.rb +0 -0
  587. data/lib/chef/provider/script.rb +2 -6
  588. data/lib/chef/provider/service.rb +10 -10
  589. data/lib/chef/provider/service/aix.rb +1 -1
  590. data/lib/chef/provider/service/aixinit.rb +2 -2
  591. data/lib/chef/provider/service/arch.rb +1 -1
  592. data/lib/chef/provider/service/debian.rb +3 -3
  593. data/lib/chef/provider/service/freebsd.rb +2 -2
  594. data/lib/chef/provider/service/gentoo.rb +2 -2
  595. data/lib/chef/provider/service/init.rb +2 -2
  596. data/lib/chef/provider/service/insserv.rb +3 -5
  597. data/lib/chef/provider/service/invokercd.rb +1 -1
  598. data/lib/chef/provider/service/macosx.rb +4 -4
  599. data/lib/chef/provider/service/openbsd.rb +3 -3
  600. data/lib/chef/provider/service/redhat.rb +3 -3
  601. data/lib/chef/provider/service/simple.rb +2 -2
  602. data/lib/chef/provider/service/solaris.rb +2 -2
  603. data/lib/chef/provider/service/systemd.rb +3 -19
  604. data/lib/chef/provider/service/upstart.rb +4 -4
  605. data/lib/chef/provider/service/windows.rb +18 -21
  606. data/lib/chef/provider/subversion.rb +3 -3
  607. data/lib/chef/provider/support/yum_repo.erb +0 -0
  608. data/lib/chef/provider/support/zypper_repo.erb +0 -0
  609. data/lib/chef/provider/systemd_unit.rb +7 -31
  610. data/lib/chef/provider/template.rb +2 -2
  611. data/lib/chef/provider/template/content.rb +2 -2
  612. data/lib/chef/provider/template_finder.rb +0 -0
  613. data/lib/chef/provider/user.rb +2 -2
  614. data/lib/chef/provider/user/aix.rb +1 -1
  615. data/lib/chef/provider/user/dscl.rb +41 -121
  616. data/lib/chef/provider/user/linux.rb +1 -1
  617. data/lib/chef/provider/user/pw.rb +1 -1
  618. data/lib/chef/provider/user/solaris.rb +1 -1
  619. data/lib/chef/provider/user/windows.rb +4 -6
  620. data/lib/chef/provider/whyrun_safe_ruby_block.rb +0 -0
  621. data/lib/chef/provider/windows_env.rb +3 -3
  622. data/lib/chef/provider/windows_path.rb +3 -3
  623. data/lib/chef/provider/windows_script.rb +2 -2
  624. data/lib/chef/provider/windows_task.rb +23 -24
  625. data/lib/chef/provider/yum_repository.rb +4 -4
  626. data/lib/chef/provider/zypper_repository.rb +4 -4
  627. data/lib/chef/provider_resolver.rb +2 -2
  628. data/lib/chef/providers.rb +120 -119
  629. data/lib/chef/recipe.rb +3 -18
  630. data/lib/chef/request_id.rb +0 -0
  631. data/lib/chef/reserved_names.rb +0 -0
  632. data/lib/chef/resource.rb +54 -55
  633. data/lib/chef/resource/action_class.rb +3 -3
  634. data/lib/chef/resource/apt_package.rb +9 -1
  635. data/lib/chef/resource/apt_preference.rb +1 -1
  636. data/lib/chef/resource/apt_repository.rb +1 -1
  637. data/lib/chef/resource/apt_update.rb +1 -1
  638. data/lib/chef/resource/archive_file.rb +172 -0
  639. data/lib/chef/resource/bash.rb +2 -2
  640. data/lib/chef/resource/batch.rb +1 -1
  641. data/lib/chef/resource/bff_package.rb +1 -1
  642. data/lib/chef/resource/breakpoint.rb +3 -2
  643. data/lib/chef/resource/build_essential.rb +4 -3
  644. data/lib/chef/resource/cab_package.rb +2 -2
  645. data/lib/chef/resource/chef_gem.rb +7 -4
  646. data/lib/chef/resource/chef_handler.rb +4 -1
  647. data/lib/chef/resource/chocolatey_config.rb +0 -1
  648. data/lib/chef/resource/chocolatey_package.rb +1 -1
  649. data/lib/chef/resource/chocolatey_source.rb +0 -1
  650. data/lib/chef/resource/conditional.rb +2 -2
  651. data/lib/chef/resource/conditional_action_not_nothing.rb +0 -0
  652. data/lib/chef/resource/cookbook_file.rb +5 -4
  653. data/lib/chef/resource/cron.rb +2 -2
  654. data/lib/chef/resource/cron_access.rb +1 -2
  655. data/lib/chef/resource/cron_d.rb +1 -2
  656. data/lib/chef/resource/csh.rb +2 -2
  657. data/lib/chef/resource/directory.rb +2 -2
  658. data/lib/chef/resource/dmg_package.rb +2 -2
  659. data/lib/chef/resource/dnf_package.rb +7 -6
  660. data/lib/chef/resource/dpkg_package.rb +9 -1
  661. data/lib/chef/resource/dsc_resource.rb +1 -1
  662. data/lib/chef/resource/dsc_script.rb +3 -3
  663. data/lib/chef/resource/execute.rb +14 -15
  664. data/lib/chef/resource/file.rb +7 -6
  665. data/lib/chef/resource/file/verification.rb +3 -3
  666. data/lib/chef/resource/file/verification/systemd_unit.rb +1 -1
  667. data/lib/chef/resource/freebsd_package.rb +5 -23
  668. data/lib/chef/resource/gem_package.rb +3 -2
  669. data/lib/chef/resource/git.rb +1 -1
  670. data/lib/chef/resource/group.rb +0 -0
  671. data/lib/chef/resource/homebrew_cask.rb +6 -3
  672. data/lib/chef/resource/homebrew_package.rb +4 -3
  673. data/lib/chef/resource/homebrew_tap.rb +5 -2
  674. data/lib/chef/resource/hostname.rb +3 -1
  675. data/lib/chef/resource/http_request.rb +1 -1
  676. data/lib/chef/resource/ifconfig.rb +1 -1
  677. data/lib/chef/resource/ips_package.rb +2 -2
  678. data/lib/chef/resource/kernel_module.rb +1 -63
  679. data/lib/chef/resource/ksh.rb +1 -1
  680. data/lib/chef/resource/launchd.rb +1 -1
  681. data/lib/chef/resource/link.rb +6 -7
  682. data/lib/chef/resource/locale.rb +101 -46
  683. data/lib/chef/resource/log.rb +1 -1
  684. data/lib/chef/resource/lwrp_base.rb +8 -8
  685. data/lib/chef/resource/macos_userdefaults.rb +1 -1
  686. data/lib/chef/resource/macosx_service.rb +1 -5
  687. data/lib/chef/resource/macports_package.rb +1 -1
  688. data/lib/chef/resource/mdadm.rb +1 -1
  689. data/lib/chef/resource/mount.rb +1 -1
  690. data/lib/chef/resource/msu_package.rb +2 -2
  691. data/lib/chef/resource/ohai.rb +4 -7
  692. data/lib/chef/resource/ohai_hint.rb +3 -1
  693. data/lib/chef/resource/openbsd_package.rb +3 -3
  694. data/lib/chef/resource/openssl_dhparam.rb +4 -4
  695. data/lib/chef/resource/openssl_ec_private_key.rb +4 -5
  696. data/lib/chef/resource/openssl_ec_public_key.rb +4 -5
  697. data/lib/chef/resource/openssl_rsa_private_key.rb +4 -4
  698. data/lib/chef/resource/openssl_rsa_public_key.rb +4 -4
  699. data/lib/chef/resource/openssl_x509_certificate.rb +4 -5
  700. data/lib/chef/resource/openssl_x509_crl.rb +4 -5
  701. data/lib/chef/resource/openssl_x509_request.rb +4 -5
  702. data/lib/chef/resource/osx_profile.rb +1 -1
  703. data/lib/chef/resource/package.rb +2 -10
  704. data/lib/chef/resource/pacman_package.rb +1 -1
  705. data/lib/chef/resource/paludis_package.rb +2 -2
  706. data/lib/chef/resource/perl.rb +2 -2
  707. data/lib/chef/resource/portage_package.rb +1 -1
  708. data/lib/chef/resource/powershell_package.rb +3 -3
  709. data/lib/chef/resource/powershell_package_source.rb +2 -3
  710. data/lib/chef/resource/powershell_script.rb +37 -1
  711. data/lib/chef/resource/python.rb +2 -2
  712. data/lib/chef/resource/reboot.rb +1 -1
  713. data/lib/chef/resource/registry_key.rb +2 -2
  714. data/lib/chef/resource/remote_directory.rb +41 -44
  715. data/lib/chef/resource/remote_file.rb +4 -4
  716. data/lib/chef/resource/resource_notification.rb +14 -18
  717. data/lib/chef/resource/rhsm_errata.rb +1 -1
  718. data/lib/chef/resource/rhsm_errata_level.rb +1 -1
  719. data/lib/chef/resource/rhsm_register.rb +1 -1
  720. data/lib/chef/resource/rhsm_repo.rb +1 -1
  721. data/lib/chef/resource/rhsm_subscription.rb +1 -1
  722. data/lib/chef/resource/route.rb +25 -15
  723. data/lib/chef/resource/rpm_package.rb +2 -2
  724. data/lib/chef/resource/ruby.rb +2 -2
  725. data/lib/chef/resource/ruby_block.rb +4 -3
  726. data/lib/chef/resource/scm.rb +1 -1
  727. data/lib/chef/resource/script.rb +2 -2
  728. data/lib/chef/resource/service.rb +54 -159
  729. data/lib/chef/resource/smartos_package.rb +1 -1
  730. data/{bin/chef-solo → lib/chef/resource/snap_package.rb} +19 -7
  731. data/lib/chef/resource/solaris_package.rb +1 -1
  732. data/lib/chef/resource/ssh_known_hosts_entry.rb +3 -4
  733. data/lib/chef/resource/subversion.rb +3 -2
  734. data/lib/chef/resource/sudo.rb +1 -1
  735. data/lib/chef/resource/support/cron.d.erb +0 -0
  736. data/lib/chef/resource/support/cron_access.erb +0 -0
  737. data/lib/chef/resource/support/ssh_known_hosts.erb +0 -0
  738. data/lib/chef/resource/support/sudoer.erb +0 -0
  739. data/lib/chef/resource/swap_file.rb +1 -1
  740. data/lib/chef/resource/sysctl.rb +1 -1
  741. data/lib/chef/resource/systemd_unit.rb +1 -2
  742. data/lib/chef/resource/template.rb +4 -3
  743. data/lib/chef/resource/timezone.rb +2 -3
  744. data/lib/chef/resource/user.rb +45 -127
  745. data/lib/chef/resource/user/aix_user.rb +1 -1
  746. data/lib/chef/resource/user/dscl_user.rb +5 -1
  747. data/lib/chef/resource/user/linux_user.rb +1 -1
  748. data/lib/chef/resource/user/pw_user.rb +1 -1
  749. data/lib/chef/resource/user/solaris_user.rb +1 -1
  750. data/lib/chef/resource/user/windows_user.rb +1 -1
  751. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -0
  752. data/lib/chef/resource/windows_ad_join.rb +2 -2
  753. data/lib/chef/resource/windows_auto_run.rb +1 -1
  754. data/lib/chef/resource/windows_certificate.rb +7 -7
  755. data/lib/chef/resource/windows_dfs_folder.rb +75 -0
  756. data/lib/chef/resource/windows_dfs_namespace.rb +114 -0
  757. data/lib/chef/resource/windows_dfs_server.rb +76 -0
  758. data/lib/chef/resource/windows_dns_record.rb +76 -0
  759. data/lib/chef/resource/windows_dns_zone.rb +80 -0
  760. data/lib/chef/resource/windows_env.rb +1 -1
  761. data/lib/chef/resource/windows_feature.rb +1 -1
  762. data/lib/chef/resource/windows_feature_dism.rb +2 -2
  763. data/lib/chef/resource/windows_feature_powershell.rb +4 -4
  764. data/lib/chef/resource/windows_firewall_rule.rb +1 -2
  765. data/lib/chef/resource/windows_font.rb +2 -2
  766. data/lib/chef/resource/windows_package.rb +4 -4
  767. data/lib/chef/resource/windows_pagefile.rb +1 -1
  768. data/lib/chef/resource/windows_path.rb +1 -1
  769. data/lib/chef/resource/windows_printer.rb +1 -1
  770. data/lib/chef/resource/windows_printer_port.rb +1 -1
  771. data/lib/chef/resource/windows_script.rb +3 -3
  772. data/lib/chef/resource/windows_service.rb +6 -12
  773. data/lib/chef/resource/windows_share.rb +3 -4
  774. data/lib/chef/resource/windows_shortcut.rb +1 -1
  775. data/lib/chef/resource/windows_task.rb +3 -3
  776. data/lib/chef/resource/windows_uac.rb +94 -0
  777. data/lib/chef/resource/windows_workgroup.rb +2 -2
  778. data/lib/chef/resource/yum_package.rb +5 -3
  779. data/lib/chef/resource/yum_repository.rb +1 -1
  780. data/lib/chef/resource/zypper_package.rb +4 -2
  781. data/lib/chef/resource/zypper_repository.rb +1 -1
  782. data/lib/chef/resource_builder.rb +3 -3
  783. data/lib/chef/resource_collection.rb +6 -13
  784. data/lib/chef/resource_collection/resource_collection_serialization.rb +1 -1
  785. data/lib/chef/resource_collection/resource_list.rb +4 -4
  786. data/lib/chef/resource_collection/resource_set.rb +5 -5
  787. data/lib/chef/resource_collection/stepable_iterator.rb +0 -0
  788. data/lib/chef/resource_definition.rb +2 -2
  789. data/lib/chef/resource_definition_list.rb +2 -2
  790. data/lib/chef/resource_inspector.rb +8 -8
  791. data/lib/chef/resource_reporter.rb +47 -138
  792. data/lib/chef/resource_resolver.rb +3 -3
  793. data/lib/chef/resources.rb +138 -130
  794. data/lib/chef/role.rb +8 -8
  795. data/lib/chef/run_context.rb +84 -73
  796. data/lib/chef/run_context/cookbook_compiler.rb +18 -19
  797. data/lib/chef/run_list.rb +4 -4
  798. data/lib/chef/run_list/run_list_expansion.rb +5 -5
  799. data/lib/chef/run_list/run_list_item.rb +4 -4
  800. data/lib/chef/run_list/versioned_recipe_list.rb +2 -2
  801. data/lib/chef/run_lock.rb +6 -5
  802. data/lib/chef/run_status.rb +2 -1
  803. data/lib/chef/runner.rb +16 -52
  804. data/lib/chef/sandbox.rb +0 -0
  805. data/lib/chef/scan_access_control.rb +0 -0
  806. data/lib/chef/search/query.rb +3 -3
  807. data/lib/chef/server_api.rb +10 -10
  808. data/lib/chef/server_api_versions.rb +0 -0
  809. data/lib/chef/shell.rb +17 -16
  810. data/lib/chef/shell/ext.rb +7 -7
  811. data/lib/chef/shell/model_wrapper.rb +2 -2
  812. data/lib/chef/shell/shell_session.rb +10 -10
  813. data/lib/chef/train_transport.rb +129 -0
  814. data/lib/chef/user.rb +7 -7
  815. data/lib/chef/user_v1.rb +9 -9
  816. data/lib/chef/util/backup.rb +1 -1
  817. data/lib/chef/util/diff.rb +0 -0
  818. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  819. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  820. data/lib/chef/util/dsc/local_configuration_manager.rb +2 -2
  821. data/lib/chef/util/dsc/resource_info.rb +0 -0
  822. data/lib/chef/util/dsc/resource_store.rb +3 -3
  823. data/lib/chef/util/editor.rb +0 -0
  824. data/lib/chef/util/file_edit.rb +1 -1
  825. data/lib/chef/util/path_helper.rb +0 -0
  826. data/lib/chef/util/powershell/cmdlet.rb +2 -2
  827. data/lib/chef/util/powershell/cmdlet_result.rb +1 -1
  828. data/lib/chef/util/powershell/ps_credential.rb +1 -1
  829. data/lib/chef/util/selinux.rb +2 -2
  830. data/lib/chef/util/threaded_job_queue.rb +0 -0
  831. data/lib/chef/util/windows.rb +0 -0
  832. data/lib/chef/util/windows/logon_session.rb +2 -2
  833. data/lib/chef/util/windows/net_group.rb +2 -2
  834. data/lib/chef/util/windows/net_use.rb +2 -2
  835. data/lib/chef/util/windows/net_user.rb +4 -4
  836. data/lib/chef/util/windows/volume.rb +2 -2
  837. data/lib/chef/version.rb +3 -3
  838. data/lib/chef/version/platform.rb +1 -1
  839. data/lib/chef/version_class.rb +0 -0
  840. data/lib/chef/version_constraint.rb +2 -2
  841. data/lib/chef/version_constraint/platform.rb +2 -2
  842. data/lib/chef/version_string.rb +0 -0
  843. data/lib/chef/whitelist.rb +1 -1
  844. data/lib/chef/win32/api.rb +2 -2
  845. data/lib/chef/win32/api/crypto.rb +1 -1
  846. data/lib/chef/win32/api/error.rb +1 -1
  847. data/lib/chef/win32/api/file.rb +4 -4
  848. data/lib/chef/win32/api/installer.rb +3 -3
  849. data/lib/chef/win32/api/memory.rb +1 -1
  850. data/lib/chef/win32/api/net.rb +2 -2
  851. data/lib/chef/win32/api/process.rb +1 -1
  852. data/lib/chef/win32/api/psapi.rb +1 -1
  853. data/lib/chef/win32/api/registry.rb +1 -1
  854. data/lib/chef/win32/api/security.rb +1 -1
  855. data/lib/chef/win32/api/synchronization.rb +1 -1
  856. data/lib/chef/win32/api/system.rb +1 -1
  857. data/lib/chef/win32/api/unicode.rb +1 -1
  858. data/lib/chef/win32/crypto.rb +4 -4
  859. data/lib/chef/win32/error.rb +4 -4
  860. data/lib/chef/win32/eventlog.rb +0 -0
  861. data/lib/chef/win32/file.rb +8 -8
  862. data/lib/chef/win32/file/info.rb +1 -1
  863. data/lib/chef/win32/file/version_info.rb +1 -1
  864. data/lib/chef/win32/handle.rb +4 -4
  865. data/lib/chef/win32/memory.rb +2 -2
  866. data/lib/chef/win32/mutex.rb +2 -2
  867. data/lib/chef/win32/net.rb +3 -3
  868. data/lib/chef/win32/process.rb +4 -4
  869. data/lib/chef/win32/registry.rb +5 -5
  870. data/lib/chef/win32/security.rb +12 -12
  871. data/lib/chef/win32/security/ace.rb +3 -3
  872. data/lib/chef/win32/security/acl.rb +2 -2
  873. data/lib/chef/win32/security/securable_object.rb +3 -3
  874. data/lib/chef/win32/security/security_descriptor.rb +3 -3
  875. data/lib/chef/win32/security/sid.rb +3 -3
  876. data/lib/chef/win32/security/token.rb +3 -3
  877. data/lib/chef/win32/system.rb +2 -2
  878. data/lib/chef/win32/unicode.rb +2 -2
  879. data/lib/chef/win32/version.rb +2 -2
  880. data/lib/chef/win32_service_constants.rb +0 -0
  881. data/lib/chef/workstation_config_loader.rb +0 -0
  882. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +0 -0
  883. data/spec/data/apt/chef-integration-test-1.0/debian/compat +0 -0
  884. data/spec/data/apt/chef-integration-test-1.0/debian/control +0 -0
  885. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +0 -0
  886. data/spec/data/apt/chef-integration-test-1.0/debian/files +0 -0
  887. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +0 -0
  888. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +0 -0
  889. data/spec/data/apt/chef-integration-test-1.1/debian/compat +0 -0
  890. data/spec/data/apt/chef-integration-test-1.1/debian/control +0 -0
  891. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +0 -0
  892. data/spec/data/apt/chef-integration-test-1.1/debian/files +0 -0
  893. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +0 -0
  894. data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +0 -0
  895. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +0 -0
  896. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +0 -0
  897. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +0 -0
  898. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +0 -0
  899. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +0 -0
  900. data/spec/data/apt/chef-integration-test2-1.0/debian/compat +0 -0
  901. data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +0 -0
  902. data/spec/data/apt/chef-integration-test2-1.0/debian/control +0 -0
  903. data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +0 -0
  904. data/spec/data/apt/chef-integration-test2-1.0/debian/files +0 -0
  905. data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +0 -0
  906. data/spec/data/apt/chef-integration-test2_1.0-1.debian.tar.gz +0 -0
  907. data/spec/data/apt/chef-integration-test2_1.0-1.dsc +0 -0
  908. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +0 -0
  909. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +0 -0
  910. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.deb +0 -0
  911. data/spec/data/apt/chef-integration-test2_1.0.orig.tar.gz +0 -0
  912. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +0 -0
  913. data/spec/data/apt/chef-integration-test_1.0-1_amd64.deb +0 -0
  914. data/spec/data/apt/chef-integration-test_1.0.orig.tar.gz +0 -0
  915. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +0 -0
  916. data/spec/data/apt/chef-integration-test_1.1-1_amd64.deb +0 -0
  917. data/spec/data/apt/chef-integration-test_1.1.orig.tar.gz +0 -0
  918. data/spec/data/apt/var/www/apt/conf/distributions +0 -0
  919. data/spec/data/apt/var/www/apt/conf/incoming +0 -0
  920. data/spec/data/apt/var/www/apt/conf/pulls +0 -0
  921. data/spec/data/apt/var/www/apt/db/checksums.db +0 -0
  922. data/spec/data/apt/var/www/apt/db/contents.cache.db +0 -0
  923. data/spec/data/apt/var/www/apt/db/packages.db +0 -0
  924. data/spec/data/apt/var/www/apt/db/references.db +0 -0
  925. data/spec/data/apt/var/www/apt/db/release.caches.db +0 -0
  926. data/spec/data/apt/var/www/apt/db/version +0 -0
  927. data/spec/data/apt/var/www/apt/dists/sid/Release +0 -0
  928. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +0 -0
  929. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages.gz +0 -0
  930. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +0 -0
  931. data/spec/data/apt/var/www/apt/dists/sid/main/binary-i386/Packages +0 -0
  932. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.0-1_amd64.deb +0 -0
  933. data/spec/data/apt/var/www/apt/pool/main/c/chef-integration-test/chef-integration-test_1.1-1_amd64.deb +0 -0
  934. data/spec/data/bad-config.rb +0 -0
  935. data/spec/data/bootstrap/encrypted_data_bag_secret +0 -0
  936. data/spec/data/bootstrap/no_proxy.erb +0 -0
  937. data/spec/data/bootstrap/secret.erb +0 -0
  938. data/spec/data/bootstrap/test-hints.erb +0 -0
  939. data/spec/data/bootstrap/test.erb +0 -0
  940. data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
  941. data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
  942. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +0 -0
  943. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +0 -0
  944. data/spec/data/cb_version_cookbooks/tatft/definitions/runit_service.rb +0 -0
  945. data/spec/data/cb_version_cookbooks/tatft/files/default/giant_blob.tgz +0 -0
  946. data/spec/data/cb_version_cookbooks/tatft/libraries/ownage.rb +0 -0
  947. data/spec/data/cb_version_cookbooks/tatft/providers/lwp.rb +0 -0
  948. data/spec/data/cb_version_cookbooks/tatft/recipes/default.rb +0 -0
  949. data/spec/data/cb_version_cookbooks/tatft/resources/lwr.rb +0 -0
  950. data/spec/data/cb_version_cookbooks/tatft/templates/default/configuration.erb +0 -0
  951. data/spec/data/checksum/random.txt +0 -0
  952. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +0 -0
  953. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-6m8zdk-0 +0 -0
  954. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +0 -0
  955. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +0 -0
  956. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +0 -0
  957. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +0 -0
  958. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +0 -0
  959. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +0 -0
  960. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +0 -0
  961. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +0 -0
  962. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +0 -0
  963. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +0 -0
  964. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +0 -0
  965. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +0 -0
  966. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +0 -0
  967. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +0 -0
  968. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +0 -0
  969. data/spec/data/client.d_00/00-foo.rb +0 -0
  970. data/spec/data/client.d_00/01-bar.rb +0 -0
  971. data/spec/data/client.d_00/02-strings.rb +0 -0
  972. data/spec/data/client.d_00/bar +0 -0
  973. data/spec/data/client.d_01/foo/bar.rb +0 -0
  974. data/spec/data/client.d_02/foo.rb/foo.txt +0 -0
  975. data/spec/data/config.rb +0 -0
  976. data/spec/data/cookbooks/angrybash/metadata.rb +0 -0
  977. data/spec/data/cookbooks/angrybash/recipes/default.rb +0 -0
  978. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +0 -0
  979. data/spec/data/cookbooks/apache2/metadata.rb +0 -0
  980. data/spec/data/cookbooks/apache2/recipes/default.rb +0 -0
  981. data/spec/data/cookbooks/borken/metadata.rb +0 -0
  982. data/spec/data/cookbooks/borken/recipes/default.rb +0 -0
  983. data/spec/data/cookbooks/borken/templates/default/borken.erb +0 -0
  984. data/spec/data/cookbooks/chefignore +0 -0
  985. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +0 -0
  986. data/spec/data/cookbooks/ignorken/metadata.rb +0 -0
  987. data/spec/data/cookbooks/ignorken/recipes/default.rb +0 -0
  988. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +0 -0
  989. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +0 -0
  990. data/spec/data/cookbooks/irssi/files/default/irssi.response +2 -0
  991. data/spec/data/cookbooks/java/files/default/java.response +0 -0
  992. data/spec/data/cookbooks/java/metadata.rb +0 -0
  993. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +0 -0
  994. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +0 -0
  995. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +0 -0
  996. data/spec/data/cookbooks/openldap/.root_dotfile +0 -0
  997. data/spec/data/cookbooks/openldap/attributes/default.rb +0 -0
  998. data/spec/data/cookbooks/openldap/attributes/smokey.rb +0 -0
  999. data/spec/data/cookbooks/openldap/definitions/client.rb +0 -0
  1000. data/spec/data/cookbooks/openldap/definitions/server.rb +0 -0
  1001. data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -0
  1002. data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -0
  1003. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -0
  1004. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +0 -0
  1005. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +0 -0
  1006. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +0 -0
  1007. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -0
  1008. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +0 -0
  1009. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +0 -0
  1010. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +0 -0
  1011. data/spec/data/cookbooks/openldap/libraries/openldap.rb +0 -0
  1012. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +0 -0
  1013. data/spec/data/cookbooks/openldap/metadata.rb +0 -0
  1014. data/spec/data/cookbooks/openldap/recipes/default.rb +0 -0
  1015. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +0 -0
  1016. data/spec/data/cookbooks/openldap/recipes/one.rb +0 -0
  1017. data/spec/data/cookbooks/openldap/recipes/return.rb +0 -0
  1018. data/spec/data/cookbooks/openldap/spec/spec_helper.rb +0 -0
  1019. data/spec/data/cookbooks/openldap/templates/default/all_windows_line_endings.erb +0 -0
  1020. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +0 -0
  1021. data/spec/data/cookbooks/openldap/templates/default/helpers.erb +0 -0
  1022. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +0 -0
  1023. data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +0 -0
  1024. data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +0 -0
  1025. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +0 -0
  1026. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +0 -0
  1027. data/spec/data/cookbooks/openldap/templates/default/openldap_stuff.conf.erb +0 -0
  1028. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +0 -0
  1029. data/spec/data/cookbooks/openldap/templates/default/some_windows_line_endings.erb +0 -0
  1030. data/spec/data/cookbooks/openldap/templates/default/test.erb +0 -0
  1031. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +0 -0
  1032. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +0 -0
  1033. data/spec/data/cookbooks/preseed/metadata.rb +0 -0
  1034. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +0 -0
  1035. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +0 -0
  1036. data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +0 -0
  1037. data/spec/data/cookbooks/wget/files/default/wget.response +2 -0
  1038. data/spec/data/definitions/test.rb +0 -0
  1039. data/spec/data/dsc_lcm.pfx +0 -0
  1040. data/spec/data/environment-config.rb +0 -0
  1041. data/spec/data/file-providers-method-snapshot-chef-11-4.json +0 -0
  1042. data/spec/data/fileedit/blank +0 -0
  1043. data/spec/data/fileedit/hosts +0 -0
  1044. data/spec/data/gems/chef-integration-test-0.1.0.gem +0 -0
  1045. data/spec/data/git_bundles/example-repo.gitbundle +0 -0
  1046. data/spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle +0 -0
  1047. data/spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle +0 -0
  1048. data/spec/data/git_bundles/sinatra-test-app.gitbundle +0 -0
  1049. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +0 -0
  1050. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +0 -0
  1051. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +0 -0
  1052. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +0 -0
  1053. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +0 -0
  1054. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +0 -0
  1055. data/spec/data/kitchen/chefignore +0 -0
  1056. data/spec/data/kitchen/openldap/attributes/default.rb +0 -0
  1057. data/spec/data/kitchen/openldap/attributes/robinson.rb +0 -0
  1058. data/spec/data/kitchen/openldap/definitions/client.rb +0 -0
  1059. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +0 -0
  1060. data/spec/data/kitchen/openldap/recipes/gigantor.rb +0 -0
  1061. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +0 -0
  1062. data/spec/data/kitchen/openldap/recipes/woot.rb +0 -0
  1063. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  1064. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  1065. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -0
  1066. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -0
  1067. data/spec/data/knife_subcommand/test_yourself.rb +0 -0
  1068. data/spec/data/lwrp/providers/buck_passer.rb +0 -0
  1069. data/spec/data/lwrp/providers/buck_passer_2.rb +0 -0
  1070. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +0 -0
  1071. data/spec/data/lwrp/providers/inline_compiler.rb +0 -0
  1072. data/spec/data/lwrp/providers/monkey_name_printer.rb +0 -0
  1073. data/spec/data/lwrp/providers/paint_drying_watcher.rb +0 -0
  1074. data/spec/data/lwrp/providers/thumb_twiddler.rb +0 -0
  1075. data/spec/data/lwrp/resources/bar.rb +0 -0
  1076. data/spec/data/lwrp/resources/buck_passer.rb +0 -0
  1077. data/spec/data/lwrp/resources/buck_passer_2.rb +0 -0
  1078. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +0 -0
  1079. data/spec/data/lwrp/resources/foo.rb +0 -0
  1080. data/spec/data/lwrp/resources/inline_compiler.rb +0 -0
  1081. data/spec/data/lwrp/resources/monkey_name_printer.rb +0 -0
  1082. data/spec/data/lwrp/resources/paint_drying_watcher.rb +0 -0
  1083. data/spec/data/lwrp/resources/thumb_twiddler.rb +0 -0
  1084. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +0 -0
  1085. data/spec/data/lwrp_const_scoping/resources/conflict.rb +0 -0
  1086. data/spec/data/lwrp_override/providers/buck_passer.rb +0 -0
  1087. data/spec/data/lwrp_override/resources/foo.rb +0 -0
  1088. data/spec/data/mac_users/10.9.plist.xml +0 -0
  1089. data/spec/data/mac_users/10.9.shadow.xml +0 -0
  1090. data/spec/data/metadata/quick_start/metadata.rb +0 -0
  1091. data/spec/data/mixin/invalid_data.rb +0 -0
  1092. data/spec/data/mixin/real_data.rb +0 -0
  1093. data/spec/data/nested.json +0 -0
  1094. data/spec/data/nodes/default.rb +0 -0
  1095. data/spec/data/nodes/test.example.com.rb +0 -0
  1096. data/spec/data/nodes/test.rb +0 -0
  1097. data/spec/data/null_config.rb +0 -0
  1098. data/spec/data/object_loader/environments/test.json +0 -0
  1099. data/spec/data/object_loader/environments/test.rb +0 -0
  1100. data/spec/data/object_loader/environments/test_json_class.json +0 -0
  1101. data/spec/data/object_loader/nodes/test.json +0 -0
  1102. data/spec/data/object_loader/nodes/test.rb +0 -0
  1103. data/spec/data/object_loader/nodes/test_json_class.json +0 -0
  1104. data/spec/data/object_loader/roles/test.json +0 -0
  1105. data/spec/data/object_loader/roles/test.rb +0 -0
  1106. data/spec/data/object_loader/roles/test_json_class.json +0 -0
  1107. data/spec/data/old_home_dir/my-dot-emacs +0 -0
  1108. data/spec/data/old_home_dir/my-dot-vim +0 -0
  1109. data/spec/data/partial_one.erb +0 -0
  1110. data/spec/data/prefer_metadata_json/metadata.json +0 -0
  1111. data/spec/data/prefer_metadata_json/metadata.rb +0 -0
  1112. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  1113. data/spec/data/recipes.tgz +0 -0
  1114. data/spec/data/recipes/test.rb +0 -0
  1115. data/spec/data/remote_directory_data/remote_dir_file.txt +0 -0
  1116. data/spec/data/remote_directory_data/remote_subdirectory/remote_subdir_file.txt +0 -0
  1117. data/spec/data/remote_file/nyan_cat.png +0 -0
  1118. data/spec/data/remote_file/nyan_cat.png.gz +0 -0
  1119. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +0 -0
  1120. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +0 -0
  1121. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +0 -0
  1122. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +0 -0
  1123. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +0 -0
  1124. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +0 -0
  1125. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +0 -0
  1126. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +0 -0
  1127. data/spec/data/root_alias_cookbooks/simple/attributes.rb +0 -0
  1128. data/spec/data/root_alias_cookbooks/simple/metadata.rb +0 -0
  1129. data/spec/data/root_alias_cookbooks/simple/recipe.rb +0 -0
  1130. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +0 -0
  1131. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +0 -0
  1132. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +0 -0
  1133. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +0 -0
  1134. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +0 -0
  1135. data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
  1136. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +0 -0
  1137. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +0 -0
  1138. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +0 -0
  1139. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +0 -0
  1140. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +0 -0
  1141. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +0 -0
  1142. data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
  1143. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +0 -0
  1144. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +0 -0
  1145. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +0 -0
  1146. data/spec/data/run_context/cookbooks/dependency1/attributes/unparsed_file +1 -0
  1147. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +0 -0
  1148. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +0 -0
  1149. data/spec/data/run_context/cookbooks/dependency1/definitions/unparsed_file +1 -0
  1150. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +0 -0
  1151. data/spec/data/run_context/cookbooks/dependency1/libraries/unparsed_file +1 -0
  1152. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +0 -0
  1153. data/spec/data/run_context/cookbooks/dependency1/providers/unparsed_file +1 -0
  1154. data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
  1155. data/spec/data/run_context/cookbooks/dependency1/recipes/unparsed_file +1 -0
  1156. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +0 -0
  1157. data/spec/data/run_context/cookbooks/dependency1/resources/unparsed_file +1 -0
  1158. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +0 -0
  1159. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +0 -0
  1160. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +0 -0
  1161. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +0 -0
  1162. data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
  1163. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +0 -0
  1164. data/spec/data/run_context/cookbooks/include/recipes/default.rb +0 -0
  1165. data/spec/data/run_context/cookbooks/include/recipes/includee.rb +0 -0
  1166. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +0 -0
  1167. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +0 -0
  1168. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +0 -0
  1169. data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
  1170. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +0 -0
  1171. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +0 -0
  1172. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +0 -0
  1173. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +0 -0
  1174. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +0 -0
  1175. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +0 -0
  1176. data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
  1177. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +0 -0
  1178. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +0 -0
  1179. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +0 -0
  1180. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +0 -0
  1181. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +0 -0
  1182. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +0 -0
  1183. data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
  1184. data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
  1185. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +0 -0
  1186. data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
  1187. data/spec/data/run_context/cookbooks/test/attributes/george.rb +0 -0
  1188. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +0 -0
  1189. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +0 -0
  1190. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +0 -0
  1191. data/spec/data/run_context/cookbooks/test/providers/provider.rb +0 -0
  1192. data/spec/data/run_context/cookbooks/test/recipes/default.rb +0 -0
  1193. data/spec/data/run_context/cookbooks/test/recipes/one.rb +0 -0
  1194. data/spec/data/run_context/cookbooks/test/recipes/two.rb +0 -0
  1195. data/spec/data/run_context/cookbooks/test/resources/resource.rb +0 -0
  1196. data/spec/data/run_context/nodes/run_context.rb +0 -0
  1197. data/spec/data/sample_msu1.xml +0 -0
  1198. data/spec/data/sample_msu2.xml +0 -0
  1199. data/spec/data/sample_msu3.xml +0 -0
  1200. data/spec/data/search_queries_to_transform.txt +0 -0
  1201. data/spec/data/shef-config.rb +0 -0
  1202. data/spec/data/snap_package/async_result_success.json +6 -0
  1203. data/spec/data/snap_package/change_id_result.json +175 -0
  1204. data/spec/data/snap_package/find_result_failure.json +10 -0
  1205. data/spec/data/snap_package/find_result_success.json +70 -0
  1206. data/spec/data/snap_package/get_by_name_result_failure.json +10 -0
  1207. data/spec/data/snap_package/get_by_name_result_success.json +38 -0
  1208. data/spec/data/snap_package/get_conf_success.json +10 -0
  1209. data/spec/data/snap_package/result_failure.json +9 -0
  1210. data/spec/data/ssl/5e707473.0 +0 -0
  1211. data/spec/data/ssl/chef-rspec.cert +0 -0
  1212. data/spec/data/ssl/chef-rspec.key +0 -0
  1213. data/spec/data/ssl/key.pem +0 -0
  1214. data/spec/data/ssl/private_key.pem +0 -0
  1215. data/spec/data/ssl/private_key_with_whitespace.pem +0 -0
  1216. data/spec/data/standalone_cookbook/Gemfile +0 -0
  1217. data/spec/data/standalone_cookbook/chefignore +0 -0
  1218. data/spec/data/standalone_cookbook/recipes/default.rb +0 -0
  1219. data/spec/data/standalone_cookbook/vendor/bundle/ruby/2.0.0/gems/multi_json-1.9.0/lib/multi_json.rb +0 -0
  1220. data/spec/data/templates/chef-seattle20160930-4388-1crv7ef.txt +0 -0
  1221. data/spec/data/templates/chef-seattle20160930-4388-jjfoae.txt +0 -0
  1222. data/spec/data/templates/chef-seattle20160930-4388-umeq2c.txt +0 -0
  1223. data/spec/data/templates/seattle.txt +0 -0
  1224. data/spec/data/trusted_certs/example.crt +0 -0
  1225. data/spec/data/trusted_certs/example_no_cn.crt +0 -0
  1226. data/spec/data/trusted_certs/intermediate.pem +0 -0
  1227. data/spec/data/trusted_certs/opscode.pem +0 -0
  1228. data/spec/data/trusted_certs/root.pem +0 -0
  1229. data/spec/data/trusted_certs_empty/.gitkeep +0 -0
  1230. data/spec/data/trusted_certs_empty/README.md +1 -0
  1231. data/spec/data/windows_certificates/base64_test.cer +0 -0
  1232. data/spec/data/windows_certificates/othertest.cer +0 -0
  1233. data/spec/data/windows_certificates/test.cer +0 -0
  1234. data/spec/data/windows_certificates/test.p7b +0 -0
  1235. data/spec/data/windows_certificates/test.pem +0 -0
  1236. data/spec/data/windows_certificates/test.pfx +0 -0
  1237. data/spec/functional/application_spec.rb +0 -0
  1238. data/spec/functional/assets/PkgA.1.0.0.0.bff +0 -0
  1239. data/spec/functional/assets/PkgA.2.0.0.0.bff +0 -0
  1240. data/spec/functional/assets/chocolatey_feed/test-A.1.0.nupkg +0 -0
  1241. data/spec/functional/assets/chocolatey_feed/test-A.1.5.nupkg +0 -0
  1242. data/spec/functional/assets/chocolatey_feed/test-A.2.0.nupkg +0 -0
  1243. data/spec/functional/assets/chocolatey_feed/test-B.1.0.nupkg +0 -0
  1244. data/spec/functional/assets/dummy-1-0.aix6.1.noarch.rpm +0 -0
  1245. data/spec/functional/assets/dummy-2-0.aix6.1.noarch.rpm +0 -0
  1246. data/spec/functional/assets/mytest-1.0-1.noarch.rpm +0 -0
  1247. data/spec/functional/assets/mytest-2.0-1.noarch.rpm +0 -0
  1248. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
  1249. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.i686.rpm +0 -0
  1250. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
  1251. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
  1252. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.s390x.rpm +0 -0
  1253. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.src.rpm +0 -0
  1254. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
  1255. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
  1256. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.i686.rpm +0 -0
  1257. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
  1258. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
  1259. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.s390x.rpm +0 -0
  1260. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.src.rpm +0 -0
  1261. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
  1262. data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
  1263. data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
  1264. data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
  1265. data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
  1266. data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
  1267. data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
  1268. data/spec/functional/assets/yumrepo/repodata/filelists.xml.gz +0 -0
  1269. data/spec/functional/assets/yumrepo/repodata/other.xml.gz +0 -0
  1270. data/spec/functional/assets/yumrepo/repodata/primary.xml.gz +0 -0
  1271. data/spec/functional/assets/yumrepo/repodata/repomd.xml +0 -0
  1272. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
  1273. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.i686.rpm +0 -0
  1274. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
  1275. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
  1276. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.s390x.rpm +0 -0
  1277. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.src.rpm +0 -0
  1278. data/spec/functional/assets/zypprepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
  1279. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
  1280. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.i686.rpm +0 -0
  1281. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
  1282. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
  1283. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.s390x.rpm +0 -0
  1284. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.src.rpm +0 -0
  1285. data/spec/functional/assets/zypprepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
  1286. data/spec/functional/dsl/reboot_pending_spec.rb +6 -7
  1287. data/spec/functional/dsl/registry_helper_spec.rb +0 -0
  1288. data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -8
  1289. data/spec/functional/file_content_management/deploy_strategies_spec.rb +21 -21
  1290. data/spec/functional/http/simple_spec.rb +0 -0
  1291. data/spec/functional/knife/configure_spec.rb +0 -0
  1292. data/spec/functional/knife/cookbook_delete_spec.rb +0 -0
  1293. data/spec/functional/knife/exec_spec.rb +1 -1
  1294. data/spec/functional/knife/rehash_spec.rb +0 -0
  1295. data/spec/functional/knife/smoke_test.rb +0 -0
  1296. data/spec/functional/knife/ssh_spec.rb +3 -3
  1297. data/spec/functional/mixin/from_file_spec.rb +0 -0
  1298. data/spec/functional/mixin/powershell_out_spec.rb +0 -0
  1299. data/spec/functional/mixin/shell_out_spec.rb +0 -30
  1300. data/spec/functional/mixin/user_context_spec.rb +1 -3
  1301. data/spec/functional/notifications_spec.rb +0 -0
  1302. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +0 -0
  1303. data/spec/functional/rebooter_spec.rb +1 -1
  1304. data/spec/functional/resource/aix_service_spec.rb +1 -1
  1305. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  1306. data/spec/functional/resource/apt_package_spec.rb +0 -0
  1307. data/spec/functional/resource/base.rb +0 -0
  1308. data/spec/functional/resource/bash_spec.rb +0 -0
  1309. data/spec/functional/resource/batch_spec.rb +0 -0
  1310. data/spec/functional/resource/bff_spec.rb +0 -0
  1311. data/spec/functional/resource/chocolatey_package_spec.rb +2 -2
  1312. data/spec/functional/resource/cookbook_file_spec.rb +3 -1
  1313. data/spec/functional/resource/cron_spec.rb +0 -1
  1314. data/spec/functional/resource/directory_spec.rb +0 -0
  1315. data/spec/functional/resource/dnf_package_spec.rb +5 -5
  1316. data/spec/functional/resource/dpkg_package_spec.rb +4 -4
  1317. data/spec/functional/resource/dsc_resource_spec.rb +1 -2
  1318. data/spec/functional/resource/dsc_script_spec.rb +11 -7
  1319. data/spec/functional/resource/execute_spec.rb +0 -0
  1320. data/spec/functional/resource/file_spec.rb +0 -0
  1321. data/spec/functional/resource/git_spec.rb +5 -5
  1322. data/spec/functional/resource/group_spec.rb +8 -43
  1323. data/spec/functional/resource/ifconfig_spec.rb +5 -3
  1324. data/spec/functional/resource/link_spec.rb +2 -2
  1325. data/spec/functional/resource/locale_spec.rb +97 -0
  1326. data/spec/functional/resource/mount_spec.rb +7 -3
  1327. data/spec/functional/resource/msu_package_spec.rb +0 -0
  1328. data/spec/functional/resource/ohai_spec.rb +0 -0
  1329. data/spec/functional/resource/powershell_script_spec.rb +21 -16
  1330. data/spec/functional/resource/reboot_spec.rb +1 -1
  1331. data/spec/functional/resource/registry_spec.rb +0 -0
  1332. data/spec/functional/resource/remote_directory_spec.rb +0 -0
  1333. data/spec/functional/resource/remote_file_spec.rb +2 -2
  1334. data/spec/functional/resource/rpm_spec.rb +0 -0
  1335. data/spec/functional/resource/template_spec.rb +1 -1
  1336. data/spec/functional/resource/timezone_spec.rb +0 -0
  1337. data/spec/functional/resource/user/dscl_spec.rb +3 -10
  1338. data/spec/functional/resource/user/windows_spec.rb +2 -2
  1339. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  1340. data/spec/functional/resource/windows_env_spec.rb +0 -0
  1341. data/spec/functional/resource/windows_package_spec.rb +0 -0
  1342. data/spec/functional/resource/windows_path_spec.rb +0 -0
  1343. data/spec/functional/resource/windows_service_spec.rb +3 -3
  1344. data/spec/functional/resource/windows_task_spec.rb +13 -12
  1345. data/spec/functional/resource/yum_package_spec.rb +20 -1
  1346. data/spec/functional/resource/zypper_package_spec.rb +0 -0
  1347. data/spec/functional/root_alias_spec.rb +0 -0
  1348. data/spec/functional/run_lock_spec.rb +3 -10
  1349. data/spec/functional/shell_spec.rb +1 -2
  1350. data/spec/functional/tiny_server_spec.rb +0 -0
  1351. data/spec/functional/util/path_helper_spec.rb +0 -0
  1352. data/spec/functional/util/powershell/cmdlet_spec.rb +3 -3
  1353. data/spec/functional/version_spec.rb +1 -1
  1354. data/spec/functional/win32/crypto_spec.rb +0 -0
  1355. data/spec/functional/win32/registry_spec.rb +0 -0
  1356. data/spec/functional/win32/security_spec.rb +7 -12
  1357. data/spec/functional/win32/service_manager_spec.rb +1 -1
  1358. data/spec/functional/win32/sid_spec.rb +0 -0
  1359. data/spec/functional/win32/version_info_spec.rb +4 -4
  1360. data/spec/functional/win32/versions_spec.rb +0 -0
  1361. data/spec/integration/client/client_spec.rb +142 -135
  1362. data/spec/integration/client/exit_code_spec.rb +3 -31
  1363. data/spec/integration/client/ipv6_spec.rb +2 -2
  1364. data/spec/integration/knife/chef_fs_data_store_spec.rb +25 -25
  1365. data/spec/integration/knife/chef_repo_path_spec.rb +6 -8
  1366. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -0
  1367. data/spec/integration/knife/chefignore_spec.rb +0 -0
  1368. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -0
  1369. data/spec/integration/knife/client_create_spec.rb +0 -0
  1370. data/spec/integration/knife/client_delete_spec.rb +0 -0
  1371. data/spec/integration/knife/client_key_create_spec.rb +0 -0
  1372. data/spec/integration/knife/client_key_delete_spec.rb +0 -0
  1373. data/spec/integration/knife/client_key_list_spec.rb +0 -0
  1374. data/spec/integration/knife/client_key_show_spec.rb +0 -0
  1375. data/spec/integration/knife/client_list_spec.rb +0 -0
  1376. data/spec/integration/knife/client_show_spec.rb +0 -0
  1377. data/spec/integration/knife/common_options_spec.rb +0 -0
  1378. data/spec/integration/knife/config_get_profile_spec.rb +0 -0
  1379. data/spec/integration/knife/config_get_spec.rb +1 -8
  1380. data/spec/integration/knife/config_list_profiles_spec.rb +1 -2
  1381. data/spec/integration/knife/config_use_profile_spec.rb +0 -0
  1382. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
  1383. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -0
  1384. data/spec/integration/knife/cookbook_download_spec.rb +1 -1
  1385. data/spec/integration/knife/cookbook_list_spec.rb +0 -0
  1386. data/spec/integration/knife/cookbook_show_spec.rb +0 -2
  1387. data/spec/integration/knife/cookbook_upload_spec.rb +0 -0
  1388. data/spec/integration/knife/data_bag_create_spec.rb +0 -0
  1389. data/spec/integration/knife/data_bag_delete_spec.rb +0 -0
  1390. data/spec/integration/knife/data_bag_edit_spec.rb +0 -0
  1391. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -0
  1392. data/spec/integration/knife/data_bag_list_spec.rb +0 -0
  1393. data/spec/integration/knife/data_bag_show_spec.rb +0 -0
  1394. data/spec/integration/knife/delete_spec.rb +0 -0
  1395. data/spec/integration/knife/deps_spec.rb +0 -0
  1396. data/spec/integration/knife/diff_spec.rb +9 -9
  1397. data/spec/integration/knife/download_spec.rb +1 -1
  1398. data/spec/integration/knife/environment_compare_spec.rb +0 -0
  1399. data/spec/integration/knife/environment_create_spec.rb +0 -0
  1400. data/spec/integration/knife/environment_delete_spec.rb +0 -0
  1401. data/spec/integration/knife/environment_from_file_spec.rb +0 -0
  1402. data/spec/integration/knife/environment_list_spec.rb +0 -0
  1403. data/spec/integration/knife/environment_show_spec.rb +0 -0
  1404. data/spec/integration/knife/list_spec.rb +0 -0
  1405. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -0
  1406. data/spec/integration/knife/node_create_spec.rb +0 -0
  1407. data/spec/integration/knife/node_delete_spec.rb +0 -0
  1408. data/spec/integration/knife/node_environment_set_spec.rb +0 -0
  1409. data/spec/integration/knife/node_from_file_spec.rb +0 -0
  1410. data/spec/integration/knife/node_list_spec.rb +0 -0
  1411. data/spec/integration/knife/node_run_list_add_spec.rb +0 -0
  1412. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -0
  1413. data/spec/integration/knife/node_run_list_set_spec.rb +0 -0
  1414. data/spec/integration/knife/node_show_spec.rb +0 -0
  1415. data/spec/integration/knife/raw_spec.rb +6 -6
  1416. data/spec/integration/knife/redirection_spec.rb +1 -1
  1417. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -0
  1418. data/spec/integration/knife/role_create_spec.rb +0 -0
  1419. data/spec/integration/knife/role_delete_spec.rb +0 -0
  1420. data/spec/integration/knife/role_from_file_spec.rb +0 -0
  1421. data/spec/integration/knife/role_list_spec.rb +0 -0
  1422. data/spec/integration/knife/role_show_spec.rb +0 -0
  1423. data/spec/integration/knife/search_node_spec.rb +0 -0
  1424. data/spec/integration/knife/serve_spec.rb +0 -0
  1425. data/spec/integration/knife/show_spec.rb +4 -4
  1426. data/spec/integration/knife/upload_spec.rb +4 -4
  1427. data/spec/integration/recipes/accumulator_spec.rb +5 -5
  1428. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +6 -6
  1429. data/spec/integration/recipes/lwrp_spec.rb +3 -3
  1430. data/spec/integration/recipes/noop_resource_spec.rb +0 -0
  1431. data/spec/integration/recipes/notifies_spec.rb +21 -21
  1432. data/spec/integration/recipes/notifying_block_spec.rb +6 -6
  1433. data/spec/integration/recipes/provider_choice.rb +2 -1
  1434. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  1435. data/spec/integration/recipes/remote_directory.rb +3 -3
  1436. data/spec/integration/recipes/resource_action_spec.rb +0 -0
  1437. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +0 -0
  1438. data/spec/integration/recipes/resource_load_spec.rb +0 -0
  1439. data/spec/integration/solo/solo_spec.rb +24 -24
  1440. data/spec/rcov.opts +0 -0
  1441. data/spec/scripts/ssl-serve.rb +0 -0
  1442. data/spec/spec_helper.rb +13 -16
  1443. data/spec/stress/win32/file_spec.rb +0 -0
  1444. data/spec/stress/win32/memory_spec.rb +0 -0
  1445. data/spec/stress/win32/security_spec.rb +1 -1
  1446. data/spec/support/chef_helpers.rb +3 -4
  1447. data/spec/support/key_helpers.rb +0 -0
  1448. data/spec/support/lib/chef/provider/easy.rb +0 -0
  1449. data/spec/support/lib/chef/provider/openldap_includer.rb +0 -0
  1450. data/spec/support/lib/chef/provider/snakeoil.rb +0 -0
  1451. data/spec/support/lib/chef/resource/cat.rb +0 -0
  1452. data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -0
  1453. data/spec/support/lib/chef/resource/openldap_includer.rb +0 -0
  1454. data/spec/support/lib/chef/resource/with_state.rb +0 -0
  1455. data/spec/support/lib/chef/resource/zen_follower.rb +1 -1
  1456. data/spec/support/lib/chef/resource/zen_master.rb +1 -1
  1457. data/spec/support/lib/library_load_order.rb +0 -0
  1458. data/spec/support/matchers/leak.rb +0 -0
  1459. data/spec/support/mock/constant.rb +0 -0
  1460. data/spec/support/mock/platform.rb +2 -2
  1461. data/spec/support/platform_helpers.rb +0 -34
  1462. data/spec/support/platforms/prof/gc.rb +1 -1
  1463. data/spec/support/platforms/prof/win32.rb +0 -0
  1464. data/spec/support/platforms/win32/spec_service.rb +10 -6
  1465. data/spec/support/shared/context/config.rb +0 -0
  1466. data/spec/support/shared/context/win32.rb +0 -0
  1467. data/spec/support/shared/functional/diff_disabled.rb +0 -0
  1468. data/spec/support/shared/functional/directory_resource.rb +0 -0
  1469. data/spec/support/shared/functional/execute_resource.rb +4 -4
  1470. data/spec/support/shared/functional/file_resource.rb +3 -1
  1471. data/spec/support/shared/functional/http.rb +39 -15
  1472. data/spec/support/shared/functional/knife.rb +0 -0
  1473. data/spec/support/shared/functional/securable_resource.rb +8 -4
  1474. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -0
  1475. data/spec/support/shared/functional/win32_service.rb +1 -1
  1476. data/spec/support/shared/functional/windows_script.rb +1 -2
  1477. data/spec/support/shared/integration/app_server_support.rb +4 -3
  1478. data/spec/support/shared/integration/integration_helper.rb +0 -1
  1479. data/spec/support/shared/integration/knife_support.rb +5 -5
  1480. data/spec/support/shared/matchers/exit_with_code.rb +0 -0
  1481. data/spec/support/shared/matchers/match_environment_variable.rb +0 -0
  1482. data/spec/support/shared/shared_examples.rb +0 -0
  1483. data/spec/support/shared/unit/api_error_inspector.rb +0 -0
  1484. data/spec/support/shared/unit/api_versioning.rb +0 -0
  1485. data/spec/support/shared/unit/application_dot_d.rb +4 -10
  1486. data/spec/support/shared/unit/execute_resource.rb +0 -0
  1487. data/spec/support/shared/unit/file_system_support.rb +2 -3
  1488. data/spec/support/shared/unit/knife_shared.rb +0 -0
  1489. data/spec/support/shared/unit/mock_shellout.rb +0 -0
  1490. data/spec/support/shared/unit/platform_introspector.rb +12 -12
  1491. data/spec/support/shared/unit/provider/file.rb +1 -1
  1492. data/spec/support/shared/unit/provider/package/package_shared.rb +95 -0
  1493. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +0 -0
  1494. data/spec/support/shared/unit/resource/static_provider_resolution.rb +0 -0
  1495. data/spec/support/shared/unit/script_resource.rb +2 -2
  1496. data/spec/support/shared/unit/user_and_client_shared.rb +0 -0
  1497. data/spec/support/shared/unit/windows_script_resource.rb +1 -1
  1498. data/spec/tiny_server.rb +1 -1
  1499. data/{bin/chef-apply → spec/unit/action_collection_spec.rb} +4 -9
  1500. data/spec/unit/api_client/registration_spec.rb +1 -1
  1501. data/spec/unit/api_client_spec.rb +5 -5
  1502. data/spec/unit/api_client_v1_spec.rb +6 -6
  1503. data/spec/unit/application/agent_spec.rb +0 -0
  1504. data/spec/unit/application/apply_spec.rb +0 -0
  1505. data/spec/unit/application/client_spec.rb +117 -81
  1506. data/spec/unit/application/exit_code_spec.rb +2 -13
  1507. data/spec/unit/application/knife_spec.rb +3 -6
  1508. data/spec/unit/application/server_spec.rb +0 -0
  1509. data/spec/unit/application/solo_spec.rb +2 -7
  1510. data/spec/unit/application_spec.rb +9 -2
  1511. data/spec/unit/chef_class_spec.rb +0 -0
  1512. data/spec/unit/chef_fs/config_spec.rb +3 -3
  1513. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +0 -0
  1514. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +0 -0
  1515. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +0 -0
  1516. data/spec/unit/chef_fs/diff_spec.rb +0 -0
  1517. data/spec/unit/chef_fs/file_pattern_spec.rb +0 -0
  1518. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +0 -0
  1519. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +0 -0
  1520. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +0 -0
  1521. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  1522. data/spec/unit/chef_fs/file_system_spec.rb +0 -0
  1523. data/spec/unit/chef_fs/parallelizer.rb +2 -4
  1524. data/spec/unit/chef_fs/path_util_spec.rb +0 -0
  1525. data/spec/unit/chef_spec.rb +0 -0
  1526. data/spec/unit/client_spec.rb +260 -70
  1527. data/spec/unit/config_fetcher_spec.rb +1 -1
  1528. data/spec/unit/config_spec.rb +0 -0
  1529. data/spec/unit/cookbook/chefignore_spec.rb +0 -0
  1530. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +2 -2
  1531. data/spec/unit/cookbook/file_vendor_spec.rb +0 -0
  1532. data/spec/unit/cookbook/gem_installer_spec.rb +2 -23
  1533. data/spec/unit/cookbook/manifest_v0_spec.rb +0 -0
  1534. data/spec/unit/cookbook/manifest_v2_spec.rb +0 -0
  1535. data/spec/unit/cookbook/metadata_spec.rb +4 -296
  1536. data/spec/unit/cookbook/synchronizer_spec.rb +4 -4
  1537. data/spec/unit/cookbook/syntax_check_spec.rb +0 -0
  1538. data/spec/unit/cookbook_loader_spec.rb +26 -63
  1539. data/spec/unit/cookbook_manifest_spec.rb +0 -0
  1540. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +2 -1
  1541. data/spec/unit/cookbook_spec.rb +0 -0
  1542. data/spec/unit/cookbook_uploader_spec.rb +0 -0
  1543. data/spec/unit/cookbook_version_file_specificity_spec.rb +9 -9
  1544. data/spec/unit/cookbook_version_spec.rb +1 -1
  1545. data/spec/unit/daemon_spec.rb +0 -0
  1546. data/spec/unit/data_bag_item_spec.rb +7 -7
  1547. data/spec/unit/data_bag_spec.rb +1 -1
  1548. data/spec/unit/data_collector_spec.rb +667 -661
  1549. data/spec/unit/decorator/lazy_array_spec.rb +0 -0
  1550. data/spec/unit/decorator/lazy_spec.rb +0 -0
  1551. data/spec/unit/decorator_spec.rb +2 -2
  1552. data/spec/unit/deprecated_spec.rb +2 -2
  1553. data/spec/unit/deprecation_spec.rb +0 -0
  1554. data/spec/unit/digester_spec.rb +0 -0
  1555. data/spec/unit/dsl/data_query_spec.rb +2 -3
  1556. data/spec/unit/dsl/declare_resource_spec.rb +1 -1
  1557. data/spec/unit/dsl/platform_introspection_spec.rb +2 -2
  1558. data/spec/unit/dsl/reboot_pending_spec.rb +0 -0
  1559. data/spec/unit/dsl/recipe_spec.rb +0 -0
  1560. data/spec/unit/dsl/registry_helper_spec.rb +0 -0
  1561. data/spec/unit/dsl/resources_spec.rb +0 -0
  1562. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +1 -2
  1563. data/spec/unit/encrypted_data_bag_item_spec.rb +1 -2
  1564. data/spec/unit/environment_spec.rb +9 -9
  1565. data/spec/unit/event_dispatch/dispatcher_spec.rb +51 -4
  1566. data/spec/unit/event_dispatch/dsl_spec.rb +1 -1
  1567. data/spec/unit/exceptions_spec.rb +0 -0
  1568. data/spec/unit/file_access_control_spec.rb +0 -0
  1569. data/spec/unit/file_cache_spec.rb +0 -0
  1570. data/spec/unit/file_content_management/deploy/cp_spec.rb +0 -0
  1571. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +3 -3
  1572. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +2 -2
  1573. data/spec/unit/file_content_management/tempfile_spec.rb +0 -0
  1574. data/spec/unit/formatters/base_spec.rb +0 -0
  1575. data/spec/unit/formatters/doc_spec.rb +0 -18
  1576. data/spec/unit/formatters/error_description_spec.rb +0 -0
  1577. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +0 -0
  1578. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +0 -0
  1579. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +0 -0
  1580. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +0 -0
  1581. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +0 -0
  1582. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +0 -0
  1583. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
  1584. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +0 -0
  1585. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  1586. data/spec/unit/guard_interpreter_spec.rb +0 -0
  1587. data/spec/unit/handler/json_file_spec.rb +0 -0
  1588. data/spec/unit/handler_spec.rb +0 -0
  1589. data/spec/unit/http/api_versions_spec.rb +0 -0
  1590. data/spec/unit/http/authenticator_spec.rb +2 -3
  1591. data/spec/unit/http/basic_client_spec.rb +0 -0
  1592. data/spec/unit/http/http_request_spec.rb +0 -0
  1593. data/spec/unit/http/json_input_spec.rb +1 -1
  1594. data/spec/unit/http/simple_spec.rb +0 -0
  1595. data/spec/unit/http/socketless_chef_zero_client_spec.rb +0 -0
  1596. data/spec/unit/http/ssl_policies_spec.rb +0 -0
  1597. data/spec/unit/http/validate_content_length_spec.rb +0 -0
  1598. data/spec/unit/http_spec.rb +0 -0
  1599. data/spec/unit/json_compat_spec.rb +0 -0
  1600. data/spec/unit/key_spec.rb +7 -7
  1601. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -0
  1602. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -0
  1603. data/spec/unit/knife/bootstrap/train_connector_spec.rb +216 -0
  1604. data/spec/unit/knife/bootstrap_spec.rb +1438 -255
  1605. data/spec/unit/knife/client_bulk_delete_spec.rb +4 -4
  1606. data/spec/unit/knife/client_create_spec.rb +1 -18
  1607. data/spec/unit/knife/client_delete_spec.rb +0 -0
  1608. data/spec/unit/knife/client_edit_spec.rb +0 -0
  1609. data/spec/unit/knife/client_list_spec.rb +0 -0
  1610. data/spec/unit/knife/client_reregister_spec.rb +0 -0
  1611. data/spec/unit/knife/client_show_spec.rb +0 -0
  1612. data/spec/unit/knife/configure_client_spec.rb +1 -1
  1613. data/spec/unit/knife/configure_spec.rb +1 -1
  1614. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +1 -1
  1615. data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
  1616. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  1617. data/spec/unit/knife/cookbook_list_spec.rb +0 -0
  1618. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -0
  1619. data/spec/unit/knife/cookbook_metadata_spec.rb +4 -4
  1620. data/spec/unit/knife/cookbook_show_spec.rb +0 -1
  1621. data/spec/unit/knife/cookbook_upload_spec.rb +4 -33
  1622. data/spec/unit/knife/core/bootstrap_context_spec.rb +38 -55
  1623. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -0
  1624. data/spec/unit/knife/core/gem_glob_loader_spec.rb +4 -4
  1625. data/spec/unit/knife/core/hashed_command_loader_spec.rb +2 -4
  1626. data/spec/unit/knife/core/node_editor_spec.rb +8 -8
  1627. data/spec/unit/knife/core/object_loader_spec.rb +0 -0
  1628. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -0
  1629. data/spec/unit/knife/core/ui_spec.rb +0 -0
  1630. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +278 -0
  1631. data/spec/unit/knife/data_bag_create_spec.rb +0 -0
  1632. data/spec/unit/knife/data_bag_edit_spec.rb +0 -0
  1633. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -2
  1634. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -0
  1635. data/spec/unit/knife/data_bag_show_spec.rb +1 -2
  1636. data/spec/unit/knife/environment_compare_spec.rb +0 -0
  1637. data/spec/unit/knife/environment_create_spec.rb +0 -0
  1638. data/spec/unit/knife/environment_delete_spec.rb +0 -0
  1639. data/spec/unit/knife/environment_edit_spec.rb +0 -0
  1640. data/spec/unit/knife/environment_from_file_spec.rb +0 -0
  1641. data/spec/unit/knife/environment_list_spec.rb +0 -0
  1642. data/spec/unit/knife/environment_show_spec.rb +0 -0
  1643. data/spec/unit/knife/key_create_spec.rb +1 -1
  1644. data/spec/unit/knife/key_delete_spec.rb +3 -3
  1645. data/spec/unit/knife/key_edit_spec.rb +4 -4
  1646. data/spec/unit/knife/key_helper.rb +0 -0
  1647. data/spec/unit/knife/key_list_spec.rb +1 -1
  1648. data/spec/unit/knife/key_show_spec.rb +3 -3
  1649. data/spec/unit/knife/node_bulk_delete_spec.rb +3 -3
  1650. data/spec/unit/knife/node_delete_spec.rb +2 -2
  1651. data/spec/unit/knife/node_edit_spec.rb +1 -1
  1652. data/spec/unit/knife/node_environment_set_spec.rb +1 -1
  1653. data/spec/unit/knife/node_from_file_spec.rb +1 -1
  1654. data/spec/unit/knife/node_list_spec.rb +0 -0
  1655. data/spec/unit/knife/node_policy_set_spec.rb +1 -1
  1656. data/spec/unit/knife/node_run_list_add_spec.rb +1 -1
  1657. data/spec/unit/knife/node_run_list_remove_spec.rb +1 -1
  1658. data/spec/unit/knife/node_run_list_set_spec.rb +1 -1
  1659. data/spec/unit/knife/node_show_spec.rb +1 -1
  1660. data/spec/unit/knife/raw_spec.rb +2 -2
  1661. data/spec/unit/knife/role_bulk_delete_spec.rb +2 -2
  1662. data/spec/unit/knife/role_create_spec.rb +1 -1
  1663. data/spec/unit/knife/role_delete_spec.rb +1 -1
  1664. data/spec/unit/knife/role_edit_spec.rb +1 -1
  1665. data/spec/unit/knife/role_env_run_list_add_spec.rb +1 -1
  1666. data/spec/unit/knife/role_env_run_list_clear_spec.rb +1 -1
  1667. data/spec/unit/knife/role_env_run_list_remove_spec.rb +1 -1
  1668. data/spec/unit/knife/role_env_run_list_replace_spec.rb +1 -1
  1669. data/spec/unit/knife/role_env_run_list_set_spec.rb +1 -1
  1670. data/spec/unit/knife/role_from_file_spec.rb +1 -1
  1671. data/spec/unit/knife/role_list_spec.rb +0 -0
  1672. data/spec/unit/knife/role_run_list_add_spec.rb +1 -1
  1673. data/spec/unit/knife/role_run_list_clear_spec.rb +1 -1
  1674. data/spec/unit/knife/role_run_list_remove_spec.rb +1 -1
  1675. data/spec/unit/knife/role_run_list_replace_spec.rb +1 -1
  1676. data/spec/unit/knife/role_run_list_set_spec.rb +1 -1
  1677. data/spec/unit/knife/role_show_spec.rb +0 -0
  1678. data/spec/unit/knife/ssh_spec.rb +17 -27
  1679. data/spec/unit/knife/ssl_check_spec.rb +0 -0
  1680. data/spec/unit/knife/ssl_fetch_spec.rb +0 -0
  1681. data/spec/unit/knife/status_spec.rb +2 -3
  1682. data/spec/unit/knife/supermarket_download_spec.rb +0 -0
  1683. data/spec/unit/knife/supermarket_install_spec.rb +4 -5
  1684. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  1685. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -0
  1686. data/spec/unit/knife/tag_create_spec.rb +0 -0
  1687. data/spec/unit/knife/tag_delete_spec.rb +0 -0
  1688. data/spec/unit/knife/tag_list_spec.rb +0 -0
  1689. data/spec/unit/knife/user_create_spec.rb +0 -30
  1690. data/spec/unit/knife/user_delete_spec.rb +1 -20
  1691. data/spec/unit/knife/user_edit_spec.rb +0 -18
  1692. data/spec/unit/knife/user_list_spec.rb +0 -0
  1693. data/spec/unit/knife/user_reregister_spec.rb +0 -18
  1694. data/spec/unit/knife/user_show_spec.rb +0 -19
  1695. data/spec/unit/knife_spec.rb +77 -53
  1696. data/spec/unit/log/syslog_spec.rb +0 -0
  1697. data/spec/unit/log/winevt_spec.rb +0 -0
  1698. data/spec/unit/log_spec.rb +0 -0
  1699. data/spec/unit/lwrp_spec.rb +19 -19
  1700. data/spec/unit/mash_spec.rb +0 -0
  1701. data/spec/unit/mixin/api_version_request_handling_spec.rb +0 -0
  1702. data/spec/unit/mixin/checksum_spec.rb +0 -0
  1703. data/spec/unit/mixin/convert_to_class_name_spec.rb +0 -0
  1704. data/spec/unit/mixin/deep_merge_spec.rb +0 -0
  1705. data/spec/unit/mixin/deprecation_spec.rb +0 -0
  1706. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +0 -0
  1707. data/spec/unit/mixin/homebrew_user_spec.rb +1 -1
  1708. data/spec/unit/mixin/lazy_module_include.rb +0 -0
  1709. data/spec/unit/mixin/openssl_helper_spec.rb +0 -0
  1710. data/spec/unit/mixin/params_validate_spec.rb +10 -10
  1711. data/spec/unit/mixin/path_sanity_spec.rb +0 -0
  1712. data/spec/unit/mixin/powershell_exec_spec.rb +0 -0
  1713. data/spec/unit/mixin/powershell_out_spec.rb +0 -0
  1714. data/spec/unit/mixin/powershell_type_coercions_spec.rb +0 -0
  1715. data/spec/unit/mixin/properties_spec.rb +4 -4
  1716. data/spec/unit/mixin/proxified_socket_spec.rb +0 -0
  1717. data/spec/unit/mixin/securable_spec.rb +0 -0
  1718. data/spec/unit/mixin/shell_out_spec.rb +3 -135
  1719. data/spec/unit/mixin/subclass_directive_spec.rb +0 -0
  1720. data/spec/unit/mixin/template_spec.rb +8 -49
  1721. data/spec/unit/mixin/unformatter_spec.rb +2 -1
  1722. data/spec/unit/mixin/uris_spec.rb +0 -0
  1723. data/spec/unit/mixin/user_context_spec.rb +2 -1
  1724. data/spec/unit/mixin/versioned_api_spec.rb +0 -0
  1725. data/spec/unit/mixin/which.rb +0 -2
  1726. data/spec/unit/mixin/windows_architecture_helper_spec.rb +3 -3
  1727. data/spec/unit/mixin/xml_escape_spec.rb +0 -0
  1728. data/spec/unit/monkey_patches/uri_spec.rb +0 -0
  1729. data/spec/unit/monologger_spec.rb +0 -0
  1730. data/spec/unit/node/attribute_spec.rb +45 -21
  1731. data/spec/unit/node/immutable_collections_spec.rb +49 -50
  1732. data/spec/unit/node/vivid_mash_spec.rb +106 -1
  1733. data/spec/unit/node_map_spec.rb +37 -3
  1734. data/spec/unit/node_spec.rb +12 -20
  1735. data/spec/unit/org_spec.rb +3 -3
  1736. data/spec/unit/platform/query_helpers_spec.rb +0 -0
  1737. data/spec/unit/policy_builder/dynamic_spec.rb +0 -12
  1738. data/spec/unit/policy_builder/expand_node_object_spec.rb +3 -3
  1739. data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
  1740. data/spec/unit/policy_builder_spec.rb +0 -0
  1741. data/spec/unit/property/state_spec.rb +25 -26
  1742. data/spec/unit/property/validation_spec.rb +13 -14
  1743. data/spec/unit/property_spec.rb +102 -10
  1744. data/spec/unit/provider/apt_preference_spec.rb +0 -0
  1745. data/spec/unit/provider/apt_repository_spec.rb +0 -0
  1746. data/spec/unit/provider/apt_update_spec.rb +6 -6
  1747. data/spec/unit/provider/cookbook_file/content_spec.rb +0 -0
  1748. data/spec/unit/provider/cookbook_file_spec.rb +0 -0
  1749. data/spec/unit/provider/cron/unix_spec.rb +0 -0
  1750. data/spec/unit/provider/cron_spec.rb +1 -1
  1751. data/spec/unit/provider/directory_spec.rb +0 -0
  1752. data/spec/unit/provider/dsc_resource_spec.rb +3 -6
  1753. data/spec/unit/provider/dsc_script_spec.rb +1 -1
  1754. data/spec/unit/provider/execute_spec.rb +0 -0
  1755. data/spec/unit/provider/file/content_spec.rb +0 -0
  1756. data/spec/unit/provider/file_spec.rb +0 -0
  1757. data/spec/unit/provider/git_spec.rb +38 -38
  1758. data/spec/unit/provider/group/dscl_spec.rb +1 -1
  1759. data/spec/unit/provider/group/gpasswd_spec.rb +0 -0
  1760. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  1761. data/spec/unit/provider/group/groupmod_spec.rb +0 -0
  1762. data/spec/unit/provider/group/pw_spec.rb +0 -0
  1763. data/spec/unit/provider/group/solaris_spec.rb +106 -0
  1764. data/spec/unit/provider/group/suse_spec.rb +0 -0
  1765. data/spec/unit/provider/group/usermod_spec.rb +0 -3
  1766. data/spec/unit/provider/group/windows_spec.rb +0 -0
  1767. data/spec/unit/provider/group_spec.rb +3 -2
  1768. data/spec/unit/provider/http_request_spec.rb +0 -0
  1769. data/spec/unit/provider/ifconfig/aix_spec.rb +0 -0
  1770. data/spec/unit/provider/ifconfig/debian_spec.rb +0 -0
  1771. data/spec/unit/provider/ifconfig/redhat_spec.rb +0 -0
  1772. data/spec/unit/provider/ifconfig_spec.rb +13 -53
  1773. data/spec/unit/provider/launchd_spec.rb +8 -16
  1774. data/spec/unit/provider/link_spec.rb +11 -22
  1775. data/spec/unit/provider/log_spec.rb +0 -0
  1776. data/spec/unit/provider/mdadm_spec.rb +0 -0
  1777. data/spec/unit/provider/mount/aix_spec.rb +0 -0
  1778. data/spec/unit/provider/mount/mount_spec.rb +31 -31
  1779. data/spec/unit/provider/mount/solaris_spec.rb +11 -11
  1780. data/spec/unit/provider/mount/windows_spec.rb +0 -0
  1781. data/spec/unit/provider/mount_spec.rb +0 -0
  1782. data/spec/unit/provider/ohai_spec.rb +1 -1
  1783. data/spec/unit/provider/osx_profile_spec.rb +7 -5
  1784. data/spec/unit/provider/package/apt_spec.rb +31 -9
  1785. data/spec/unit/provider/package/bff_spec.rb +1 -1
  1786. data/spec/unit/provider/package/cab_spec.rb +1 -1
  1787. data/spec/unit/provider/package/chocolatey_spec.rb +8 -8
  1788. data/spec/unit/provider/package/deb_spec.rb +135 -0
  1789. data/spec/unit/provider/package/dnf/python_helper_spec.rb +0 -0
  1790. data/spec/unit/provider/package/dpkg_spec.rb +28 -1
  1791. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +0 -1
  1792. data/spec/unit/provider/package/freebsd/port_spec.rb +2 -14
  1793. data/spec/unit/provider/package/homebrew_spec.rb +0 -0
  1794. data/spec/unit/provider/package/ips_spec.rb +0 -0
  1795. data/spec/unit/provider/package/macports_spec.rb +0 -0
  1796. data/spec/unit/provider/package/msu_spec.rb +1 -1
  1797. data/spec/unit/provider/package/openbsd_spec.rb +11 -15
  1798. data/spec/unit/provider/package/pacman_spec.rb +0 -0
  1799. data/spec/unit/provider/package/paludis_spec.rb +0 -0
  1800. data/spec/unit/provider/package/portage_spec.rb +0 -0
  1801. data/spec/unit/provider/package/powershell_spec.rb +1 -1
  1802. data/spec/unit/provider/package/rpm_spec.rb +18 -7
  1803. data/spec/unit/provider/package/rubygems_spec.rb +0 -0
  1804. data/spec/unit/provider/package/smartos_spec.rb +3 -3
  1805. data/spec/unit/provider/package/snap_spec.rb +208 -0
  1806. data/spec/unit/provider/package/solaris_spec.rb +0 -0
  1807. data/spec/unit/provider/package/windows/exe_spec.rb +9 -9
  1808. data/spec/unit/provider/package/windows/msi_spec.rb +7 -7
  1809. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +0 -0
  1810. data/spec/unit/provider/package/windows_spec.rb +1 -2
  1811. data/spec/unit/provider/package/yum/python_helper_spec.rb +0 -0
  1812. data/spec/unit/provider/package/yum/yum_cache_spec.rb +1 -1
  1813. data/spec/unit/provider/package/zypper_spec.rb +22 -31
  1814. data/spec/unit/provider/package_spec.rb +1 -223
  1815. data/spec/unit/provider/powershell_script_spec.rb +25 -16
  1816. data/spec/unit/provider/registry_key_spec.rb +1 -1
  1817. data/spec/unit/provider/remote_directory_spec.rb +6 -6
  1818. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +0 -0
  1819. data/spec/unit/provider/remote_file/content_spec.rb +0 -0
  1820. data/spec/unit/provider/remote_file/fetcher_spec.rb +0 -0
  1821. data/spec/unit/provider/remote_file/ftp_spec.rb +0 -0
  1822. data/spec/unit/provider/remote_file/http_spec.rb +0 -0
  1823. data/spec/unit/provider/remote_file/local_file_spec.rb +0 -0
  1824. data/spec/unit/provider/remote_file/network_file_spec.rb +0 -0
  1825. data/spec/unit/provider/remote_file/sftp_spec.rb +0 -0
  1826. data/spec/unit/provider/remote_file_spec.rb +0 -0
  1827. data/spec/unit/provider/route_spec.rb +11 -11
  1828. data/spec/unit/provider/ruby_block_spec.rb +0 -0
  1829. data/spec/unit/provider/script_spec.rb +0 -0
  1830. data/spec/unit/provider/service/aix_service_spec.rb +0 -0
  1831. data/spec/unit/provider/service/aixinit_service_spec.rb +0 -0
  1832. data/spec/unit/provider/service/arch_service_spec.rb +11 -11
  1833. data/spec/unit/provider/service/debian_service_spec.rb +1 -2
  1834. data/spec/unit/provider/service/freebsd_service_spec.rb +19 -23
  1835. data/spec/unit/provider/service/gentoo_service_spec.rb +2 -2
  1836. data/spec/unit/provider/service/init_service_spec.rb +9 -9
  1837. data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
  1838. data/spec/unit/provider/service/invokercd_service_spec.rb +9 -9
  1839. data/spec/unit/provider/service/macosx_spec.rb +1 -1
  1840. data/spec/unit/provider/service/openbsd_service_spec.rb +11 -15
  1841. data/spec/unit/provider/service/redhat_spec.rb +0 -0
  1842. data/spec/unit/provider/service/simple_service_spec.rb +5 -5
  1843. data/spec/unit/provider/service/solaris_smf_service_spec.rb +0 -0
  1844. data/spec/unit/provider/service/systemd_service_spec.rb +2 -26
  1845. data/spec/unit/provider/service/upstart_service_spec.rb +14 -14
  1846. data/spec/unit/provider/service/windows_spec.rb +168 -144
  1847. data/spec/unit/provider/service_spec.rb +0 -0
  1848. data/spec/unit/provider/subversion_spec.rb +4 -8
  1849. data/spec/unit/provider/systemd_unit_spec.rb +148 -197
  1850. data/spec/unit/provider/template/content_spec.rb +28 -28
  1851. data/spec/unit/provider/template_spec.rb +0 -0
  1852. data/spec/unit/provider/user/aix_spec.rb +0 -0
  1853. data/spec/unit/provider/user/dscl_spec.rb +99 -321
  1854. data/spec/unit/provider/user/linux_spec.rb +0 -1
  1855. data/spec/unit/provider/user/pw_spec.rb +0 -0
  1856. data/spec/unit/provider/user/solaris_spec.rb +0 -0
  1857. data/spec/unit/provider/user/windows_spec.rb +0 -0
  1858. data/spec/unit/provider/user_spec.rb +46 -62
  1859. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -0
  1860. data/spec/unit/provider/windows_env_spec.rb +0 -0
  1861. data/spec/unit/provider/windows_path_spec.rb +0 -0
  1862. data/spec/unit/provider/windows_task_spec.rb +2 -7
  1863. data/spec/unit/provider/yum_repository_spec.rb +0 -0
  1864. data/spec/unit/provider/zypper_repository_spec.rb +0 -0
  1865. data/spec/unit/provider_resolver_spec.rb +8 -31
  1866. data/spec/unit/provider_spec.rb +4 -2
  1867. data/spec/unit/pure_application_spec.rb +0 -0
  1868. data/spec/unit/recipe_spec.rb +3 -8
  1869. data/spec/unit/resource/apt_package_spec.rb +10 -0
  1870. data/spec/unit/resource/apt_preference_spec.rb +0 -0
  1871. data/spec/unit/resource/apt_repository_spec.rb +0 -0
  1872. data/spec/unit/resource/apt_update_spec.rb +0 -0
  1873. data/spec/unit/resource/archive_file_spec.rb +47 -0
  1874. data/spec/unit/resource/bash_spec.rb +0 -0
  1875. data/spec/unit/resource/batch_spec.rb +1 -1
  1876. data/spec/unit/resource/bff_package_spec.rb +0 -0
  1877. data/spec/unit/resource/breakpoint_spec.rb +0 -0
  1878. data/spec/unit/resource/build_essential_spec.rb +0 -0
  1879. data/spec/unit/resource/cab_package_spec.rb +0 -0
  1880. data/spec/unit/resource/chef_gem_spec.rb +1 -4
  1881. data/spec/unit/resource/chef_handler_spec.rb +0 -0
  1882. data/spec/unit/resource/chocolatey_config_spec.rb +0 -5
  1883. data/spec/unit/resource/chocolatey_package_spec.rb +0 -0
  1884. data/spec/unit/resource/chocolatey_source_spec.rb +0 -5
  1885. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +0 -0
  1886. data/spec/unit/resource/conditional_spec.rb +0 -0
  1887. data/spec/unit/resource/cookbook_file_spec.rb +0 -0
  1888. data/spec/unit/resource/cron_access_spec.rb +0 -0
  1889. data/spec/unit/resource/cron_d_spec.rb +0 -0
  1890. data/spec/unit/resource/cron_spec.rb +0 -0
  1891. data/spec/unit/resource/csh_spec.rb +0 -0
  1892. data/spec/unit/resource/directory_spec.rb +1 -1
  1893. data/spec/unit/resource/dmg_package_spec.rb +0 -0
  1894. data/spec/unit/resource/dnf_package_spec.rb +1 -1
  1895. data/spec/unit/resource/dpkg_package_spec.rb +10 -0
  1896. data/spec/unit/resource/dsc_resource_spec.rb +1 -1
  1897. data/spec/unit/resource/dsc_script_spec.rb +0 -0
  1898. data/spec/unit/resource/execute_spec.rb +0 -0
  1899. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +0 -0
  1900. data/spec/unit/resource/file/verification_spec.rb +2 -1
  1901. data/spec/unit/resource/file_spec.rb +1 -1
  1902. data/spec/unit/resource/freebsd_package_spec.rb +1 -27
  1903. data/spec/unit/resource/gem_package_spec.rb +0 -0
  1904. data/spec/unit/resource/git_spec.rb +0 -0
  1905. data/spec/unit/resource/group_spec.rb +1 -1
  1906. data/spec/unit/resource/homebrew_cask_spec.rb +0 -0
  1907. data/spec/unit/resource/homebrew_package_spec.rb +0 -0
  1908. data/spec/unit/resource/homebrew_tap_spec.rb +0 -0
  1909. data/spec/unit/resource/hostname_spec.rb +0 -0
  1910. data/spec/unit/resource/http_request_spec.rb +0 -0
  1911. data/spec/unit/resource/ifconfig_spec.rb +0 -0
  1912. data/spec/unit/resource/ips_package_spec.rb +0 -0
  1913. data/spec/unit/resource/kernel_module_spec.rb +0 -5
  1914. data/spec/unit/resource/ksh_spec.rb +0 -0
  1915. data/spec/unit/resource/launchd_spec.rb +0 -0
  1916. data/spec/unit/resource/link_spec.rb +1 -1
  1917. data/spec/unit/resource/locale_spec.rb +185 -22
  1918. data/spec/unit/resource/log_spec.rb +0 -0
  1919. data/spec/unit/resource/macos_user_defaults_spec.rb +0 -0
  1920. data/spec/unit/{knife/osc_user_list_spec.rb → resource/macosx_service.rb} +14 -14
  1921. data/spec/unit/resource/macports_package_spec.rb +0 -0
  1922. data/spec/unit/resource/mdadm_spec.rb +0 -0
  1923. data/spec/unit/resource/mount_spec.rb +0 -0
  1924. data/spec/unit/resource/msu_package_spec.rb +0 -0
  1925. data/spec/unit/resource/ohai_hint_spec.rb +0 -0
  1926. data/spec/unit/resource/ohai_spec.rb +0 -4
  1927. data/spec/unit/resource/openbsd_package_spec.rb +0 -0
  1928. data/spec/unit/resource/{openssl_dhparam.rb → openssl_dhparam_spec.rb} +0 -0
  1929. data/spec/unit/resource/openssl_ec_private_key_spec.rb +0 -0
  1930. data/spec/unit/resource/openssl_ec_public_key_spec.rb +0 -0
  1931. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +0 -0
  1932. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +0 -0
  1933. data/spec/unit/resource/openssl_x509_certificate_spec.rb +0 -0
  1934. data/spec/unit/resource/openssl_x509_crl_spec.rb +0 -0
  1935. data/spec/unit/resource/openssl_x509_request.rb +0 -0
  1936. data/spec/unit/resource/osx_profile_spec.rb +1 -2
  1937. data/spec/unit/resource/package_spec.rb +0 -10
  1938. data/spec/unit/resource/pacman_package_spec.rb +0 -0
  1939. data/spec/unit/resource/paludis_package_spec.rb +0 -0
  1940. data/spec/unit/resource/perl_spec.rb +0 -0
  1941. data/spec/unit/resource/portage_package_spec.rb +0 -0
  1942. data/spec/unit/resource/powershell_package_source_spec.rb +0 -0
  1943. data/spec/unit/resource/powershell_package_spec.rb +0 -0
  1944. data/spec/unit/resource/powershell_script_spec.rb +30 -13
  1945. data/spec/unit/resource/python_spec.rb +0 -0
  1946. data/spec/unit/resource/reboot_spec.rb +0 -0
  1947. data/spec/unit/resource/registry_key_spec.rb +3 -3
  1948. data/spec/unit/resource/remote_directory_spec.rb +22 -9
  1949. data/spec/unit/resource/remote_file_spec.rb +0 -0
  1950. data/spec/unit/resource/resource_notification_spec.rb +0 -0
  1951. data/spec/unit/resource/rhsm_errata_level_spec.rb +0 -0
  1952. data/spec/unit/resource/rhsm_errata_spec.rb +0 -0
  1953. data/spec/unit/resource/rhsm_register_spec.rb +0 -0
  1954. data/spec/unit/resource/rhsm_repo_spec.rb +0 -0
  1955. data/spec/unit/resource/rhsm_subscription_spec.rb +0 -0
  1956. data/spec/unit/resource/route_spec.rb +7 -2
  1957. data/spec/unit/resource/rpm_package_spec.rb +0 -0
  1958. data/spec/unit/resource/ruby_block_spec.rb +0 -0
  1959. data/spec/unit/resource/ruby_spec.rb +0 -0
  1960. data/spec/unit/resource/scm_spec.rb +0 -0
  1961. data/spec/unit/resource/script_spec.rb +0 -0
  1962. data/spec/unit/resource/service_spec.rb +76 -83
  1963. data/spec/unit/resource/smartos_package_spec.rb +0 -0
  1964. data/spec/unit/resource/snap_package_spec.rb +60 -0
  1965. data/spec/unit/resource/solaris_package_spec.rb +0 -0
  1966. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +0 -5
  1967. data/spec/unit/resource/subversion_spec.rb +0 -0
  1968. data/spec/unit/resource/sudo_spec.rb +0 -0
  1969. data/spec/unit/resource/swap_file_spec.rb +0 -0
  1970. data/spec/unit/resource/sysctl_spec.rb +0 -0
  1971. data/spec/unit/resource/systemd_unit_spec.rb +0 -0
  1972. data/spec/unit/resource/template_spec.rb +2 -2
  1973. data/spec/unit/resource/{timezone.rb → timezone_spec.rb} +0 -0
  1974. data/spec/unit/resource/user_spec.rb +21 -22
  1975. data/spec/unit/resource/windows_ad_join_spec.rb +0 -0
  1976. data/spec/unit/resource/windows_auto_run_spec.rb +0 -0
  1977. data/spec/unit/resource/{windows_certificate.rb → windows_certificate_spec.rb} +0 -0
  1978. data/spec/unit/resource/windows_dfs_folder_spec.rb +39 -0
  1979. data/spec/unit/resource/windows_dfs_namespace_spec.rb +39 -0
  1980. data/spec/unit/{audit/rspec_formatter_spec.rb → resource/windows_dfs_server_spec.rb} +14 -9
  1981. data/spec/unit/resource/windows_dns_record_spec.rb +55 -0
  1982. data/spec/unit/resource/windows_dns_zone_spec.rb +51 -0
  1983. data/spec/unit/resource/windows_env_spec.rb +1 -1
  1984. data/spec/unit/resource/{windows_feature_dism.rb → windows_feature_dism_spec.rb} +0 -0
  1985. data/spec/unit/resource/{windows_feature_powershell.rb → windows_feature_powershell_spec.rb} +0 -0
  1986. data/spec/unit/resource/{windows_feature.rb → windows_feature_spec.rb} +0 -0
  1987. data/spec/unit/resource/windows_firewall_rule_spec.rb +0 -0
  1988. data/spec/unit/resource/windows_font_spec.rb +0 -0
  1989. data/spec/unit/resource/windows_package_spec.rb +0 -0
  1990. data/spec/unit/resource/windows_pagefile_spec.rb +0 -0
  1991. data/spec/unit/resource/windows_path_spec.rb +0 -0
  1992. data/spec/unit/resource/windows_printer_port_spec.rb +0 -0
  1993. data/spec/unit/resource/windows_printer_spec.rb +0 -0
  1994. data/spec/unit/resource/windows_service_spec.rb +33 -18
  1995. data/spec/unit/resource/{windows_share.rb → windows_share_spec.rb} +0 -0
  1996. data/spec/unit/resource/windows_shortcut_spec.rb +0 -0
  1997. data/spec/unit/resource/windows_task_spec.rb +2 -2
  1998. data/spec/unit/resource/windows_uac_spec.rb +50 -0
  1999. data/spec/unit/resource/windows_workgroup_spec.rb +0 -0
  2000. data/spec/unit/resource/yum_package_spec.rb +1 -1
  2001. data/spec/unit/resource/yum_repository_spec.rb +0 -0
  2002. data/spec/unit/resource/zypper_package_spec.rb +0 -0
  2003. data/spec/unit/resource/zypper_repository_spec.rb +0 -0
  2004. data/spec/unit/resource_builder_spec.rb +0 -0
  2005. data/spec/unit/resource_collection/resource_list_spec.rb +1 -1
  2006. data/spec/unit/resource_collection/resource_set_spec.rb +7 -7
  2007. data/spec/unit/resource_collection/stepable_iterator_spec.rb +2 -2
  2008. data/spec/unit/resource_collection_spec.rb +4 -12
  2009. data/spec/unit/resource_definition_spec.rb +2 -2
  2010. data/spec/unit/resource_inspector_spec.rb +1 -1
  2011. data/spec/unit/resource_reporter_spec.rb +224 -198
  2012. data/spec/unit/resource_resolver_spec.rb +0 -0
  2013. data/spec/unit/resource_spec.rb +44 -21
  2014. data/spec/unit/role_spec.rb +2 -2
  2015. data/spec/unit/run_context/child_run_context_spec.rb +0 -7
  2016. data/spec/unit/run_context/cookbook_compiler_spec.rb +36 -24
  2017. data/spec/unit/run_context_spec.rb +1 -1
  2018. data/spec/unit/run_list/run_list_expansion_spec.rb +6 -9
  2019. data/spec/unit/run_list/run_list_item_spec.rb +0 -0
  2020. data/spec/unit/run_list/versioned_recipe_list_spec.rb +0 -0
  2021. data/spec/unit/run_list_spec.rb +1 -1
  2022. data/spec/unit/run_lock_spec.rb +0 -0
  2023. data/spec/unit/run_status_spec.rb +0 -0
  2024. data/spec/unit/runner_spec.rb +3 -3
  2025. data/spec/unit/scan_access_control_spec.rb +0 -0
  2026. data/spec/unit/search/query_spec.rb +2 -3
  2027. data/spec/unit/server_api_spec.rb +0 -0
  2028. data/spec/unit/server_api_versions_spec.rb +0 -0
  2029. data/spec/unit/shell/model_wrapper_spec.rb +1 -1
  2030. data/spec/unit/shell/shell_ext_spec.rb +0 -0
  2031. data/spec/unit/shell/shell_session_spec.rb +11 -8
  2032. data/spec/unit/shell_spec.rb +2 -1
  2033. data/spec/unit/train_transport_spec.rb +79 -0
  2034. data/spec/unit/user_spec.rb +4 -4
  2035. data/spec/unit/user_v1_spec.rb +3 -3
  2036. data/spec/unit/util/backup_spec.rb +1 -1
  2037. data/spec/unit/util/diff_spec.rb +0 -0
  2038. data/spec/unit/util/dsc/configuration_generator_spec.rb +0 -0
  2039. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +0 -0
  2040. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +0 -0
  2041. data/spec/unit/util/dsc/resource_store.rb +0 -0
  2042. data/spec/unit/util/editor_spec.rb +1 -1
  2043. data/spec/unit/util/file_edit_spec.rb +0 -0
  2044. data/spec/unit/util/powershell/cmdlet_spec.rb +0 -0
  2045. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -3
  2046. data/spec/unit/util/selinux_spec.rb +0 -0
  2047. data/spec/unit/util/threaded_job_queue_spec.rb +2 -2
  2048. data/spec/unit/util/windows/logon_session_spec.rb +0 -0
  2049. data/spec/unit/version/platform_spec.rb +0 -0
  2050. data/spec/unit/version_class_spec.rb +4 -4
  2051. data/spec/unit/version_constraint/platform_spec.rb +0 -0
  2052. data/spec/unit/version_constraint_spec.rb +0 -0
  2053. data/spec/unit/version_string_spec.rb +0 -0
  2054. data/spec/unit/win32/error_spec.rb +0 -0
  2055. data/spec/unit/win32/link_spec.rb +0 -0
  2056. data/spec/unit/win32/registry_spec.rb +5 -5
  2057. data/spec/unit/win32/security_spec.rb +1 -2
  2058. data/spec/unit/windows_service_spec.rb +0 -0
  2059. data/tasks/announce.rb +0 -0
  2060. data/tasks/bin/run_external_test +5 -1
  2061. data/tasks/dependencies.rb +0 -0
  2062. data/tasks/rspec.rb +0 -0
  2063. data/tasks/templates/release.md.erb +0 -0
  2064. metadata +169 -162
  2065. data/bin/chef-client +0 -25
  2066. data/bin/chef-resource-inspector +0 -26
  2067. data/bin/chef-shell +0 -31
  2068. data/lib/chef/audit/audit_event_proxy.rb +0 -93
  2069. data/lib/chef/audit/audit_reporter.rb +0 -176
  2070. data/lib/chef/audit/control_group_data.rb +0 -145
  2071. data/lib/chef/audit/logger.rb +0 -36
  2072. data/lib/chef/audit/rspec_formatter.rb +0 -37
  2073. data/lib/chef/audit/runner.rb +0 -196
  2074. data/lib/chef/data_collector/messages.rb +0 -100
  2075. data/lib/chef/data_collector/messages/helpers.rb +0 -159
  2076. data/lib/chef/data_collector/resource_report.rb +0 -123
  2077. data/lib/chef/dsl/audit.rb +0 -51
  2078. data/lib/chef/dsl/chef_provisioning.rb +0 -57
  2079. data/lib/chef/knife/cookbook_create.rb +0 -29
  2080. data/lib/chef/knife/cookbook_test.rb +0 -95
  2081. data/lib/chef/knife/osc_user_create.rb +0 -97
  2082. data/lib/chef/knife/osc_user_delete.rb +0 -51
  2083. data/lib/chef/knife/osc_user_edit.rb +0 -58
  2084. data/lib/chef/knife/osc_user_list.rb +0 -47
  2085. data/lib/chef/knife/osc_user_reregister.rb +0 -64
  2086. data/lib/chef/knife/osc_user_show.rb +0 -53
  2087. data/lib/chef/provider/package/freebsd/pkg.rb +0 -114
  2088. data/lib/chef/provider/user/useradd.rb +0 -161
  2089. data/spec/data/mac_users/10.7-8.plist.xml +0 -559
  2090. data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
  2091. data/spec/data/mac_users/10.7.plist.xml +0 -559
  2092. data/spec/data/mac_users/10.7.shadow.xml +0 -11
  2093. data/spec/data/mac_users/10.8.plist.xml +0 -559
  2094. data/spec/data/mac_users/10.8.shadow.xml +0 -21
  2095. data/spec/data/templates/failed.erb +0 -5
  2096. data/spec/functional/assets/inittest +0 -36
  2097. data/spec/functional/audit/rspec_formatter_spec.rb +0 -54
  2098. data/spec/functional/audit/runner_spec.rb +0 -121
  2099. data/spec/functional/resource/insserv_spec.rb +0 -206
  2100. data/spec/integration/recipes/unified_mode_spec.rb +0 -876
  2101. data/spec/support/shared/context/client.rb +0 -306
  2102. data/spec/support/shared/examples/client.rb +0 -104
  2103. data/spec/unit/audit/audit_event_proxy_spec.rb +0 -325
  2104. data/spec/unit/audit/audit_reporter_spec.rb +0 -444
  2105. data/spec/unit/audit/control_group_data_spec.rb +0 -487
  2106. data/spec/unit/audit/logger_spec.rb +0 -42
  2107. data/spec/unit/audit/runner_spec.rb +0 -144
  2108. data/spec/unit/data_collector/messages/helpers_spec.rb +0 -202
  2109. data/spec/unit/data_collector/messages_spec.rb +0 -329
  2110. data/spec/unit/data_collector/resource_report_spec.rb +0 -145
  2111. data/spec/unit/dsl/audit_spec.rb +0 -43
  2112. data/spec/unit/knife/cookbook_create_spec.rb +0 -42
  2113. data/spec/unit/knife/cookbook_test_spec.rb +0 -84
  2114. data/spec/unit/knife/osc_user_create_spec.rb +0 -93
  2115. data/spec/unit/knife/osc_user_delete_spec.rb +0 -44
  2116. data/spec/unit/knife/osc_user_edit_spec.rb +0 -52
  2117. data/spec/unit/knife/osc_user_reregister_spec.rb +0 -58
  2118. data/spec/unit/knife/osc_user_show_spec.rb +0 -46
  2119. data/spec/unit/provider/package/freebsd/pkg_spec.rb +0 -274
File without changes
@@ -24,7 +24,6 @@ describe Chef::CookbookLoader do
24
24
  end
25
25
  let(:repo_paths) do
26
26
  [
27
- File.expand_path(File.join(CHEF_SPEC_DATA, "kitchen")),
28
27
  File.expand_path(File.join(CHEF_SPEC_DATA, "cookbooks")),
29
28
  ]
30
29
  end
@@ -49,26 +48,24 @@ describe Chef::CookbookLoader do
49
48
  .once
50
49
  .and_call_original
51
50
  end
52
- expect(Chef::Log).to receive(:deprecation).with(/The cookbook\(s\): openldap exist in multiple places in your cookbook_path./)
53
51
  cookbook_loader.load_cookbooks
54
52
  end
55
53
 
56
- context "after loading all cookbooks" do
57
- before(:each) do
58
- expect(Chef::Log).to receive(:deprecation).with(/The cookbook\(s\): openldap exist in multiple places in your cookbook_path./)
59
- cookbook_loader.load_cookbooks
54
+ context "removed cookbook merging" do
55
+ let(:repo_paths) do
56
+ [
57
+ File.expand_path(File.join(CHEF_SPEC_DATA, "kitchen")),
58
+ File.expand_path(File.join(CHEF_SPEC_DATA, "cookbooks")),
59
+ ]
60
60
  end
61
-
62
- it "should be possible to reload all the cookbooks without triggering deprecation warnings on all of them", chef: "< 15" do
63
- start_merged_cookbooks = cookbook_loader.merged_cookbooks
64
- expect(Chef::Log).to receive(:deprecation).with(/The cookbook\(s\): openldap exist in multiple places in your cookbook_path./)
65
- cookbook_loader.load_cookbooks
66
- expect(cookbook_loader.merged_cookbooks).to eql(start_merged_cookbooks)
61
+ it "should not support multiple merged cookbooks in the cookbook path" do
62
+ expect { cookbook_loader.load_cookbooks }.to raise_error(Chef::Exceptions::CookbookMergingError)
67
63
  end
64
+ end
68
65
 
69
- it "should not support multiple merged cookbooks in the cookbook path", chef: ">= 15" do
70
- start_merged_cookbooks = cookbook_loader.merged_cookbooks
71
- expect { cookbook_loader.load_cookbooks }.to raise_error("FIXME WITH THE CLASS YOU DECIDE TO USE HERE")
66
+ context "after loading all cookbooks" do
67
+ before(:each) do
68
+ cookbook_loader.load_cookbooks
72
69
  end
73
70
 
74
71
  describe "[]" do
@@ -91,7 +88,7 @@ describe Chef::CookbookLoader do
91
88
 
92
89
  describe "each" do
93
90
  it "should allow you to iterate over cookbooks with each" do
94
- seen = {}
91
+ seen = Hash.new
95
92
  cookbook_loader.each_key do |cookbook_name|
96
93
  seen[cookbook_name] = true
97
94
  end
@@ -100,11 +97,11 @@ describe Chef::CookbookLoader do
100
97
  end
101
98
 
102
99
  it "should iterate in alphabetical order" do
103
- seen = []
100
+ seen = Array.new
104
101
  cookbook_loader.each_key do |cookbook_name|
105
102
  seen << cookbook_name
106
103
  end
107
- expect(seen).to eq %w{angrybash apache2 borken ignorken java name-mismatch openldap preseed supports-platform-constraints}
104
+ expect(seen).to eq %w{angrybash apache2 borken ignorken irssi java name-mismatch openldap preseed supports-platform-constraints wget}
108
105
  end
109
106
  end
110
107
 
@@ -114,64 +111,31 @@ describe Chef::CookbookLoader do
114
111
  expect(cookbook_loader).to have_key(:apache2)
115
112
  end
116
113
 
117
- it "should allow you to override an attribute file via cookbook_path" do
118
- expect(full_paths_for_part(:openldap, "attributes").detect do |f|
119
- f =~ %r{cookbooks/openldap/attributes/default.rb}
120
- end).not_to eql(nil)
121
- expect(full_paths_for_part(:openldap, "attributes").detect do |f|
122
- f =~ %r{kitchen/openldap/attributes/default.rb}
123
- end).to eql(nil)
124
- end
125
-
126
114
  it "should load different attribute files from deeper paths" do
127
115
  expect(full_paths_for_part(:openldap, "attributes").detect do |f|
128
- f =~ %r{kitchen/openldap/attributes/robinson.rb}
129
- end).not_to eql(nil)
130
- end
131
-
132
- it "should allow you to override a definition file via cookbook_path" do
133
- expect(full_paths_for_part(:openldap, "definitions").detect do |f|
134
- f =~ %r{cookbooks/openldap/definitions/client.rb}
116
+ f =~ /cookbooks\/openldap\/attributes\/smokey.rb/
135
117
  end).not_to eql(nil)
136
- expect(full_paths_for_part(:openldap, "definitions").detect do |f|
137
- f =~ %r{kitchen/openldap/definitions/client.rb}
138
- end).to eql(nil)
139
118
  end
140
119
 
141
120
  it "should load definition files from deeper paths" do
142
121
  expect(full_paths_for_part(:openldap, "definitions").detect do |f|
143
- f =~ %r{kitchen/openldap/definitions/drewbarrymore.rb}
122
+ f =~ /cookbooks\/openldap\/definitions\/server.rb/
144
123
  end).not_to eql(nil)
145
124
  end
146
125
 
147
- it "should allow you to override a recipe file via cookbook_path" do
148
- expect(full_paths_for_part(:openldap, "recipes").detect do |f|
149
- f =~ %r{cookbooks/openldap/recipes/gigantor.rb}
150
- end).not_to eql(nil)
151
- expect(full_paths_for_part(:openldap, "recipes").detect do |f|
152
- f =~ %r{kitchen/openldap/recipes/gigantor.rb}
153
- end).to eql(nil)
154
- end
155
-
156
126
  it "should load recipe files from deeper paths" do
157
127
  expect(full_paths_for_part(:openldap, "recipes").detect do |f|
158
- f =~ %r{kitchen/openldap/recipes/woot.rb}
128
+ f =~ /cookbooks\/openldap\/recipes\/one.rb/
159
129
  end).not_to eql(nil)
160
130
  end
161
131
 
162
- it "should allow you to have an 'ignore' file, which skips loading files in later cookbooks" do
163
- expect(full_paths_for_part(:openldap, "recipes").detect do |f|
164
- f =~ %r{kitchen/openldap/recipes/ignoreme.rb}
165
- end).to eql(nil)
166
- end
167
-
168
132
  it "should find files that start with a ." do
169
133
  expect(full_paths_for_part(:openldap, "files").detect do |f|
170
134
  f =~ /\.dotfile$/
171
135
  end).to match(/\.dotfile$/)
172
136
  expect(full_paths_for_part(:openldap, "files").detect do |f|
173
- f =~ %r{\.ssh/id_rsa$}
174
- end).to match(%r{\.ssh/id_rsa$})
137
+ f =~ /\.ssh\/id_rsa$/
138
+ end).to match(/\.ssh\/id_rsa$/)
175
139
  end
176
140
 
177
141
  it "should load the metadata for the cookbook" do
@@ -187,7 +151,6 @@ describe Chef::CookbookLoader do
187
151
 
188
152
  let(:repo_paths) do
189
153
  [
190
- File.join(CHEF_SPEC_DATA, "kitchen"),
191
154
  File.join(CHEF_SPEC_DATA, "cookbooks"),
192
155
  File.join(CHEF_SPEC_DATA, "invalid-metadata-chef-repo"),
193
156
  ]
@@ -210,7 +173,7 @@ describe Chef::CookbookLoader do
210
173
  end
211
174
 
212
175
  it "should have loaded the correct cookbook" do
213
- seen = {}
176
+ seen = Hash.new
214
177
  cookbook_loader.each_key do |cookbook_name|
215
178
  seen[cookbook_name] = true
216
179
  end
@@ -233,12 +196,14 @@ describe Chef::CookbookLoader do
233
196
  end
234
197
 
235
198
  it "should not load the cookbook again when accessed" do
236
- expect(cookbook_loader).not_to receive("load_cookbook")
199
+ cookbook_loader.send(:cookbook_version_loaders).each do |cbv_loader|
200
+ expect(cbv_loader).not_to receive(:load)
201
+ end
237
202
  cookbook_loader["openldap"]
238
203
  end
239
204
 
240
205
  it "should not load the other cookbooks" do
241
- seen = {}
206
+ seen = Hash.new
242
207
  cookbook_loader.each_key do |cookbook_name|
243
208
  seen[cookbook_name] = true
244
209
  end
@@ -253,7 +218,6 @@ describe Chef::CookbookLoader do
253
218
 
254
219
  let(:repo_paths) do
255
220
  [
256
- File.join(CHEF_SPEC_DATA, "kitchen"),
257
221
  File.join(CHEF_SPEC_DATA, "cookbooks"),
258
222
  File.join(CHEF_SPEC_DATA, "invalid-metadata-chef-repo"),
259
223
  ]
@@ -271,12 +235,11 @@ describe Chef::CookbookLoader do
271
235
 
272
236
  describe "loading all cookbooks after loading only one cookbook" do
273
237
  before(:each) do
274
- expect(Chef::Log).to receive(:deprecation).with(/The cookbook\(s\): openldap exist in multiple places in your cookbook_path./)
275
238
  cookbook_loader.load_cookbooks
276
239
  end
277
240
 
278
241
  it "should load all cookbooks" do
279
- seen = {}
242
+ seen = Hash.new
280
243
  cookbook_loader.each_key do |cookbook_name|
281
244
  seen[cookbook_name] = true
282
245
  end
File without changes
@@ -25,7 +25,8 @@ class FakeTempfile
25
25
  @basename = basename
26
26
  end
27
27
 
28
- def close; end
28
+ def close
29
+ end
29
30
 
30
31
  def path
31
32
  "#{@basename}.ZZZ"
File without changes
File without changes
@@ -371,7 +371,7 @@ describe Chef::CookbookVersion, "file specificity" do
371
371
  expect(manifest_records.size).to eq(2)
372
372
 
373
373
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
374
- expect(checksums.sort).to eq(%w{csum-host-1 csum-host-2})
374
+ expect(checksums.sort).to eq(["csum-host-1", "csum-host-2"])
375
375
  end
376
376
 
377
377
  it "should return a directory of manifest records based on priority preference: platform & full version" do
@@ -385,7 +385,7 @@ describe Chef::CookbookVersion, "file specificity" do
385
385
  expect(manifest_records.size).to eq(2)
386
386
 
387
387
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
388
- expect(checksums.sort).to eq(%w{csum-platver-full-1 csum-platver-full-2})
388
+ expect(checksums.sort).to eq(["csum-platver-full-1", "csum-platver-full-2"])
389
389
  end
390
390
 
391
391
  it "should return a directory of manifest records based on priority preference: platform & partial version" do
@@ -399,7 +399,7 @@ describe Chef::CookbookVersion, "file specificity" do
399
399
  expect(manifest_records.size).to eq(2)
400
400
 
401
401
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
402
- expect(checksums.sort).to eq(%w{csum-platver-partial-1 csum-platver-partial-2})
402
+ expect(checksums.sort).to eq(["csum-platver-partial-1", "csum-platver-partial-2"])
403
403
  end
404
404
 
405
405
  it "should return a directory of manifest records based on priority preference: platform only" do
@@ -413,7 +413,7 @@ describe Chef::CookbookVersion, "file specificity" do
413
413
  expect(manifest_records.size).to eq(2)
414
414
 
415
415
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
416
- expect(checksums.sort).to eq(%w{csum-plat-1 csum-plat-2})
416
+ expect(checksums.sort).to eq(["csum-plat-1", "csum-plat-2"])
417
417
  end
418
418
 
419
419
  it "should return a directory of manifest records based on priority preference: default" do
@@ -427,7 +427,7 @@ describe Chef::CookbookVersion, "file specificity" do
427
427
  expect(manifest_records.size).to eq(2)
428
428
 
429
429
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
430
- expect(checksums.sort).to eq(%w{csum-default-1 csum-default-2})
430
+ expect(checksums.sort).to eq(["csum-default-1", "csum-default-2"])
431
431
  end
432
432
 
433
433
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 1" do
@@ -441,7 +441,7 @@ describe Chef::CookbookVersion, "file specificity" do
441
441
  expect(manifest_records.size).to eq(2)
442
442
 
443
443
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
444
- expect(checksums.sort).to eq(%w{csum2-platver-full-1 csum2-platver-full-2})
444
+ expect(checksums.sort).to eq(["csum2-platver-full-1", "csum2-platver-full-2"])
445
445
  end
446
446
 
447
447
  it "should return a manifest record based on priority preference: platform & partial version - platform_version variant 1" do
@@ -455,7 +455,7 @@ describe Chef::CookbookVersion, "file specificity" do
455
455
  expect(manifest_records.size).to eq(2)
456
456
 
457
457
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
458
- expect(checksums.sort).to eq(%w{csum2-platver-partial-1 csum2-platver-partial-2})
458
+ expect(checksums.sort).to eq(["csum2-platver-partial-1", "csum2-platver-partial-2"])
459
459
  end
460
460
 
461
461
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 2" do
@@ -469,7 +469,7 @@ describe Chef::CookbookVersion, "file specificity" do
469
469
  expect(manifest_records.size).to eq(2)
470
470
 
471
471
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
472
- expect(checksums.sort).to eq(%w{csum3-platver-full-1 csum3-platver-full-2})
472
+ expect(checksums.sort).to eq(["csum3-platver-full-1", "csum3-platver-full-2"])
473
473
  end
474
474
 
475
475
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 3" do
@@ -483,7 +483,7 @@ describe Chef::CookbookVersion, "file specificity" do
483
483
  expect(manifest_records.size).to eq(2)
484
484
 
485
485
  checksums = manifest_records.map { |manifest_record| manifest_record[:checksum] }
486
- expect(checksums.sort).to eq(%w{csum4-platver-full-1 csum4-platver-full-2})
486
+ expect(checksums.sort).to eq(["csum4-platver-full-1", "csum4-platver-full-2"])
487
487
  end
488
488
  end
489
489
 
@@ -45,7 +45,7 @@ describe Chef::CookbookVersion do
45
45
  end
46
46
 
47
47
  describe "with a cookbook directory named tatft" do
48
- MD5 = /[0-9a-f]{32}/
48
+ MD5 = /[0-9a-f]{32}/.freeze
49
49
 
50
50
  let(:cookbook_paths_by_type) do
51
51
  {
File without changes
@@ -43,7 +43,7 @@ describe Chef::DataBagItem do
43
43
  end
44
44
 
45
45
  it "should throw an ArgumentError if you feed it anything but a string" do
46
- expect { data_bag_item.data_bag({}) }.to raise_error(ArgumentError)
46
+ expect { data_bag_item.data_bag Hash.new }.to raise_error(ArgumentError)
47
47
  end
48
48
  end
49
49
 
@@ -148,12 +148,12 @@ describe Chef::DataBagItem do
148
148
  end
149
149
 
150
150
  it "implements all the methods of Hash" do
151
- methods = %i{rehash to_hash [] fetch []= store default
152
- default= default_proc index size length
153
- empty? each_value each_key each_pair each keys values
154
- values_at delete delete_if reject! clear
155
- invert update replace merge! merge has_key? has_value?
156
- key? value?}
151
+ methods = [:rehash, :to_hash, :[], :fetch, :[]=, :store, :default,
152
+ :default=, :default_proc, :index, :size, :length,
153
+ :empty?, :each_value, :each_key, :each_pair, :each, :keys, :values,
154
+ :values_at, :delete, :delete_if, :reject!, :clear,
155
+ :invert, :update, :replace, :merge!, :merge, :has_key?, :has_value?,
156
+ :key?, :value?]
157
157
  methods.each do |m|
158
158
  expect(data_bag_item).to respond_to(m)
159
159
  end
@@ -46,7 +46,7 @@ describe Chef::DataBag do
46
46
  end
47
47
 
48
48
  it "should throw an ArgumentError if you feed it anything but a string" do
49
- expect { @data_bag.name({}) }.to raise_error(ArgumentError)
49
+ expect { @data_bag.name Hash.new }.to raise_error(ArgumentError)
50
50
  end
51
51
 
52
52
  [ ".", "-", "_", "1"].each do |char|
@@ -1,8 +1,5 @@
1
1
  #
2
- # Author:: Adam Leff (<adamleff@chef.io)
3
- # Author:: Ryan Cragun (<ryan@chef.io>)
4
- #
5
- # Copyright:: Copyright 2012-2018, Chef Software Inc.
2
+ # Copyright:: Copyright 2019-2019, Chef Software Inc.
6
3
  # License:: Apache License, Version 2.0
7
4
  #
8
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,859 +15,868 @@
18
15
  # limitations under the License.
19
16
  #
20
17
 
21
- require "spec_helper"
18
+ require File.expand_path("../../spec_helper", __FILE__)
22
19
  require "chef/data_collector"
23
- require "chef/resource_builder"
20
+ require "socket"
24
21
 
25
22
  describe Chef::DataCollector do
23
+ before(:each) do
24
+ Chef::Config[:enable_reporting] = true
25
+ end
26
26
 
27
- describe ".register_reporter?" do
28
- context "when no data collector URL or output locations are configured" do
29
- it "returns false" do
30
- Chef::Config[:data_collector][:server_url] = nil
31
- Chef::Config[:data_collector][:output_locations] = nil
32
- expect(Chef::DataCollector.register_reporter?).to be_falsey
33
- end
34
- end
35
-
36
- context "when a data collector URL is configured" do
37
- before do
38
- Chef::Config[:data_collector][:server_url] = "http://data_collector"
39
- end
40
-
41
- context "when operating in why_run mode" do
42
- it "returns false" do
43
- Chef::Config[:why_run] = true
44
- expect(Chef::DataCollector.register_reporter?).to be_falsey
45
- end
46
- end
47
-
48
- context "when not operating in why_run mode" do
49
-
50
- before do
51
- Chef::Config[:why_run] = false
52
- Chef::Config[:data_collector][:token] = token
53
- end
54
-
55
- context "when a token is configured" do
56
-
57
- let(:token) { "supersecrettoken" }
27
+ let(:node) { Chef::Node.new }
58
28
 
59
- context "when report is enabled for current mode" do
60
- it "returns true" do
61
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(true)
62
- expect(Chef::DataCollector.register_reporter?).to be_truthy
63
- end
64
- end
29
+ let(:rest_client) { double("Chef::ServerAPI (mock)") }
65
30
 
66
- context "when report is disabled for current mode" do
67
- it "returns false" do
68
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(false)
69
- expect(Chef::DataCollector.register_reporter?).to be_falsey
70
- end
71
- end
31
+ let(:data_collector) { Chef::DataCollector::Reporter.new(events) }
72
32
 
73
- end
33
+ let(:new_resource) { Chef::Resource::File.new("/tmp/a-file.txt") }
74
34
 
75
- # `Chef::Config[:data_collector][:server_url]` defaults to a URL
76
- # relative to the `chef_server_url`, so we use configuration of the
77
- # token to infer whether a solo/local mode user intends for data
78
- # collection to be enabled.
79
- context "when a token is not configured" do
35
+ let(:current_resource) { Chef::Resource::File.new("/tmp/a-file.txt") }
80
36
 
81
- let(:token) { nil }
37
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
82
38
 
83
- context "when report is enabled for current mode" do
39
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
84
40
 
85
- before do
86
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(true)
87
- end
41
+ let(:run_status) { Chef::RunStatus.new(node, events) }
88
42
 
89
- context "when the current mode is solo" do
43
+ let(:start_time) { Time.new }
90
44
 
91
- before do
92
- Chef::Config[:solo] = true
93
- end
45
+ let(:end_time) { Time.new + 20 }
94
46
 
95
- it "returns true" do
96
- expect(Chef::DataCollector.register_reporter?).to be(true)
97
- end
47
+ let(:run_list) { node.run_list }
98
48
 
99
- end
49
+ let(:run_id) { run_status.run_id }
100
50
 
101
- context "when the current mode is local mode" do
51
+ let(:expansion) { Chef::RunList::RunListExpansion.new("_default", run_list.run_list_items) }
102
52
 
103
- before do
104
- Chef::Config[:local_mode] = true
105
- end
53
+ let(:cookbook_name) { "monkey" }
106
54
 
107
- it "returns false" do
108
- expect(Chef::DataCollector.register_reporter?).to be(true)
109
- end
110
- end
55
+ let(:recipe_name) { "atlas" }
111
56
 
112
- context "when the current mode is client mode" do
57
+ let(:node_name) { "spitfire" }
113
58
 
114
- before do
115
- Chef::Config[:local_mode] = false
116
- Chef::Config[:solo] = false
117
- end
59
+ let(:cookbook_version) { double("Cookbook::Version", version: "1.2.3") }
118
60
 
119
- it "returns true" do
120
- expect(Chef::DataCollector.register_reporter?).to be_truthy
121
- end
61
+ let(:resource_record) { [] }
122
62
 
123
- end
63
+ let(:exception) { nil }
124
64
 
125
- end
65
+ let(:action_collection) { Chef::ActionCollection.new(events) }
126
66
 
127
- context "when report is disabled for current mode" do
128
- it "returns false" do
129
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(false)
130
- expect(Chef::DataCollector.register_reporter?).to be_falsey
131
- end
132
- end
67
+ let(:expected_node) { node }
133
68
 
134
- end
135
-
136
- end
137
- end
69
+ let(:expected_expansion) { expansion }
138
70
 
139
- context "when output_locations are configured" do
140
- before do
141
- Chef::Config[:data_collector][:output_locations] = ["http://data_collector", "/tmp/data_collector.json"]
142
- end
71
+ let(:expected_run_list) { run_list.for_json }
143
72
 
144
- context "when operating in why_run mode" do
145
- it "returns false" do
146
- Chef::Config[:why_run] = true
147
- expect(Chef::DataCollector.register_reporter?).to be_falsey
148
- end
149
- end
73
+ let(:node_uuid) { "779196c6-f94f-4501-9dae-af8081ab4d3a" }
150
74
 
151
- context "when not operating in why_run mode" do
75
+ let(:request_id) { "5db5d686-d18d-4234-a86a-28848c35dfc2" }
152
76
 
153
- before do
154
- Chef::Config[:why_run] = false
155
- Chef::Config[:data_collector][:token] = token
156
- end
77
+ before do
78
+ allow(Time).to receive(:now).and_return(start_time, end_time)
79
+ allow(Chef::HTTP::SimpleJSON).to receive(:new).and_return(rest_client)
80
+ allow(Chef::ServerAPI).to receive(:new).and_return(rest_client)
81
+ node.name(node_name) unless node.is_a?(Hash)
82
+ new_resource.cookbook_name = cookbook_name
83
+ new_resource.recipe_name = recipe_name
84
+ allow(new_resource).to receive(:cookbook_version).and_return(cookbook_version)
85
+
86
+ run_list << "recipe[lobster]" << "role[rage]" << "recipe[fist]"
87
+ events.register(data_collector)
88
+ events.register(action_collection)
89
+ run_status.run_id = request_id
90
+ events.run_start(Chef::VERSION, run_status)
91
+ Chef::Config[:chef_guid] = node_uuid
92
+ # we're guaranteed that those events are processed or else the data collector has no hope
93
+ # all other events could see the chef-client crash before executing them and the data collector
94
+ # still needs to work in those cases, so must come later, and the failure cases must be tested.
95
+ end
157
96
 
158
- context "when a token is configured" do
97
+ def expect_start_message(keys = nil)
98
+ keys ||= {
99
+ "chef_server_fqdn" => "localhost",
100
+ "entity_uuid" => node_uuid,
101
+ "id" => request_id,
102
+ "message_type" => "run_start",
103
+ "message_version" => "1.0.0",
104
+ "node_name" => node_name,
105
+ "organization_name" => "unknown_organization",
106
+ "run_id" => request_id,
107
+ "source" => "chef_client",
108
+ "start_time" => start_time.utc.iso8601,
109
+ }
110
+ expect(rest_client).to receive(:post).with(
111
+ nil,
112
+ hash_including(keys),
113
+ { "Content-Type" => "application/json" }
114
+ )
115
+ end
159
116
 
160
- let(:token) { "supersecrettoken" }
117
+ def expect_converge_message(keys)
118
+ keys["message_type"] = "run_converge"
119
+ keys["message_version"] = "1.1.0"
120
+ expect(rest_client).to receive(:post).with(
121
+ nil,
122
+ hash_including(keys),
123
+ { "Content-Type" => "application/json" }
124
+ )
125
+ end
161
126
 
162
- context "when report is enabled for current mode" do
163
- it "returns true" do
164
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(true)
165
- expect(Chef::DataCollector.register_reporter?).to be_truthy
166
- end
167
- end
127
+ def resource_has_diff(new_resource, status)
128
+ new_resource.respond_to?(:diff) && %w{updated failed}.include?(status)
129
+ end
168
130
 
169
- context "when report is disabled for current mode" do
170
- it "returns false" do
171
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(false)
172
- expect(Chef::DataCollector.register_reporter?).to be_falsey
173
- end
174
- end
131
+ def resource_record_for(current_resource, new_resource, action, status, duration)
132
+ {
133
+ "after" => new_resource.state_for_resource_reporter,
134
+ "before" => current_resource&.state_for_resource_reporter,
135
+ "cookbook_name" => cookbook_name,
136
+ "cookbook_version" => cookbook_version.version,
137
+ "delta" => resource_has_diff(new_resource, status) ? new_resource.diff : "",
138
+ "duration" => duration,
139
+ "id" => new_resource.identity,
140
+ "ignore_failure" => new_resource.ignore_failure,
141
+ "name" => new_resource.name,
142
+ "recipe_name" => recipe_name,
143
+ "result" => action.to_s,
144
+ "status" => status,
145
+ "type" => new_resource.resource_name.to_sym,
146
+ }
147
+ end
175
148
 
176
- end
149
+ def send_run_failed_or_completed_event
150
+ status == "success" ? events.run_completed(node, run_status) : events.run_failed(exception, run_status)
151
+ end
177
152
 
178
- # `Chef::Config[:data_collector][:server_url]` defaults to a URL
179
- # relative to the `chef_server_url`, so we use configuration of the
180
- # token to infer whether a solo/local mode user intends for data
181
- # collection to be enabled.
182
- context "when a token is not configured" do
153
+ shared_examples_for "sends a converge message" do
154
+ it "has a chef_server_fqdn" do
155
+ expect_converge_message("chef_server_fqdn" => "localhost")
156
+ send_run_failed_or_completed_event
157
+ end
183
158
 
184
- let(:token) { nil }
159
+ it "has a start_time" do
160
+ expect_converge_message("start_time" => start_time.utc.iso8601)
161
+ send_run_failed_or_completed_event
162
+ end
185
163
 
186
- context "when report is enabled for current mode" do
164
+ it "has a end_time" do
165
+ expect_converge_message("end_time" => end_time.utc.iso8601)
166
+ send_run_failed_or_completed_event
167
+ end
187
168
 
188
- before do
189
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(true)
190
- end
169
+ it "has a entity_uuid" do
170
+ expect_converge_message("entity_uuid" => node_uuid)
171
+ send_run_failed_or_completed_event
172
+ end
191
173
 
192
- context "when the current mode is solo" do
174
+ it "has a expanded_run_list" do
175
+ expect_converge_message("expanded_run_list" => expected_expansion)
176
+ send_run_failed_or_completed_event
177
+ end
193
178
 
194
- before do
195
- Chef::Config[:solo] = true
196
- end
179
+ it "has a node" do
180
+ expect_converge_message("node" => expected_node)
181
+ send_run_failed_or_completed_event
182
+ end
197
183
 
198
- it "returns true" do
199
- expect(Chef::DataCollector.register_reporter?).to be(true)
200
- end
184
+ it "has a node_name" do
185
+ expect_converge_message("node_name" => node_name)
186
+ send_run_failed_or_completed_event
187
+ end
201
188
 
202
- end
189
+ it "has an organization" do
190
+ expect_converge_message("organization_name" => "unknown_organization")
191
+ send_run_failed_or_completed_event
192
+ end
203
193
 
204
- context "when the current mode is local mode" do
194
+ it "has a policy_group" do
195
+ expect_converge_message("policy_group" => nil)
196
+ send_run_failed_or_completed_event
197
+ end
205
198
 
206
- before do
207
- Chef::Config[:local_mode] = true
208
- end
199
+ it "has a policy_name" do
200
+ expect_converge_message("policy_name" => nil)
201
+ send_run_failed_or_completed_event
202
+ end
209
203
 
210
- it "returns false" do
211
- expect(Chef::DataCollector.register_reporter?).to be(true)
212
- end
213
- end
204
+ it "has a run_id" do
205
+ expect_converge_message("run_id" => request_id)
206
+ send_run_failed_or_completed_event
207
+ end
214
208
 
215
- context "when the current mode is client mode" do
209
+ it "has a run_list" do
210
+ expect_converge_message("run_list" => expected_run_list)
211
+ send_run_failed_or_completed_event
212
+ end
216
213
 
217
- before do
218
- Chef::Config[:local_mode] = false
219
- Chef::Config[:solo] = false
220
- end
214
+ it "has a source" do
215
+ expect_converge_message("source" => "chef_client")
216
+ send_run_failed_or_completed_event
217
+ end
221
218
 
222
- it "returns true" do
223
- expect(Chef::DataCollector.register_reporter?).to be_truthy
224
- end
219
+ it "has a status" do
220
+ expect_converge_message("status" => status)
221
+ send_run_failed_or_completed_event
222
+ end
225
223
 
226
- end
224
+ it "has no deprecations" do
225
+ expect_converge_message("deprecations" => [])
226
+ send_run_failed_or_completed_event
227
+ end
227
228
 
228
- end
229
+ it "has an error field" do
230
+ if exception
231
+ expect_converge_message(
232
+ "error" => {
233
+ "class" => exception.class,
234
+ "message" => exception.message,
235
+ "backtrace" => exception.backtrace,
236
+ "description" => error_description,
237
+ }
238
+ )
239
+ else
240
+ expect(rest_client).to receive(:post).with(
241
+ nil,
242
+ hash_excluding("error"),
243
+ { "Content-Type" => "application/json" }
244
+ )
245
+ end
246
+ send_run_failed_or_completed_event
247
+ end
229
248
 
230
- context "when report is disabled for current mode" do
231
- it "returns false" do
232
- allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(false)
233
- expect(Chef::DataCollector.register_reporter?).to be_falsey
234
- end
235
- end
249
+ it "has a total resource count of zero" do
250
+ expect_converge_message("total_resource_count" => total_resource_count)
251
+ send_run_failed_or_completed_event
252
+ end
236
253
 
237
- end
254
+ it "has a updated resource count of zero" do
255
+ expect_converge_message("updated_resource_count" => updated_resource_count)
256
+ send_run_failed_or_completed_event
257
+ end
238
258
 
239
- end
259
+ it "includes the resource record" do
260
+ expect_converge_message("resources" => resource_record)
261
+ send_run_failed_or_completed_event
240
262
  end
241
263
  end
242
264
 
243
- describe ".reporter_enabled_for_current_mode?" do
244
- context "when running in solo mode" do
245
- before do
246
- Chef::Config[:solo] = true
247
- Chef::Config[:local_mode] = false
265
+ describe "#should_be_enabled?" do
266
+ shared_examples_for "a solo-like run" do
267
+ it "is disabled in solo-legacy without a data_collector url and token" do
268
+ expect(data_collector.send(:should_be_enabled?)).to be false
248
269
  end
249
270
 
250
- context "when data_collector_mode is :solo" do
251
- it "returns true" do
252
- Chef::Config[:data_collector][:mode] = :solo
253
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
254
- end
271
+ it "is disabled in solo-legacy with only a url" do
272
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
273
+ expect(data_collector.send(:should_be_enabled?)).to be false
255
274
  end
256
275
 
257
- context "when data_collector_mode is :client" do
258
- it "returns false" do
259
- Chef::Config[:data_collector][:mode] = :client
260
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
261
- end
276
+ it "is disabled in solo-legacy with only a token" do
277
+ Chef::Config[:data_collector][:token] = "admit_one"
278
+ expect(data_collector.send(:should_be_enabled?)).to be false
262
279
  end
263
280
 
264
- context "when data_collector_mode is :both" do
265
- it "returns true" do
266
- Chef::Config[:data_collector][:mode] = :both
267
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
268
- end
269
- end
270
- end
271
-
272
- context "when running in local mode" do
273
- before do
274
- Chef::Config[:solo] = false
275
- Chef::Config[:local_mode] = true
281
+ it "is enabled in solo-legacy with both a token and url" do
282
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
283
+ Chef::Config[:data_collector][:token] = "no_cash_value"
284
+ expect(data_collector.send(:should_be_enabled?)).to be true
276
285
  end
277
286
 
278
- context "when data_collector_mode is :solo" do
279
- it "returns true" do
280
- Chef::Config[:data_collector][:mode] = :solo
281
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
282
- end
287
+ it "is enabled in solo-legacy with only an output location to a file" do
288
+ Chef::Config[:data_collector][:output_locations] = { files: [ "/always/be/counting/down" ] }
289
+ expect(data_collector.send(:should_be_enabled?)).to be true
283
290
  end
284
291
 
285
- context "when data_collector_mode is :client" do
286
- it "returns false" do
287
- Chef::Config[:data_collector][:mode] = :client
288
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
289
- end
292
+ it "is disabled in solo-legacy with only an output location to a uri" do
293
+ Chef::Config[:data_collector][:output_locations] = { urls: [ "https://esa.local/ariane5" ] }
294
+ expect(data_collector.send(:should_be_enabled?)).to be false
290
295
  end
291
296
 
292
- context "when data_collector_mode is :both" do
293
- it "returns true" do
294
- Chef::Config[:data_collector][:mode] = :both
295
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
296
- end
297
+ it "is enabled in solo-legacy with only an output location to a uri with a token" do
298
+ Chef::Config[:data_collector][:output_locations] = { urls: [ "https://esa.local/ariane5" ] }
299
+ Chef::Config[:data_collector][:token] = "good_for_one_fare"
300
+ expect(data_collector.send(:should_be_enabled?)).to be true
297
301
  end
298
- end
299
302
 
300
- context "when running in client mode" do
301
- before do
302
- Chef::Config[:solo] = false
303
- Chef::Config[:local_mode] = false
303
+ it "is enabled in solo-legacy when the mode is :solo" do
304
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
305
+ Chef::Config[:data_collector][:token] = "non_redeemable"
306
+ Chef::Config[:data_collector][:mode] = :solo
307
+ expect(data_collector.send(:should_be_enabled?)).to be true
304
308
  end
305
309
 
306
- context "when data_collector_mode is :solo" do
307
- it "returns false" do
308
- Chef::Config[:data_collector][:mode] = :solo
309
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
310
- end
310
+ it "is enabled in solo-legacy when the mode is :both" do
311
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
312
+ Chef::Config[:data_collector][:token] = "non_negotiable"
313
+ Chef::Config[:data_collector][:mode] = :both
314
+ expect(data_collector.send(:should_be_enabled?)).to be true
311
315
  end
312
316
 
313
- context "when data_collector_mode is :client" do
314
- it "returns true" do
315
- Chef::Config[:data_collector][:mode] = :client
316
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
317
- end
317
+ it "is disabled in solo-legacy when the mode is :client" do
318
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
319
+ Chef::Config[:data_collector][:token] = "NYCTA"
320
+ Chef::Config[:data_collector][:mode] = :client
321
+ expect(data_collector.send(:should_be_enabled?)).to be false
318
322
  end
319
323
 
320
- context "when data_collector_mode is :both" do
321
- it "returns true" do
322
- Chef::Config[:data_collector][:mode] = :both
323
- expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
324
- end
324
+ it "is disabled in solo-legacy mode when the mode is :nonsense" do
325
+ Chef::Config[:data_collector][:server_url] = "https://www.esa.local/ariane5"
326
+ Chef::Config[:data_collector][:token] = "MTA"
327
+ Chef::Config[:data_collector][:mode] = :nonsense
328
+ expect(data_collector.send(:should_be_enabled?)).to be false
325
329
  end
326
330
  end
327
- end
328
-
329
- end
330
-
331
- describe Chef::DataCollector::Reporter do
332
- let(:reporter) { described_class.new }
333
- let(:run_status) { Chef::RunStatus.new(Chef::Node.new, Chef::EventDispatch::Dispatcher.new) }
334
-
335
- let(:token) { "supersecrettoken" }
336
-
337
- before do
338
- Chef::Config[:data_collector][:server_url] = "http://my-data-collector-server.mycompany.com"
339
- Chef::Config[:data_collector][:token] = token
340
- end
341
-
342
- describe "selecting token or signed header authentication" do
343
-
344
- context "when the token is set in the config" do
345
-
346
- before do
347
- Chef::Config[:client_key] = "/no/key/should/exist/at/this/path.pem"
348
- end
349
-
350
- it "configures an HTTP client that doesn't do signed header auth" do
351
- # Initializing with the wrong kind of HTTP class should cause Chef::Exceptions::PrivateKeyMissing
352
- expect { reporter.http }.to_not raise_error
353
- end
354
331
 
332
+ it "by default it is enabled" do
333
+ expect(data_collector.send(:should_be_enabled?)).to be true
355
334
  end
356
335
 
357
- context "when no token is set in the config" do
358
-
359
- let(:token) { nil }
360
-
361
- let(:client_key) { File.join(CHEF_SPEC_DATA, "ssl", "private_key.pem") }
362
-
363
- before do
364
- Chef::Config[:client_key] = client_key
365
- end
366
-
367
- it "configures an HTTP client that does signed header auth" do
368
- expect { reporter.http }.to_not raise_error
369
- expect(reporter.http.options).to have_key(:signing_key_filename)
370
- expect(reporter.http.options[:signing_key_filename]).to eq(client_key)
371
- end
336
+ it "is disabled in why-run" do
337
+ Chef::Config[:why_run] = true
338
+ expect(data_collector.send(:should_be_enabled?)).to be false
372
339
  end
373
340
 
374
- end
341
+ describe "a solo legacy run" do
342
+ before(:each) do
343
+ Chef::Config[:solo_legacy_mode] = true
344
+ end
375
345
 
376
- describe "#run_started" do
377
- before do
378
- allow(reporter).to receive(:update_run_status)
379
- allow(reporter).to receive(:send_to_data_collector)
380
- allow(Chef::DataCollector::Messages).to receive(:run_start_message)
346
+ it_behaves_like "a solo-like run"
381
347
  end
382
348
 
383
- it "updates the run status" do
384
- expect(reporter).to receive(:update_run_status).with(run_status)
385
- reporter.run_started(run_status)
386
- end
349
+ describe "a local mode run" do
350
+ before(:each) do
351
+ Chef::Config[:local_mode] = true
352
+ end
387
353
 
388
- it "sends the RunStart message output to the Data Collector server" do
389
- expect(Chef::DataCollector::Messages)
390
- .to receive(:run_start_message)
391
- .with(run_status)
392
- .and_return(key: "value")
393
- expect(reporter).to receive(:send_to_data_collector).with({ key: "value" })
394
- reporter.run_started(run_status)
354
+ it_behaves_like "a solo-like run"
395
355
  end
396
- end
397
356
 
398
- describe "when sending a message at chef run completion" do
399
-
400
- let(:node) { Chef::Node.new }
401
-
402
- let(:run_status) do
403
- instance_double("Chef::RunStatus",
404
- run_id: "run_id",
405
- node: node,
406
- start_time: Time.new,
407
- end_time: Time.new,
408
- exception: exception)
357
+ it "is enabled in client mode when the mode is :both" do
358
+ Chef::Config[:data_collector][:mode] = :both
359
+ expect(data_collector.send(:should_be_enabled?)).to be true
409
360
  end
410
361
 
411
- before do
412
- reporter.send(:update_run_status, run_status)
362
+ it "is disabled in client mode when the mode is :solo" do
363
+ Chef::Config[:data_collector][:mode] = :solo
364
+ expect(data_collector.send(:should_be_enabled?)).to be false
413
365
  end
414
366
 
415
- describe "#run_completed" do
416
-
417
- let(:exception) { nil }
418
-
419
- it "sends the run completion" do
420
- expect(reporter).to receive(:send_to_data_collector) do |message|
421
- expect(message).to be_a(Hash)
422
- expect(message["status"]).to eq("success")
423
- end
424
- reporter.run_completed(node)
425
- end
367
+ it "is disabled in client mode when the mode is :nonsense" do
368
+ Chef::Config[:data_collector][:mode] = :nonsense
369
+ expect(data_collector.send(:should_be_enabled?)).to be false
426
370
  end
427
371
 
428
- describe "#run_failed" do
429
-
430
- let(:exception) { StandardError.new("oops") }
431
-
432
- it "updates the exception and sends the run completion" do
433
- expect(reporter).to receive(:send_to_data_collector) do |message|
434
- expect(message).to be_a(Hash)
435
- expect(message["status"]).to eq("failure")
436
- end
437
- reporter.run_failed("test_exception")
438
- end
372
+ it "is still enabled if you set a token in client mode" do
373
+ Chef::Config[:data_collector][:token] = "good_for_one_ride"
374
+ expect(data_collector.send(:should_be_enabled?)).to be true
439
375
  end
440
376
  end
441
377
 
442
- describe "#converge_start" do
443
- it "stashes the run_context for later use" do
444
- reporter.converge_start("test_context")
445
- expect(reporter.run_context).to eq("test_context")
446
- end
447
- end
378
+ describe "when the run fails during node load" do
379
+ let(:exception) { Exception.new("imperial to metric conversion error") }
380
+ let(:error_description) { Chef::Formatters::ErrorMapper.registration_failed(node_name, exception, Chef::Config).for_json }
381
+ let(:total_resource_count) { 0 }
382
+ let(:updated_resource_count) { 0 }
383
+ let(:status) { "failure" }
384
+ let(:expected_node) { {} } # no node because that failed
385
+ let(:expected_run_list) { [] } # no run_list without a node
386
+ let(:expected_expansion) { {} } # no run_list expansion without a run_list
387
+ let(:resource_record) { [] } # and certainly no resources
448
388
 
449
- describe "#converge_complete" do
450
- it "detects and processes any unprocessed resources" do
451
- expect(reporter).to receive(:detect_unprocessed_resources)
452
- reporter.converge_complete
389
+ before do
390
+ events.registration_failed(node_name, exception, Chef::Config)
391
+ run_status.stop_clock
392
+ run_status.exception = exception
393
+ expect_start_message
453
394
  end
454
- end
455
395
 
456
- describe "#converge_failed" do
457
- it "detects and processes any unprocessed resources" do
458
- expect(reporter).to receive(:detect_unprocessed_resources)
459
- reporter.converge_failed("exception")
460
- end
396
+ it_behaves_like "sends a converge message"
461
397
  end
462
398
 
463
- describe "#resource_current_state_loaded" do
464
- let(:new_resource) { double("new_resource") }
465
- let(:action) { double("action") }
466
- let(:current_resource) { double("current_resource") }
467
- let(:resource_report) { double("resource_report") }
399
+ describe "when the run fails during node load" do
400
+ let(:exception) { Exception.new("imperial to metric conversion error") }
401
+ let(:error_description) { Chef::Formatters::ErrorMapper.node_load_failed(node_name, exception, Chef::Config).for_json }
402
+ let(:total_resource_count) { 0 }
403
+ let(:updated_resource_count) { 0 }
404
+ let(:status) { "failure" }
405
+ let(:expected_node) { {} } # no node because that failed
406
+ let(:expected_run_list) { [] } # no run_list without a node
407
+ let(:expected_expansion) { {} } # no run_list expansion without a run_list
408
+ let(:resource_record) { [] } # and certainly no resources
468
409
 
469
- context "when resource is a nested resource" do
470
- it "does not update the resource report" do
471
- allow(reporter).to receive(:nested_resource?).and_return(true)
472
- expect(reporter).not_to receive(:update_current_resource_report)
473
- reporter.resource_current_state_loaded(new_resource, action, current_resource)
474
- end
410
+ before do
411
+ events.node_load_failed(node_name, exception, Chef::Config)
412
+ run_status.stop_clock
413
+ run_status.exception = exception
414
+ expect_start_message
475
415
  end
476
416
 
477
- context "when resource is not a nested resource" do
478
- it "initializes the resource report" do
479
- allow(reporter).to receive(:nested_resource?).and_return(false)
480
- expect(reporter).to receive(:initialize_resource_report_if_needed)
481
- .with(new_resource, action, current_resource)
482
- reporter.resource_current_state_loaded(new_resource, action, current_resource)
483
- end
484
- end
417
+ it_behaves_like "sends a converge message"
485
418
  end
486
419
 
487
- describe "#resource_up_to_date" do
488
- let(:new_resource) { double("new_resource") }
489
- let(:action) { double("action") }
490
- let(:resource_report) { double("resource_report") }
420
+ describe "when the run fails during run_list_expansion" do
421
+ let(:exception) { Exception.new("imperial to metric conversion error") }
422
+ let(:error_description) { Chef::Formatters::ErrorMapper.run_list_expand_failed(node, exception).for_json }
423
+ let(:total_resource_count) { 0 }
424
+ let(:updated_resource_count) { 0 }
425
+ let(:status) { "failure" }
426
+ let(:expected_expansion) { {} } # no run_list expanasion when it failed
427
+ let(:resource_record) { [] } # and no resources
491
428
 
492
429
  before do
493
- allow(reporter).to receive(:nested_resource?)
494
- allow(reporter).to receive(:current_resource_report).and_return(resource_report)
495
- allow(resource_report).to receive(:up_to_date)
430
+ events.node_load_success(node)
431
+ run_status.node = node
432
+ events.run_list_expand_failed(node, exception)
433
+ run_status.stop_clock
434
+ run_status.exception = exception
435
+ expect_start_message
496
436
  end
497
437
 
498
- context "when the resource is a nested resource" do
499
- it "does not mark the resource report as up-to-date" do
500
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
501
- expect(resource_report).not_to receive(:up_to_date)
502
- reporter.resource_up_to_date(new_resource, action)
503
- end
504
- end
505
-
506
- context "when the resource is not a nested resource" do
507
- it "marks the resource report as up-to-date" do
508
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
509
- expect(resource_report).to receive(:up_to_date)
510
- reporter.resource_up_to_date(new_resource, action)
511
- end
512
- end
438
+ it_behaves_like "sends a converge message"
513
439
  end
514
440
 
515
- describe "#resource_skipped" do
516
- let(:new_resource) { double("new_resource") }
517
- let(:action) { double("action") }
518
- let(:conditional) { double("conditional") }
519
- let(:resource_report) { double("resource_report") }
441
+ describe "when the run fails during cookbook resolution" do
442
+ let(:exception) { Exception.new("imperial to metric conversion error") }
443
+ let(:error_description) { Chef::Formatters::ErrorMapper.cookbook_resolution_failed(node, exception).for_json }
444
+ let(:total_resource_count) { 0 }
445
+ let(:updated_resource_count) { 0 }
446
+ let(:status) { "failure" }
447
+ let(:resource_record) { [] } # and no resources
520
448
 
521
449
  before do
522
- allow(reporter).to receive(:nested_resource?)
523
- allow(resource_report).to receive(:skipped)
524
- end
525
-
526
- context "when the resource is a nested resource" do
527
- it "does not mark the resource report as skipped" do
528
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
529
- expect(resource_report).not_to receive(:skipped).with(conditional)
530
- reporter.resource_skipped(new_resource, action, conditional)
531
- end
450
+ events.node_load_success(node)
451
+ run_status.node = node
452
+ events.run_list_expanded(expansion)
453
+ run_status.start_clock
454
+ expect_start_message
455
+ events.cookbook_resolution_failed(node, exception)
456
+ run_status.stop_clock
457
+ run_status.exception = exception
532
458
  end
533
459
 
534
- context "when the resource is not a nested resource" do
535
- it "initializes the resource report and marks it as skipped" do
536
- allow(reporter).to receive(:nested_resource?).and_return(false)
537
- allow(reporter).to receive(:current_resource_report).and_return(resource_report)
538
- expect(reporter).to receive(:initialize_resource_report_if_needed).with(new_resource, action)
539
- expect(resource_report).to receive(:skipped).with(conditional)
540
- reporter.resource_skipped(new_resource, action, conditional)
541
- end
542
- end
460
+ it_behaves_like "sends a converge message"
543
461
  end
544
462
 
545
- describe "#resource_updated" do
546
- let(:resource_report) { double("resource_report") }
463
+ describe "when the run fails during cookbook synchronization" do
464
+ let(:exception) { Exception.new("imperial to metric conversion error") }
465
+ let(:error_description) { Chef::Formatters::ErrorMapper.cookbook_sync_failed(node, exception).for_json }
466
+ let(:total_resource_count) { 0 }
467
+ let(:updated_resource_count) { 0 }
468
+ let(:status) { "failure" }
469
+ let(:resource_record) { [] } # and no resources
547
470
 
548
471
  before do
549
- allow(reporter).to receive(:current_resource_report).and_return(resource_report)
550
- allow(resource_report).to receive(:updated)
472
+ events.node_load_success(node)
473
+ run_status.node = node
474
+ events.run_list_expanded(expansion)
475
+ run_status.start_clock
476
+ expect_start_message
477
+ events.cookbook_sync_failed(node, exception)
478
+ run_status.stop_clock
479
+ run_status.exception = exception
551
480
  end
552
481
 
553
- it "marks the resource report as updated" do
554
- expect(resource_report).to receive(:updated)
555
- reporter.resource_updated("new_resource", "action")
556
- end
482
+ it_behaves_like "sends a converge message"
557
483
  end
558
484
 
559
- describe "#resource_failed" do
560
- let(:new_resource) { double("new_resource") }
561
- let(:action) { double("action") }
562
- let(:exception) { double("exception") }
563
- let(:error_mapper) { double("error_mapper") }
564
- let(:resource_report) { double("resource_report") }
565
-
485
+ describe "after successfully starting the run" do
566
486
  before do
567
- allow(reporter).to receive(:update_error_description)
568
- allow(reporter).to receive(:current_resource_report).and_return(resource_report)
569
- allow(resource_report).to receive(:failed)
570
- allow(Chef::Formatters::ErrorMapper).to receive(:resource_failed).and_return(error_mapper)
571
- allow(error_mapper).to receive(:for_json)
487
+ # these events happen in this order in the client
488
+ events.node_load_success(node)
489
+ run_status.node = node
490
+ events.run_list_expanded(expansion)
491
+ run_status.start_clock
572
492
  end
573
493
 
574
- it "updates the error description" do
575
- expect(Chef::Formatters::ErrorMapper).to receive(:resource_failed).with(
576
- new_resource,
577
- action,
578
- exception
579
- ).and_return(error_mapper)
580
- expect(error_mapper).to receive(:for_json).and_return("error_description")
581
- expect(reporter).to receive(:update_error_description).with("error_description")
582
- reporter.resource_failed(new_resource, action, exception)
583
- end
494
+ describe "run_start_message" do
495
+ it "sends a run_start_message" do
496
+ expect_start_message
497
+ events.run_started(run_status)
498
+ end
584
499
 
585
- context "when the resource is not a nested resource" do
586
- it "marks the resource report as failed" do
587
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
588
- expect(resource_report).to receive(:failed).with(exception)
589
- reporter.resource_failed(new_resource, action, exception)
500
+ it "extracts the hostname from the chef_server_url" do
501
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local"
502
+ expect_start_message("chef_server_fqdn" => "spacex.rockets.local")
503
+ events.run_started(run_status)
590
504
  end
591
- end
592
505
 
593
- context "when the resource is a nested resource" do
594
- it "does not mark the resource report as failed" do
595
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
596
- expect(resource_report).not_to receive(:failed).with(exception)
597
- reporter.resource_failed(new_resource, action, exception)
506
+ it "extracts the organization from the chef_server_url" do
507
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc"
508
+ expect_start_message("organization_name" => "gnc")
509
+ events.run_started(run_status)
598
510
  end
599
- end
600
- end
601
511
 
602
- describe "#resource_completed" do
603
- let(:new_resource) { double("new_resource") }
604
- let(:resource_report) { double("resource_report") }
512
+ it "extracts the organization from the chef_server_url if there are extra slashes" do
513
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local///organizations///gnc"
514
+ expect_start_message("organization_name" => "gnc")
515
+ events.run_started(run_status)
516
+ end
605
517
 
606
- before do
607
- allow(reporter).to receive(:update_current_resource_report)
608
- allow(reporter).to receive(:add_resource_report)
609
- allow(reporter).to receive(:current_resource_report)
610
- allow(resource_report).to receive(:finish)
611
- end
518
+ it "extracts the organization from the chef_server_url if there is a trailing slash" do
519
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/"
520
+ expect_start_message("organization_name" => "gnc")
521
+ events.run_started(run_status)
522
+ end
612
523
 
613
- context "when there is no current resource report" do
614
- it "does not touch the current resource report" do
615
- allow(reporter).to receive(:current_resource_report).and_return(nil)
616
- expect(reporter).not_to receive(:update_current_resource_report)
617
- reporter.resource_completed(new_resource)
524
+ it "sets 'unknown_organization' if the cher_server_url does not contain one" do
525
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local"
526
+ expect_start_message("organization_name" => "unknown_organization")
527
+ events.run_started(run_status)
618
528
  end
619
- end
620
529
 
621
- context "when there is a current resource report" do
622
- before do
623
- allow(reporter).to receive(:current_resource_report).and_return(resource_report)
530
+ it "still uses the chef_server_url in non-solo mode even if the data_collector organization is set" do
531
+ Chef::Config[:data_collector][:organization] = "blue-origin"
532
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/"
533
+ expect_start_message("organization_name" => "gnc")
534
+ events.run_started(run_status)
624
535
  end
625
536
 
626
- context "when the resource is a nested resource" do
627
- it "does not mark the resource as finished" do
628
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
629
- expect(resource_report).not_to receive(:finish)
630
- reporter.resource_completed(new_resource)
537
+ describe "in legacy mode" do
538
+ before do
539
+ Chef::Config[:solo_legacy_mode] = true
540
+ Chef::Config[:data_collector][:server_url] = "https://nasa.rockets.local/organizations/sls"
541
+ end
542
+
543
+ it "we get the data collector organization" do
544
+ Chef::Config[:data_collector][:organization] = "blue-origin"
545
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/" # should be ignored
546
+ expect_start_message("organization_name" => "blue-origin")
547
+ events.run_started(run_status)
548
+ end
549
+
550
+ it "if the data collector org is unset we get 'chef_solo'" do
551
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/" # should be ignored
552
+ expect_start_message("organization_name" => "chef_solo")
553
+ events.run_started(run_status)
554
+ end
555
+
556
+ it "sets the source" do
557
+ expect_start_message("source" => "chef_solo")
558
+ events.run_started(run_status)
631
559
  end
632
560
  end
633
561
 
634
- context "when the resource is not a nested resource" do
562
+ describe "in local mode" do
635
563
  before do
636
- allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
564
+ Chef::Config[:local_mode] = true
565
+ Chef::Config[:data_collector][:server_url] = "https://nasa.rockets.local/organizations/sls"
566
+ end
567
+
568
+ it "we get the data collector organization" do
569
+ Chef::Config[:data_collector][:organization] = "blue-origin"
570
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/" # should be ignored
571
+ expect_start_message("organization_name" => "blue-origin")
572
+ events.run_started(run_status)
637
573
  end
638
574
 
639
- it "marks the current resource report as finished" do
640
- expect(resource_report).to receive(:finish)
641
- reporter.resource_completed(new_resource)
575
+ it "if the data collector org is unset we get 'chef_solo'" do
576
+ Chef::Config[:chef_server_url] = "https://spacex.rockets.local/organizations/gnc/" # should be ignored
577
+ expect_start_message("organization_name" => "chef_solo")
578
+ events.run_started(run_status)
642
579
  end
643
580
 
644
- it "nils out the current resource report" do
645
- expect(reporter).to receive(:clear_current_resource_report)
646
- reporter.resource_completed(new_resource)
581
+ it "sets the source" do
582
+ expect_start_message("source" => "chef_solo")
583
+ events.run_started(run_status)
647
584
  end
648
585
  end
649
586
  end
650
- end
651
587
 
652
- describe "#run_list_expanded" do
653
- it "sets the expanded run list" do
654
- reporter.run_list_expanded("test_run_list")
655
- expect(reporter.expanded_run_list).to eq("test_run_list")
656
- end
657
- end
588
+ describe "converge messages" do
589
+ before do
590
+ expect_start_message
591
+ events.run_started(run_status)
592
+ events.cookbook_compilation_start(run_context)
593
+ end
658
594
 
659
- describe "#run_list_expand_failed" do
660
- let(:node) { double("node") }
661
- let(:error_mapper) { double("error_mapper") }
662
- let(:exception) { double("exception") }
595
+ context "with no resources" do
596
+ let(:total_resource_count) { 0 }
597
+ let(:updated_resource_count) { 0 }
598
+ let(:resource_record) { [ ] }
599
+ let(:status) { "success" }
663
600
 
664
- it "updates the error description" do
665
- expect(Chef::Formatters::ErrorMapper).to receive(:run_list_expand_failed).with(
666
- node,
667
- exception
668
- ).and_return(error_mapper)
669
- expect(error_mapper).to receive(:for_json).and_return("error_description")
670
- expect(reporter).to receive(:update_error_description).with("error_description")
671
- reporter.run_list_expand_failed(node, exception)
672
- end
673
- end
601
+ before do
602
+ run_status.stop_clock
603
+ end
674
604
 
675
- describe "#cookbook_resolution_failed" do
676
- let(:error_mapper) { double("error_mapper") }
677
- let(:exception) { double("exception") }
678
- let(:expanded_run_list) { double("expanded_run_list") }
605
+ it_behaves_like "sends a converge message"
679
606
 
680
- it "updates the error description" do
681
- expect(Chef::Formatters::ErrorMapper).to receive(:cookbook_resolution_failed).with(
682
- expanded_run_list,
683
- exception
684
- ).and_return(error_mapper)
685
- expect(error_mapper).to receive(:for_json).and_return("error_description")
686
- expect(reporter).to receive(:update_error_description).with("error_description")
687
- reporter.cookbook_resolution_failed(expanded_run_list, exception)
688
- end
607
+ it "sets the policy_group" do
608
+ node.policy_group = "acceptionsal"
609
+ expect_converge_message("policy_group" => "acceptionsal")
610
+ send_run_failed_or_completed_event
611
+ end
689
612
 
690
- end
613
+ it "has a policy_name" do
614
+ node.policy_name = "webappdb"
615
+ expect_converge_message("policy_name" => "webappdb")
616
+ send_run_failed_or_completed_event
617
+ end
618
+
619
+ it "collects deprecation messages" do
620
+ location = Chef::Log.caller_location
621
+ events.deprecation(Chef::Deprecated.create(:internal_api, "deprecation warning", location))
622
+ expect_converge_message("deprecations" => [{ location: location, message: "deprecation warning", url: "https://docs.chef.io/deprecations_internal_api.html" }])
623
+ send_run_failed_or_completed_event
624
+ end
625
+ end
691
626
 
692
- describe "#cookbook_sync_failed" do
693
- let(:cookbooks) { double("cookbooks") }
694
- let(:error_mapper) { double("error_mapper") }
695
- let(:exception) { double("exception") }
627
+ context "when the run contains a file resource that is up-to-date" do
628
+ let(:total_resource_count) { 1 }
629
+ let(:updated_resource_count) { 0 }
630
+ let(:resource_record) { [ resource_record_for(current_resource, new_resource, :create, "up-to-date", "1234") ] }
631
+ let(:status) { "success" }
696
632
 
697
- it "updates the error description" do
698
- expect(Chef::Formatters::ErrorMapper).to receive(:cookbook_sync_failed).with(
699
- cookbooks,
700
- exception
701
- ).and_return(error_mapper)
702
- expect(error_mapper).to receive(:for_json).and_return("error_description")
703
- expect(reporter).to receive(:update_error_description).with("error_description")
704
- reporter.cookbook_sync_failed(cookbooks, exception)
705
- end
706
- end
633
+ before do
634
+ events.resource_action_start(new_resource, :create)
635
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
636
+ events.resource_up_to_date(new_resource, :create)
637
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
638
+ events.resource_completed(new_resource)
639
+ events.converge_complete
640
+ run_status.stop_clock
641
+ end
707
642
 
708
- describe "#disable_reporter_on_error" do
709
- context "when no exception is raise by the block" do
710
- it "does not disable the reporter" do
711
- expect(reporter).not_to receive(:disable_data_collector_reporter)
712
- reporter.send(:disable_reporter_on_error) { true }
643
+ it_behaves_like "sends a converge message"
713
644
  end
714
645
 
715
- it "does not raise an exception" do
716
- expect { reporter.send(:disable_reporter_on_error) { true } }.not_to raise_error
717
- end
718
- end
646
+ context "when the run contains a file resource that is updated" do
647
+ let(:total_resource_count) { 1 }
648
+ let(:updated_resource_count) { 1 }
649
+ let(:resource_record) { [ resource_record_for(current_resource, new_resource, :create, "updated", "1234") ] }
650
+ let(:status) { "success" }
719
651
 
720
- context "when an unexpected exception is raised by the block" do
721
- it "re-raises the exception" do
722
- expect { reporter.send(:disable_reporter_on_error) { raise "bummer" } }.to raise_error(RuntimeError)
723
- end
724
- end
652
+ before do
653
+ events.resource_action_start(new_resource, :create)
654
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
655
+ events.resource_updated(new_resource, :create)
656
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
657
+ events.resource_completed(new_resource)
658
+ events.converge_complete
659
+ run_status.stop_clock
660
+ end
725
661
 
726
- [ Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
727
- Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse,
728
- Net::HTTPHeaderSyntaxError, Net::ProtocolError, OpenSSL::SSL::SSLError,
729
- Errno::EHOSTDOWN ].each do |exception_class|
730
- context "when the block raises a #{exception_class} exception" do
731
- it "disables the reporter" do
732
- expect(reporter).to receive(:disable_data_collector_reporter)
733
- reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") }
734
- end
662
+ it_behaves_like "sends a converge message"
663
+ end
735
664
 
736
- context "when raise-on-failure is enabled" do
737
- it "logs an error and raises" do
738
- Chef::Config[:data_collector][:raise_on_failure] = true
739
- expect(Chef::Log).to receive(:error)
740
- expect { reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") } }.to raise_error(exception_class)
741
- end
742
- end
665
+ context "When there is an embedded resource, it includes the sub-resource in the report" do
666
+ let(:total_resource_count) { 2 }
667
+ let(:updated_resource_count) { 2 }
668
+ let(:implementation_resource) do
669
+ r = Chef::Resource::CookbookFile.new("/preseed-file.txt")
670
+ r.cookbook_name = cookbook_name
671
+ r.recipe_name = recipe_name
672
+ allow(r).to receive(:cookbook_version).and_return(cookbook_version)
673
+ r
674
+ end
675
+ let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(current_resource, new_resource, :create, "updated", "1234") ] }
676
+ let(:status) { "success" }
743
677
 
744
- context "when raise-on-failure is disabled" do
745
- it "logs an info message and does not raise an exception" do
746
- Chef::Config[:data_collector][:raise_on_failure] = false
747
- expect(Chef::Log).to receive(:info)
748
- expect { reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") } }.not_to raise_error
749
- end
750
- end
678
+ before do
679
+ events.resource_action_start(new_resource, :create)
680
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
681
+
682
+ events.resource_action_start(implementation_resource , :create)
683
+ events.resource_current_state_loaded(implementation_resource, :create, implementation_resource)
684
+ events.resource_updated(implementation_resource, :create)
685
+ implementation_resource.instance_variable_set(:@elapsed_time, 2.3456)
686
+ events.resource_completed(implementation_resource)
687
+
688
+ events.resource_updated(new_resource, :create)
689
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
690
+ events.resource_completed(new_resource)
691
+ events.converge_complete
692
+ run_status.stop_clock
751
693
  end
752
- end
753
- end
754
694
 
755
- describe "#validate_data_collector_server_url!" do
756
- context "when server_url is empty" do
757
- it "raises an exception" do
758
- Chef::Config[:data_collector][:server_url] = ""
759
- expect { reporter.send(:validate_data_collector_server_url!) }.to raise_error(Chef::Exceptions::ConfigurationError)
695
+ it_behaves_like "sends a converge message"
760
696
  end
761
- end
762
697
 
763
- context "when server_url is omitted but output_locations is specified" do
764
- it "does not an exception" do
765
- Chef::Config[:data_collector][:output_locations] = ["http://data_collector", "/tmp/data_collector.json"]
766
- expect { reporter.send(:validate_data_collector_server_url!) }.not_to raise_error(Chef::Exceptions::ConfigurationError)
767
- end
768
- end
698
+ context "when the run contains a file resource that is skipped due to a block conditional" do
699
+ let(:total_resource_count) { 1 }
700
+ let(:updated_resource_count) { 0 }
701
+ let(:resource_record) do
702
+ rec = resource_record_for(current_resource, new_resource, :create, "skipped", "1234")
703
+ rec["conditional"] = "not_if { #code block }" # FIXME: "#code block" is poor, is there some way to fix this?
704
+ [ rec ]
705
+ end
706
+ let(:status) { "success" }
769
707
 
770
- context "when server_url is not empty" do
771
- context "when server_url is an invalid URI" do
772
- it "raises an exception" do
773
- Chef::Config[:data_collector][:server_url] = "this is not a URI"
774
- expect { reporter.send(:validate_data_collector_server_url!) }.to raise_error(Chef::Exceptions::ConfigurationError)
708
+ before do
709
+ conditional = (new_resource.not_if { true }).first
710
+ events.resource_action_start(new_resource, :create)
711
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
712
+ events.resource_skipped(new_resource, :create, conditional)
713
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
714
+ events.resource_completed(new_resource)
715
+ events.converge_complete
716
+ run_status.stop_clock
775
717
  end
776
- end
777
718
 
778
- context "when server_url is a valid URI" do
779
- context "when server_url is a URI with no host" do
780
- it "raises an exception" do
781
- Chef::Config[:data_collector][:server_url] = "/file/uri.txt"
782
- expect { reporter.send(:validate_data_collector_server_url!) }.to raise_error(Chef::Exceptions::ConfigurationError)
783
- end
719
+ it_behaves_like "sends a converge message"
720
+ end
784
721
 
722
+ context "when the run contains a file resource that is skipped due to a string conditional" do
723
+ let(:total_resource_count) { 1 }
724
+ let(:updated_resource_count) { 0 }
725
+ let(:resource_record) do
726
+ rec = resource_record_for(current_resource, new_resource, :create, "skipped", "1234")
727
+ rec["conditional"] = 'not_if "true"'
728
+ [ rec ]
785
729
  end
730
+ let(:status) { "success" }
786
731
 
787
- context "when server_url is a URI with a valid host" do
788
- it "does not an exception" do
789
- Chef::Config[:data_collector][:server_url] = "http://www.google.com/data-collector"
790
- expect { reporter.send(:validate_data_collector_server_url!) }.not_to raise_error
791
- end
732
+ before do
733
+ conditional = (new_resource.not_if "true").first
734
+ events.resource_action_start(new_resource, :create)
735
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
736
+ events.resource_skipped(new_resource, :create, conditional)
737
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
738
+ events.resource_completed(new_resource)
739
+ events.converge_complete
740
+ run_status.stop_clock
792
741
  end
793
- end
794
- end
795
- end
796
742
 
797
- describe "#validate_data_collector_output_locations!" do
798
- context "when output_locations is empty" do
799
- it "raises an exception" do
800
- Chef::Config[:data_collector][:output_locations] = {}
801
- expect { reporter.send(:validate_data_collector_output_locations!) }.to raise_error(Chef::Exceptions::ConfigurationError)
743
+ it_behaves_like "sends a converge message"
802
744
  end
803
- end
804
745
 
805
- context "when valid output_locations are provided" do
806
- it "does not raise an exception" do
807
- expect(reporter).to receive(:open).with("data_collection.json", "a")
808
- Chef::Config[:data_collector][:output_locations] = { urls: ["http://data_collector"], files: ["data_collection.json"] }
809
- expect { reporter.send(:validate_data_collector_output_locations!) }.not_to raise_error(Chef::Exceptions::ConfigurationError)
810
- end
811
- end
746
+ context "when the run contains a file resource that threw an exception" do
747
+ let(:exception) { Exception.new("imperial to metric conversion error") }
748
+ let(:error_description) { Chef::Formatters::ErrorMapper.resource_failed(new_resource, :create, exception).for_json }
749
+ let(:total_resource_count) { 1 }
750
+ let(:updated_resource_count) { 0 }
751
+ let(:resource_record) do
752
+ rec = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
753
+ rec["error_message"] = "imperial to metric conversion error"
754
+ [ rec ]
755
+ end
756
+ let(:status) { "failure" }
757
+
758
+ before do
759
+ exception.set_backtrace(caller)
760
+ events.resource_action_start(new_resource, :create)
761
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
762
+ events.resource_failed(new_resource, :create, exception)
763
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
764
+ events.resource_completed(new_resource)
765
+ events.converge_complete
766
+ run_status.stop_clock
767
+ run_status.exception = exception
768
+ end
812
769
 
813
- context "when output_locations contains an invalid URI" do
814
- it "raises an exception" do
815
- Chef::Config[:data_collector][:output_locations] = { urls: ["this is not a url"], files: ["/tmp/data_collection.json"] }
816
- expect { reporter.send(:validate_data_collector_output_locations!) }.to raise_error(Chef::Exceptions::ConfigurationError)
770
+ it_behaves_like "sends a converge message"
817
771
  end
818
- end
819
- end
820
772
 
821
- describe "#detect_unprocessed_resources" do
822
- context "when resources do not override core methods" do
823
- it "adds resource reports for any resources that have not yet been processed" do
824
- resource_a = Chef::Resource::Service.new("processed service")
825
- resource_b = Chef::Resource::Service.new("unprocessed service")
773
+ context "when the run contains a file resource that threw an exception in load_current_resource" do
774
+ let(:exception) { Exception.new("imperial to metric conversion error") }
775
+ let(:error_description) { Chef::Formatters::ErrorMapper.resource_failed(new_resource, :create, exception).for_json }
776
+ let(:total_resource_count) { 1 }
777
+ let(:updated_resource_count) { 0 }
778
+ let(:resource_record) do
779
+ rec = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
780
+ rec["before"] = {}
781
+ rec["error_message"] = "imperial to metric conversion error"
782
+ [ rec ]
783
+ end
784
+ let(:status) { "failure" }
826
785
 
827
- resource_a.action = %i{enable start}
828
- resource_b.action = :start
786
+ before do
787
+ exception.set_backtrace(caller)
788
+ events.resource_action_start(new_resource, :create)
789
+ # resource_current_state_loaded is skipped
790
+ events.resource_failed(new_resource, :create, exception)
791
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
792
+ events.resource_completed(new_resource)
793
+ events.converge_failed(exception)
794
+ run_status.stop_clock
795
+ run_status.exception = exception
796
+ end
829
797
 
830
- run_context = Chef::RunContext.new(Chef::Node.new, Chef::CookbookCollection.new, nil)
831
- run_context.resource_collection.insert(resource_a)
832
- run_context.resource_collection.insert(resource_b)
798
+ it_behaves_like "sends a converge message"
799
+ end
833
800
 
834
- allow(reporter).to receive(:run_context).and_return(run_context)
801
+ context "when the resource collection contains a resource that was unproccesed due to prior errors" do
802
+ let(:exception) { Exception.new("imperial to metric conversion error") }
803
+ let(:error_description) { Chef::Formatters::ErrorMapper.resource_failed(new_resource, :create, exception).for_json }
804
+ let(:total_resource_count) { 2 }
805
+ let(:updated_resource_count) { 0 }
806
+ let(:unprocessed_resource) do
807
+ res = Chef::Resource::Service.new("unprocessed service")
808
+ res.cookbook_name = cookbook_name
809
+ res.recipe_name = recipe_name
810
+ allow(res).to receive(:cookbook_version).and_return(cookbook_version)
811
+ res
812
+ end
813
+ let(:resource_record) do
814
+ rec1 = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
815
+ rec1["error_message"] = "imperial to metric conversion error"
816
+ rec2 = resource_record_for(nil, unprocessed_resource, :nothing, "unprocessed", "")
817
+ rec2["before"] = {}
818
+ [ rec1, rec2 ]
819
+ end
820
+ let(:status) { "failure" }
835
821
 
836
- # process the actions for resource_a, but not resource_b
837
- reporter.resource_up_to_date(resource_a, :enable)
838
- reporter.resource_completed(resource_a)
839
- reporter.resource_up_to_date(resource_a, :start)
840
- reporter.resource_completed(resource_a)
841
- expect(reporter.all_resource_reports.size).to eq(2)
822
+ before do
823
+ run_context.resource_collection << new_resource
824
+ run_context.resource_collection << unprocessed_resource
825
+ exception.set_backtrace(caller)
826
+ events.resource_action_start(new_resource, :create)
827
+ events.resource_current_state_loaded(new_resource, :create, current_resource)
828
+ events.resource_failed(new_resource, :create, exception)
829
+ new_resource.instance_variable_set(:@elapsed_time, 1.2345)
830
+ events.resource_completed(new_resource)
831
+ new_resource.executed_by_runner = true
832
+ events.converge_failed(exception)
833
+ run_status.stop_clock
834
+ run_status.exception = exception
835
+ end
842
836
 
843
- # detect unprocessed resources, which should find that resource_b has not yet been processed
844
- reporter.send(:detect_unprocessed_resources)
845
- expect(reporter.all_resource_reports.size).to eq(3)
837
+ it_behaves_like "sends a converge message"
846
838
  end
847
- end
848
839
 
849
- context "when a resource overrides a core method, such as #hash" do
850
- it "does not raise an exception" do
851
- resource_a = Chef::Resource::Service.new("processed service")
852
- resource_b = Chef::Resource::Service.new("unprocessed service")
840
+ context "when cookbook resolution fails" do
841
+ let(:exception) { Exception.new("imperial to metric conversion error") }
842
+ let(:error_description) { Chef::Formatters::ErrorMapper.cookbook_resolution_failed(expansion, exception).for_json }
843
+ let(:total_resource_count) { 0 }
844
+ let(:updated_resource_count) { 0 }
845
+ let(:status) { "failure" }
853
846
 
854
- resource_a.action = :start
855
- resource_b.action = :start
856
-
857
- run_context = Chef::RunContext.new(Chef::Node.new, Chef::CookbookCollection.new, nil)
858
- run_context.resource_collection.insert(resource_a)
859
- run_context.resource_collection.insert(resource_b)
847
+ before do
848
+ events.cookbook_resolution_failed(expansion, exception)
849
+ run_status.stop_clock
850
+ run_status.exception = exception
851
+ end
860
852
 
861
- allow(reporter).to receive(:run_context).and_return(run_context)
853
+ it_behaves_like "sends a converge message"
854
+ end
862
855
 
863
- # override the #hash method on resource_a to return a String instead of
864
- # a Fixnum. Without the fix in chef/chef#5604, this would raise an
865
- # exception when getting added to the Set/Hash.
866
- resource_a.define_singleton_method(:hash) { "a string" }
856
+ context "When cookbook synchronization fails" do
857
+ let(:exception) { Exception.new("imperial to metric conversion error") }
858
+ let(:error_description) { Chef::Formatters::ErrorMapper.cookbook_sync_failed({}, exception).for_json }
859
+ let(:total_resource_count) { 0 }
860
+ let(:updated_resource_count) { 0 }
861
+ let(:status) { "failure" }
867
862
 
868
- # process the actions for resource_a, but not resource_b
869
- reporter.resource_up_to_date(resource_a, :start)
870
- reporter.resource_completed(resource_a)
863
+ before do
864
+ events.cookbook_sync_failed(expansion, exception)
865
+ run_status.stop_clock
866
+ run_status.exception = exception
867
+ end
871
868
 
872
- expect { reporter.send(:detect_unprocessed_resources) }.not_to raise_error
869
+ it_behaves_like "sends a converge message"
873
870
  end
871
+
872
+ end
873
+ end
874
+
875
+ describe "#send_to_file_location(file_name, message)" do
876
+ let(:tempfile) { Tempfile.new("rspec-chef-datacollector-out") }
877
+ let(:shift_jis) { "I have no idea what this character is:\n #{0x83.chr}#{0x80.chr}.\n" }
878
+ it "handles invalid UTF-8 properly" do
879
+ data_collector.send(:send_to_file_location, tempfile, { invalid: shift_jis })
874
880
  end
875
881
  end
876
882
  end