chef 12.10.24-universal-mingw32 → 12.11.18-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -38
  3. data/Gemfile +6 -11
  4. data/LICENSE +201 -201
  5. data/README.md +11 -1
  6. data/VERSION +1 -1
  7. data/acceptance/.bundle/config +2 -0
  8. data/acceptance/Gemfile.lock +27 -26
  9. data/acceptance/basics/.kitchen/logs/chef-current-install-ubuntu-1404.log +2 -0
  10. data/acceptance/basics/.kitchen/logs/kitchen.log +3 -0
  11. data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -0
  12. data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -0
  13. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -0
  14. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -0
  15. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -0
  16. data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -0
  17. data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -0
  18. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +85 -0
  19. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -0
  20. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -0
  21. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -0
  22. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -0
  23. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -0
  24. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -0
  25. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -0
  26. data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +38 -0
  27. data/acceptance/data-collector/.kitchen.yml +9 -0
  28. data/acceptance/data-collector/Berksfile +3 -0
  29. data/acceptance/data-collector/Berksfile.lock +6 -0
  30. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +251 -0
  31. data/acceptance/fips/.kitchen/logs/fips-integration-centos-6.log +3 -0
  32. data/acceptance/fips/.kitchen/logs/fips-integration-windows-2012r2.log +3 -0
  33. data/acceptance/fips/.kitchen/logs/fips-unit-functional-centos-6.log +3 -0
  34. data/acceptance/fips/.kitchen/logs/fips-unit-functional-windows-2012r2.log +3 -0
  35. data/acceptance/fips/.kitchen/logs/kitchen.log +6 -0
  36. data/acceptance/fips/test/integration/fips-integration/serverspec/fips-integration_spec.rb +2 -1
  37. data/acceptance/top-cookbooks/.kitchen.docker.yml +1 -4
  38. data/acceptance/trivial/.kitchen/logs/chef-current-install-windows-2012r2.log +2 -0
  39. data/acceptance/trivial/.kitchen/logs/kitchen.log +3 -0
  40. data/acceptance/windows-service/.kitchen/logs/chef-windows-service-windows-2012r2.log +2 -0
  41. data/acceptance/windows-service/.kitchen/logs/kitchen.log +3 -0
  42. data/bin/chef-apply +0 -0
  43. data/bin/chef-client +0 -0
  44. data/bin/chef-service-manager +0 -0
  45. data/bin/chef-shell +0 -0
  46. data/bin/chef-solo +0 -0
  47. data/bin/chef-windows-service +0 -0
  48. data/bin/knife +0 -0
  49. data/chef.gemspec +1 -0
  50. data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
  51. data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
  52. data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
  53. data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
  54. data/distro/common/html/_sources/index.txt +135 -135
  55. data/distro/common/html/_sources/knife.txt +74 -74
  56. data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
  57. data/distro/common/html/_sources/knife_client.txt +150 -150
  58. data/distro/common/html/_sources/knife_common_options.txt +6 -6
  59. data/distro/common/html/_sources/knife_configure.txt +29 -29
  60. data/distro/common/html/_sources/knife_cookbook.txt +236 -236
  61. data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
  62. data/distro/common/html/_sources/knife_data_bag.txt +159 -159
  63. data/distro/common/html/_sources/knife_delete.txt +26 -26
  64. data/distro/common/html/_sources/knife_deps.txt +61 -61
  65. data/distro/common/html/_sources/knife_diff.txt +34 -34
  66. data/distro/common/html/_sources/knife_download.txt +44 -44
  67. data/distro/common/html/_sources/knife_edit.txt +26 -26
  68. data/distro/common/html/_sources/knife_environment.txt +158 -158
  69. data/distro/common/html/_sources/knife_exec.txt +47 -47
  70. data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
  71. data/distro/common/html/_sources/knife_list.txt +33 -33
  72. data/distro/common/html/_sources/knife_node.txt +250 -250
  73. data/distro/common/html/_sources/knife_raw.txt +35 -35
  74. data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
  75. data/distro/common/html/_sources/knife_role.txt +157 -157
  76. data/distro/common/html/_sources/knife_search.txt +53 -53
  77. data/distro/common/html/_sources/knife_serve.txt +18 -18
  78. data/distro/common/html/_sources/knife_show.txt +26 -26
  79. data/distro/common/html/_sources/knife_ssh.txt +43 -43
  80. data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
  81. data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
  82. data/distro/common/html/_sources/knife_status.txt +37 -37
  83. data/distro/common/html/_sources/knife_tag.txt +69 -69
  84. data/distro/common/html/_sources/knife_upload.txt +49 -49
  85. data/distro/common/html/_sources/knife_user.txt +127 -127
  86. data/distro/common/html/_sources/knife_using.txt +43 -43
  87. data/distro/common/html/_sources/knife_xargs.txt +30 -30
  88. data/distro/common/html/_static/guide.css +504 -504
  89. data/distro/common/html/_static/pygments.css +61 -61
  90. data/distro/common/html/_static/underscore.js +31 -31
  91. data/distro/common/html/ctl_chef_client.html +269 -269
  92. data/distro/common/html/ctl_chef_server.html +727 -727
  93. data/distro/common/html/ctl_chef_shell.html +162 -162
  94. data/distro/common/html/ctl_chef_solo.html +193 -193
  95. data/distro/common/html/index.html +201 -201
  96. data/distro/common/html/knife.html +169 -169
  97. data/distro/common/html/knife_bootstrap.html +284 -284
  98. data/distro/common/html/knife_client.html +284 -284
  99. data/distro/common/html/knife_common_options.html +95 -95
  100. data/distro/common/html/knife_configure.html +104 -104
  101. data/distro/common/html/knife_cookbook.html +486 -486
  102. data/distro/common/html/knife_data_bag.html +373 -373
  103. data/distro/common/html/knife_delete.html +92 -92
  104. data/distro/common/html/knife_deps.html +142 -142
  105. data/distro/common/html/knife_diff.html +122 -122
  106. data/distro/common/html/knife_download.html +144 -144
  107. data/distro/common/html/knife_edit.html +88 -88
  108. data/distro/common/html/knife_environment.html +325 -325
  109. data/distro/common/html/knife_exec.html +219 -219
  110. data/distro/common/html/knife_index_rebuild.html +82 -82
  111. data/distro/common/html/knife_list.html +113 -113
  112. data/distro/common/html/knife_node.html +457 -457
  113. data/distro/common/html/knife_raw.html +109 -109
  114. data/distro/common/html/knife_recipe_list.html +90 -90
  115. data/distro/common/html/knife_role.html +294 -294
  116. data/distro/common/html/knife_search.html +202 -202
  117. data/distro/common/html/knife_serve.html +78 -78
  118. data/distro/common/html/knife_show.html +103 -103
  119. data/distro/common/html/knife_ssh.html +176 -176
  120. data/distro/common/html/knife_ssl_check.html +150 -150
  121. data/distro/common/html/knife_ssl_fetch.html +150 -150
  122. data/distro/common/html/knife_status.html +143 -143
  123. data/distro/common/html/knife_tag.html +137 -137
  124. data/distro/common/html/knife_upload.html +152 -152
  125. data/distro/common/html/knife_user.html +241 -241
  126. data/distro/common/html/knife_using.html +209 -209
  127. data/distro/common/html/knife_xargs.html +121 -121
  128. data/distro/common/html/search.html +81 -81
  129. data/distro/common/man/man1/README.md +58 -58
  130. data/distro/common/man/man1/chef-shell.1 +194 -194
  131. data/distro/common/man/man1/knife-bootstrap.1 +215 -215
  132. data/distro/common/man/man1/knife-client.1 +443 -443
  133. data/distro/common/man/man1/knife-configure.1 +161 -161
  134. data/distro/common/man/man1/knife-cookbook.1 +770 -770
  135. data/distro/common/man/man1/knife-data-bag.1 +617 -617
  136. data/distro/common/man/man1/knife-delete.1 +127 -127
  137. data/distro/common/man/man1/knife-deps.1 +246 -246
  138. data/distro/common/man/man1/knife-diff.1 +226 -226
  139. data/distro/common/man/man1/knife-download.1 +258 -258
  140. data/distro/common/man/man1/knife-edit.1 +121 -121
  141. data/distro/common/man/man1/knife-environment.1 +508 -508
  142. data/distro/common/man/man1/knife-exec.1 +362 -362
  143. data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
  144. data/distro/common/man/man1/knife-list.1 +174 -174
  145. data/distro/common/man/man1/knife-node.1 +716 -716
  146. data/distro/common/man/man1/knife-raw.1 +172 -172
  147. data/distro/common/man/man1/knife-recipe-list.1 +85 -85
  148. data/distro/common/man/man1/knife-role.1 +426 -426
  149. data/distro/common/man/man1/knife-search.1 +359 -359
  150. data/distro/common/man/man1/knife-serve.1 +109 -109
  151. data/distro/common/man/man1/knife-show.1 +160 -160
  152. data/distro/common/man/man1/knife-ssh.1 +284 -284
  153. data/distro/common/man/man1/knife-ssl-check.1 +207 -207
  154. data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
  155. data/distro/common/man/man1/knife-status.1 +234 -234
  156. data/distro/common/man/man1/knife-tag.1 +189 -189
  157. data/distro/common/man/man1/knife-upload.1 +280 -280
  158. data/distro/common/man/man1/knife-user.1 +356 -356
  159. data/distro/common/man/man1/knife-xargs.1 +189 -189
  160. data/distro/common/man/man1/knife.1 +332 -332
  161. data/distro/common/man/man8/chef-apply.8 +86 -86
  162. data/distro/common/man/man8/chef-client.8 +398 -398
  163. data/distro/common/man/man8/chef-solo.8 +260 -260
  164. data/distro/common/markdown/README +3 -3
  165. data/lib/chef/application.rb +14 -9
  166. data/lib/chef/application/apply.rb +5 -5
  167. data/lib/chef/application/client.rb +3 -3
  168. data/lib/chef/application/exit_code.rb +226 -0
  169. data/lib/chef/application/solo.rb +37 -7
  170. data/lib/chef/application/windows_service.rb +3 -3
  171. data/lib/chef/chef_fs/command_line.rb +7 -0
  172. data/lib/chef/chef_fs/config.rb +1 -1
  173. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +11 -10
  174. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  175. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  176. data/lib/chef/chef_fs/file_system.rb +15 -13
  177. data/lib/chef/chef_fs/file_system/base_fs_object.rb +4 -0
  178. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
  179. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +9 -0
  180. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +6 -0
  181. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -0
  182. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
  183. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
  184. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +4 -0
  185. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +4 -0
  186. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +4 -0
  187. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +4 -0
  188. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
  189. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +15 -4
  190. data/lib/chef/chef_fs/file_system/exceptions.rb +7 -0
  191. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -2
  192. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
  193. data/lib/chef/chef_fs/file_system/repository/acl.rb +7 -0
  194. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +0 -4
  195. data/lib/chef/chef_fs/file_system/repository/base_file.rb +36 -4
  196. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +4 -0
  197. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +0 -4
  198. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +0 -3
  199. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +0 -4
  200. data/lib/chef/chef_fs/file_system/repository/directory.rb +4 -0
  201. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +0 -4
  202. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +0 -4
  203. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +0 -4
  204. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +0 -4
  205. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +0 -4
  206. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +0 -4
  207. data/lib/chef/client.rb +11 -3
  208. data/lib/chef/config_fetcher.rb +4 -4
  209. data/lib/chef/cookbook/gem_installer.rb +1 -0
  210. data/lib/chef/cookbook/synchronizer.rb +1 -1
  211. data/lib/chef/data_bag.rb +2 -2
  212. data/lib/chef/data_bag_item.rb +1 -1
  213. data/lib/chef/data_collector.rb +345 -0
  214. data/lib/chef/data_collector/messages.rb +125 -0
  215. data/lib/chef/data_collector/messages/helpers.rb +161 -0
  216. data/lib/chef/data_collector/resource_report.rb +84 -0
  217. data/lib/chef/decorator.rb +81 -0
  218. data/lib/chef/decorator/lazy.rb +60 -0
  219. data/lib/chef/decorator/lazy_array.rb +59 -0
  220. data/lib/chef/deprecation/provider/remote_file.rb +1 -1
  221. data/lib/chef/dsl/core.rb +19 -11
  222. data/lib/chef/dsl/platform_introspection.rb +16 -0
  223. data/lib/chef/dsl/recipe.rb +15 -9
  224. data/lib/chef/dsl/universal.rb +50 -0
  225. data/lib/chef/environment.rb +2 -2
  226. data/lib/chef/exceptions.rb +19 -4
  227. data/lib/chef/handler.rb +33 -0
  228. data/lib/chef/knife/cookbook_show.rb +6 -10
  229. data/lib/chef/knife/cookbook_site_install.rb +7 -2
  230. data/lib/chef/knife/help_topics.rb +4 -4
  231. data/lib/chef/knife/list.rb +1 -2
  232. data/lib/chef/knife/ssl_check.rb +2 -1
  233. data/lib/chef/monkey_patches/win32/registry.rb +11 -0
  234. data/lib/chef/nil_argument.rb +3 -3
  235. data/lib/chef/node.rb +2 -2
  236. data/lib/chef/platform/rebooter.rb +13 -2
  237. data/lib/chef/policy_builder/dynamic.rb +1 -1
  238. data/lib/chef/policy_builder/expand_node_object.rb +3 -3
  239. data/lib/chef/policy_builder/policyfile.rb +1 -1
  240. data/lib/chef/provider/git.rb +43 -41
  241. data/lib/chef/provider/lwrp_base.rb +0 -1
  242. data/lib/chef/provider/osx_profile.rb +2 -3
  243. data/lib/chef/provider/package.rb +51 -13
  244. data/lib/chef/provider/package/apt.rb +97 -103
  245. data/lib/chef/provider/package/chocolatey.rb +9 -10
  246. data/lib/chef/provider/package/dpkg.rb +2 -2
  247. data/lib/chef/provider/package/portage.rb +1 -1
  248. data/lib/chef/provider/package/rubygems.rb +8 -12
  249. data/lib/chef/provider/package/yum.rb +4 -959
  250. data/lib/chef/provider/package/yum/rpm_utils.rb +642 -0
  251. data/lib/chef/provider/package/{yum-dump.py → yum/yum-dump.py} +0 -0
  252. data/lib/chef/provider/package/yum/yum_cache.rb +376 -0
  253. data/lib/chef/provider/resource_update.rb +52 -52
  254. data/lib/chef/provider/systemd_unit.rb +238 -0
  255. data/lib/chef/providers.rb +1 -0
  256. data/lib/chef/reserved_names.rb +9 -9
  257. data/lib/chef/resource.rb +2 -7
  258. data/lib/chef/resource/file.rb +6 -1
  259. data/lib/chef/resource/systemd_unit.rb +63 -0
  260. data/lib/chef/resources.rb +1 -0
  261. data/lib/chef/sandbox.rb +20 -20
  262. data/lib/chef/shell/shell_session.rb +3 -3
  263. data/lib/chef/version.rb +1 -1
  264. data/lib/chef/win32/system.rb +0 -0
  265. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  266. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  267. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  268. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  269. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  270. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  271. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  272. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  273. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  274. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  275. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  276. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  277. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +0 -0
  278. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  279. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  280. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  281. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  282. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  283. data/spec/data/apt/var/www/apt/db/version +4 -4
  284. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  285. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  286. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  287. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  288. data/spec/data/bootstrap/no_proxy.erb +2 -2
  289. data/spec/data/bootstrap/secret.erb +9 -9
  290. data/spec/data/bootstrap/test-hints.erb +12 -12
  291. data/spec/data/bootstrap/test.erb +1 -1
  292. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  293. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  294. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  295. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  296. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  297. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  298. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  299. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  300. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  301. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  302. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  303. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  304. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  305. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  306. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  307. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  308. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  309. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  310. data/spec/data/config.rb +6 -6
  311. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  312. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  313. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  314. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  315. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  316. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  317. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  318. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  319. data/spec/data/cookbooks/chefignore +8 -8
  320. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  321. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  322. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  323. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  324. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  325. data/spec/data/cookbooks/java/metadata.rb +2 -2
  326. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  327. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  328. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  329. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  330. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  331. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  332. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  333. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  334. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  335. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  336. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  337. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  338. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  339. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  340. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  341. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  342. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  343. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  344. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  345. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  346. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  347. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  348. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  349. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  350. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  352. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  353. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  354. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  355. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  356. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  357. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  358. data/spec/data/definitions/test.rb +4 -4
  359. data/spec/data/environment-config.rb +4 -4
  360. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  361. data/spec/data/fileedit/hosts +4 -4
  362. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  363. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  364. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  365. data/spec/data/kitchen/chefignore +6 -6
  366. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  367. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  368. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  369. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  370. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  371. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  372. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  373. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  374. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  375. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  376. data/spec/data/lwrp/providers/inline_compiler.rb +26 -26
  377. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  378. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  379. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  380. data/spec/data/lwrp/resources/foo.rb +4 -4
  381. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  382. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  383. data/spec/data/mac_users/10.7-8.plist.xml +559 -559
  384. data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
  385. data/spec/data/mac_users/10.7.plist.xml +559 -559
  386. data/spec/data/mac_users/10.7.shadow.xml +11 -11
  387. data/spec/data/mac_users/10.8.plist.xml +559 -559
  388. data/spec/data/mac_users/10.8.shadow.xml +21 -21
  389. data/spec/data/mac_users/10.9.plist.xml +560 -560
  390. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  391. data/spec/data/metadata/quick_start/metadata.rb +19 -19
  392. data/spec/data/nodes/default.rb +15 -15
  393. data/spec/data/nodes/test.example.com.rb +17 -17
  394. data/spec/data/nodes/test.rb +15 -15
  395. data/spec/data/null_config.rb +1 -1
  396. data/spec/data/object_loader/environments/test.json +7 -7
  397. data/spec/data/object_loader/environments/test.rb +2 -2
  398. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  399. data/spec/data/object_loader/nodes/test.json +7 -7
  400. data/spec/data/object_loader/nodes/test.rb +2 -2
  401. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  402. data/spec/data/object_loader/roles/test.json +7 -7
  403. data/spec/data/object_loader/roles/test.rb +2 -2
  404. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  405. data/spec/data/partial_one.erb +1 -1
  406. data/spec/data/recipes/test.rb +7 -7
  407. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -4
  408. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  409. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  410. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  411. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  412. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  413. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -3
  414. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  415. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  416. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  417. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  418. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  419. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
  420. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
  421. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -3
  422. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  423. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  424. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  425. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  426. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -3
  427. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  428. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  429. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  430. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  431. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -3
  432. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  433. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  434. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  435. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -3
  436. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  437. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  438. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  439. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  440. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  441. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -3
  442. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  443. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  444. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  445. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  446. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  447. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  448. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  449. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  450. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  451. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  452. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  453. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  454. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  455. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  456. data/spec/data/run_context/nodes/run_context.rb +5 -5
  457. data/spec/data/search_queries_to_transform.txt +98 -98
  458. data/spec/data/shef-config.rb +10 -10
  459. data/spec/data/ssl/5e707473.0 +18 -18
  460. data/spec/data/ssl/chef-rspec.cert +27 -27
  461. data/spec/data/ssl/chef-rspec.key +27 -27
  462. data/spec/data/ssl/key.pem +15 -15
  463. data/spec/data/ssl/private_key.pem +27 -27
  464. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  465. data/spec/data/standalone_cookbook/chefignore +9 -9
  466. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  467. data/spec/data/trusted_certs/example.crt +22 -22
  468. data/spec/data/trusted_certs/intermediate.pem +27 -27
  469. data/spec/data/trusted_certs/root.pem +22 -22
  470. data/spec/functional/assets/chefinittest +34 -34
  471. data/spec/functional/assets/testchefsubsys +10 -10
  472. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +0 -0
  473. data/spec/functional/resource/aix_service_spec.rb +0 -0
  474. data/spec/functional/resource/aixinit_service_spec.rb +0 -0
  475. data/spec/functional/resource/chocolatey_package_spec.rb +0 -5
  476. data/spec/functional/resource/env_spec.rb +0 -0
  477. data/spec/functional/win32/registry_spec.rb +1 -0
  478. data/spec/integration/client/exit_code_spec.rb +245 -0
  479. data/spec/integration/knife/deps_spec.rb +7 -7
  480. data/spec/integration/knife/download_spec.rb +19 -0
  481. data/spec/integration/knife/list_spec.rb +0 -8
  482. data/spec/integration/knife/upload_spec.rb +21 -2
  483. data/spec/integration/solo/solo_spec.rb +1 -1
  484. data/spec/rcov.opts +2 -2
  485. data/spec/unit/application/apply_spec.rb +6 -4
  486. data/spec/unit/application/exit_code_spec.rb +231 -0
  487. data/spec/unit/application/solo_spec.rb +143 -88
  488. data/spec/unit/chef_fs/config_spec.rb +129 -0
  489. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +8 -10
  490. data/spec/unit/client_spec.rb +1 -1
  491. data/spec/unit/config_fetcher_spec.rb +2 -2
  492. data/spec/unit/cookbook/synchronizer_spec.rb +1 -1
  493. data/spec/unit/data_bag_item_spec.rb +2 -2
  494. data/spec/unit/data_bag_spec.rb +2 -2
  495. data/spec/unit/data_collector/messages/helpers_spec.rb +190 -0
  496. data/spec/unit/data_collector/messages_spec.rb +207 -0
  497. data/spec/unit/data_collector_spec.rb +525 -0
  498. data/spec/unit/decorator/lazy_array_spec.rb +58 -0
  499. data/spec/unit/decorator/lazy_spec.rb +39 -0
  500. data/spec/unit/decorator_spec.rb +142 -0
  501. data/spec/unit/environment_spec.rb +4 -4
  502. data/spec/unit/handler_spec.rb +87 -0
  503. data/spec/unit/knife/cookbook_show_spec.rb +89 -90
  504. data/spec/unit/knife/ssl_check_spec.rb +16 -0
  505. data/spec/unit/policy_builder/dynamic_spec.rb +1 -1
  506. data/spec/unit/policy_builder/policyfile_spec.rb +1 -1
  507. data/spec/unit/provider/git_spec.rb +77 -18
  508. data/spec/unit/provider/package/apt_spec.rb +97 -34
  509. data/spec/unit/provider/package/chocolatey_spec.rb +3 -15
  510. data/spec/unit/provider/package/portage_spec.rb +6 -0
  511. data/spec/unit/provider/package/rubygems_spec.rb +38 -4
  512. data/spec/unit/provider/package/yum/yum_cache_spec.rb +27 -0
  513. data/spec/unit/provider/package_spec.rb +20 -7
  514. data/spec/unit/provider/systemd_unit_spec.rb +885 -0
  515. data/spec/unit/resource/systemd_unit_spec.rb +133 -0
  516. data/spec/unit/resource_builder_spec.rb +1 -1
  517. data/tasks/bin/bundle-platform +6 -2
  518. data/tasks/bin/bundle-platform.bat +0 -0
  519. data/tasks/bin/create-override-gemfile +0 -0
  520. data/tasks/bin/run_external_test +0 -0
  521. data/tasks/bundle_util.rb +18 -2
  522. data/tasks/changelog.rb +1 -0
  523. data/tasks/dependencies.rb +47 -57
  524. metadata +847 -7
  525. data/tasks/bin/run_chef_tests +0 -17
@@ -0,0 +1,525 @@
1
+ #
2
+ # Author:: Adam Leff (<adamleff@chef.io)
3
+ # Author:: Ryan Cragun (<ryan@chef.io>)
4
+ #
5
+ # Copyright:: Copyright 2012-2016, Chef Software Inc.
6
+ # License:: Apache License, Version 2.0
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ require "spec_helper"
22
+ require "chef/data_collector"
23
+
24
+ describe Chef::DataCollector do
25
+ describe ".register_reporter?" do
26
+ context "when no data collector URL is configured" do
27
+ it "returns false" do
28
+ Chef::Config[:data_collector][:server_url] = nil
29
+ expect(Chef::DataCollector.register_reporter?).to be_falsey
30
+ end
31
+ end
32
+
33
+ context "when a data collector URL is configured" do
34
+ before do
35
+ Chef::Config[:data_collector][:server_url] = "http://data_collector"
36
+ end
37
+
38
+ context "when operating in why_run mode" do
39
+ it "returns false" do
40
+ Chef::Config[:why_run] = true
41
+ expect(Chef::DataCollector.register_reporter?).to be_falsey
42
+ end
43
+ end
44
+
45
+ context "when not operating in why_run mode" do
46
+ before do
47
+ Chef::Config[:why_run] = false
48
+ end
49
+
50
+ context "when report is enabled for current mode" do
51
+ it "returns true" do
52
+ allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(true)
53
+ expect(Chef::DataCollector.register_reporter?).to be_truthy
54
+ end
55
+ end
56
+
57
+ context "when report is disabled for current mode" do
58
+ it "returns false" do
59
+ allow(Chef::DataCollector).to receive(:reporter_enabled_for_current_mode?).and_return(false)
60
+ expect(Chef::DataCollector.register_reporter?).to be_falsey
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ describe ".reporter_enabled_for_current_mode?" do
68
+ context "when running in solo mode" do
69
+ before do
70
+ Chef::Config[:solo] = true
71
+ Chef::Config[:local_mode] = false
72
+ end
73
+
74
+ context "when data_collector_mode is :solo" do
75
+ it "returns true" do
76
+ Chef::Config[:data_collector][:mode] = :solo
77
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
78
+ end
79
+ end
80
+
81
+ context "when data_collector_mode is :client" do
82
+ it "returns false" do
83
+ Chef::Config[:data_collector][:mode] = :client
84
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
85
+ end
86
+ end
87
+
88
+ context "when data_collector_mode is :both" do
89
+ it "returns true" do
90
+ Chef::Config[:data_collector][:mode] = :both
91
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
92
+ end
93
+ end
94
+ end
95
+
96
+ context "when running in local mode" do
97
+ before do
98
+ Chef::Config[:solo] = false
99
+ Chef::Config[:local_mode] = true
100
+ end
101
+
102
+ context "when data_collector_mode is :solo" do
103
+ it "returns true" do
104
+ Chef::Config[:data_collector][:mode] = :solo
105
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
106
+ end
107
+ end
108
+
109
+ context "when data_collector_mode is :client" do
110
+ it "returns false" do
111
+ Chef::Config[:data_collector][:mode] = :client
112
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
113
+ end
114
+ end
115
+
116
+ context "when data_collector_mode is :both" do
117
+ it "returns true" do
118
+ Chef::Config[:data_collector][:mode] = :both
119
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
120
+ end
121
+ end
122
+ end
123
+
124
+ context "when running in client mode" do
125
+ before do
126
+ Chef::Config[:solo] = false
127
+ Chef::Config[:local_mode] = false
128
+ end
129
+
130
+ context "when data_collector_mode is :solo" do
131
+ it "returns false" do
132
+ Chef::Config[:data_collector][:mode] = :solo
133
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(false)
134
+ end
135
+ end
136
+
137
+ context "when data_collector_mode is :client" do
138
+ it "returns true" do
139
+ Chef::Config[:data_collector][:mode] = :client
140
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
141
+ end
142
+ end
143
+
144
+ context "when data_collector_mode is :both" do
145
+ it "returns true" do
146
+ Chef::Config[:data_collector][:mode] = :both
147
+ expect(Chef::DataCollector.reporter_enabled_for_current_mode?).to eq(true)
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ describe Chef::DataCollector::Reporter do
155
+ let(:reporter) { described_class.new }
156
+ let(:run_status) { Chef::RunStatus.new(Chef::Node.new, Chef::EventDispatch::Dispatcher.new) }
157
+
158
+ describe '#run_started' do
159
+ before do
160
+ allow(reporter).to receive(:update_run_status)
161
+ allow(reporter).to receive(:send_to_data_collector)
162
+ allow(Chef::DataCollector::Messages).to receive(:run_start_message)
163
+ end
164
+
165
+ it "updates the run status" do
166
+ expect(reporter).to receive(:update_run_status).with(run_status)
167
+ reporter.run_started(run_status)
168
+ end
169
+
170
+ it "sends the RunStart message output to the Data Collector server" do
171
+ expect(Chef::DataCollector::Messages)
172
+ .to receive(:run_start_message)
173
+ .with(run_status)
174
+ .and_return(key: "value")
175
+ expect(reporter).to receive(:send_to_data_collector).with('{"key":"value"}')
176
+ reporter.run_started(run_status)
177
+ end
178
+ end
179
+
180
+ describe '#run_completed' do
181
+ it "sends the run completion" do
182
+ node = Chef::Node.new
183
+
184
+ expect(reporter).to receive(:send_run_completion).with(status: "success")
185
+ reporter.run_completed(node)
186
+ end
187
+ end
188
+
189
+ describe '#run_failed' do
190
+ it "updates the exception and sends the run completion" do
191
+ expect(reporter).to receive(:send_run_completion).with(status: "failure")
192
+ reporter.run_failed("test_exception")
193
+ end
194
+ end
195
+
196
+ describe '#resource_current_state_loaded' do
197
+ let(:new_resource) { double("new_resource") }
198
+ let(:action) { double("action") }
199
+ let(:current_resource) { double("current_resource") }
200
+
201
+ context "when resource is a nested resource" do
202
+ it "does not update the resource report" do
203
+ allow(reporter).to receive(:nested_resource?).and_return(true)
204
+ expect(reporter).not_to receive(:update_current_resource_report)
205
+ reporter.resource_current_state_loaded(new_resource, action, current_resource)
206
+ end
207
+ end
208
+
209
+ context "when resource is not a nested resource" do
210
+ it "updates the resource report" do
211
+ allow(reporter).to receive(:nested_resource?).and_return(false)
212
+ expect(Chef::DataCollector::ResourceReport).to receive(:new).with(
213
+ new_resource,
214
+ action,
215
+ current_resource)
216
+ .and_return("resource_report")
217
+ expect(reporter).to receive(:update_current_resource_report).with("resource_report")
218
+ reporter.resource_current_state_loaded(new_resource, action, current_resource)
219
+ end
220
+ end
221
+ end
222
+
223
+ describe '#resource_up_to_date' do
224
+ let(:new_resource) { double("new_resource") }
225
+ let(:action) { double("action") }
226
+ let(:resource_report) { double("resource_report") }
227
+
228
+ before do
229
+ allow(reporter).to receive(:increment_resource_count)
230
+ allow(reporter).to receive(:nested_resource?)
231
+ allow(reporter).to receive(:current_resource_report).and_return(resource_report)
232
+ allow(resource_report).to receive(:up_to_date)
233
+ end
234
+
235
+ it "increments the resource count" do
236
+ expect(reporter).to receive(:increment_resource_count)
237
+ reporter.resource_up_to_date(new_resource, action)
238
+ end
239
+
240
+ context "when the resource is a nested resource" do
241
+ it "does not mark the resource report as up-to-date" do
242
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
243
+ expect(resource_report).not_to receive(:up_to_date)
244
+ reporter.resource_up_to_date(new_resource, action)
245
+ end
246
+ end
247
+
248
+ context "when the resource is not a nested resource" do
249
+ it "marks the resource report as up-to-date" do
250
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
251
+ expect(resource_report).to receive(:up_to_date)
252
+ reporter.resource_up_to_date(new_resource, action)
253
+ end
254
+ end
255
+ end
256
+
257
+ describe '#resource_skipped' do
258
+ let(:new_resource) { double("new_resource") }
259
+ let(:action) { double("action") }
260
+ let(:conditional) { double("conditional") }
261
+ let(:resource_report) { double("resource_report") }
262
+
263
+ before do
264
+ allow(reporter).to receive(:increment_resource_count)
265
+ allow(reporter).to receive(:nested_resource?)
266
+ allow(reporter).to receive(:current_resource_report).and_return(resource_report)
267
+ allow(resource_report).to receive(:skipped)
268
+ end
269
+
270
+ it "increments the resource count" do
271
+ expect(reporter).to receive(:increment_resource_count)
272
+ reporter.resource_skipped(new_resource, action, conditional)
273
+ end
274
+
275
+ context "when the resource is a nested resource" do
276
+ it "does not mark the resource report as skipped" do
277
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
278
+ expect(resource_report).not_to receive(:skipped).with(conditional)
279
+ reporter.resource_skipped(new_resource, action, conditional)
280
+ end
281
+ end
282
+
283
+ context "when the resource is not a nested resource" do
284
+ it "updates the resource report" do
285
+ allow(reporter).to receive(:nested_resource?).and_return(false)
286
+ expect(Chef::DataCollector::ResourceReport).to receive(:new).with(
287
+ new_resource,
288
+ action)
289
+ .and_return("resource_report")
290
+ expect(reporter).to receive(:update_current_resource_report).with("resource_report")
291
+ reporter.resource_skipped(new_resource, action, conditional)
292
+ end
293
+
294
+ it "marks the resource report as skipped" do
295
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
296
+ expect(resource_report).to receive(:skipped).with(conditional)
297
+ reporter.resource_skipped(new_resource, action, conditional)
298
+ end
299
+ end
300
+ end
301
+
302
+ describe '#resource_updated' do
303
+ let(:resource_report) { double("resource_report") }
304
+
305
+ before do
306
+ allow(reporter).to receive(:current_resource_report).and_return(resource_report)
307
+ allow(resource_report).to receive(:updated)
308
+ end
309
+
310
+ it "increments the resource count" do
311
+ expect(reporter).to receive(:increment_resource_count)
312
+ reporter.resource_updated("new_resource", "action")
313
+ end
314
+
315
+ it "marks the resource report as updated" do
316
+ expect(resource_report).to receive(:updated)
317
+ reporter.resource_updated("new_resource", "action")
318
+ end
319
+ end
320
+
321
+ describe '#resource_failed' do
322
+ let(:new_resource) { double("new_resource") }
323
+ let(:action) { double("action") }
324
+ let(:exception) { double("exception") }
325
+ let(:error_mapper) { double("error_mapper") }
326
+ let(:resource_report) { double("resource_report") }
327
+
328
+ before do
329
+ allow(reporter).to receive(:increment_resource_count)
330
+ allow(reporter).to receive(:update_error_description)
331
+ allow(reporter).to receive(:current_resource_report).and_return(resource_report)
332
+ allow(resource_report).to receive(:failed)
333
+ allow(Chef::Formatters::ErrorMapper).to receive(:resource_failed).and_return(error_mapper)
334
+ allow(error_mapper).to receive(:for_json)
335
+ end
336
+
337
+ it "increments the resource count" do
338
+ expect(reporter).to receive(:increment_resource_count)
339
+ reporter.resource_failed(new_resource, action, exception)
340
+ end
341
+
342
+ it "updates the error description" do
343
+ expect(Chef::Formatters::ErrorMapper).to receive(:resource_failed).with(
344
+ new_resource,
345
+ action,
346
+ exception
347
+ ).and_return(error_mapper)
348
+ expect(error_mapper).to receive(:for_json).and_return("error_description")
349
+ expect(reporter).to receive(:update_error_description).with("error_description")
350
+ reporter.resource_failed(new_resource, action, exception)
351
+ end
352
+
353
+ context "when the resource is not a nested resource" do
354
+ it "marks the resource report as failed" do
355
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
356
+ expect(resource_report).to receive(:failed).with(exception)
357
+ reporter.resource_failed(new_resource, action, exception)
358
+ end
359
+ end
360
+
361
+ context "when the resource is a nested resource" do
362
+ it "does not mark the resource report as failed" do
363
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
364
+ expect(resource_report).not_to receive(:failed).with(exception)
365
+ reporter.resource_failed(new_resource, action, exception)
366
+ end
367
+ end
368
+ end
369
+
370
+ describe '#resource_completed' do
371
+ let(:new_resource) { double("new_resource") }
372
+ let(:resource_report) { double("resource_report") }
373
+
374
+ before do
375
+ allow(reporter).to receive(:add_updated_resource)
376
+ allow(reporter).to receive(:update_current_resource_report)
377
+ allow(resource_report).to receive(:finish)
378
+ end
379
+
380
+ context "when there is no current resource report" do
381
+ it "does not add the updated resource" do
382
+ allow(reporter).to receive(:current_resource_report).and_return(nil)
383
+ expect(reporter).not_to receive(:add_updated_resource)
384
+ reporter.resource_completed(new_resource)
385
+ end
386
+ end
387
+
388
+ context "when there is a current resource report" do
389
+ before do
390
+ allow(reporter).to receive(:current_resource_report).and_return(resource_report)
391
+ end
392
+
393
+ context "when the resource is a nested resource" do
394
+ it "does not add the updated resource" do
395
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(true)
396
+ expect(reporter).not_to receive(:add_updated_resource)
397
+ reporter.resource_completed(new_resource)
398
+ end
399
+ end
400
+
401
+ context "when the resource is not a nested resource" do
402
+ before do
403
+ allow(reporter).to receive(:nested_resource?).with(new_resource).and_return(false)
404
+ end
405
+
406
+ it "marks the current resource report as finished" do
407
+ expect(resource_report).to receive(:finish)
408
+ reporter.resource_completed(new_resource)
409
+ end
410
+
411
+ it "adds the resource to the updated resource list" do
412
+ expect(reporter).to receive(:add_updated_resource).with(resource_report)
413
+ reporter.resource_completed(new_resource)
414
+ end
415
+
416
+ it "nils out the current resource report" do
417
+ expect(reporter).to receive(:update_current_resource_report).with(nil)
418
+ reporter.resource_completed(new_resource)
419
+ end
420
+ end
421
+ end
422
+ end
423
+
424
+ describe '#run_list_expanded' do
425
+ it "sets the expanded run list" do
426
+ reporter.run_list_expanded("test_run_list")
427
+ expect(reporter.expanded_run_list).to eq("test_run_list")
428
+ end
429
+ end
430
+
431
+ describe '#run_list_expand_failed' do
432
+ let(:node) { double("node") }
433
+ let(:error_mapper) { double("error_mapper") }
434
+ let(:exception) { double("exception") }
435
+
436
+ it "updates the error description" do
437
+ expect(Chef::Formatters::ErrorMapper).to receive(:run_list_expand_failed).with(
438
+ node,
439
+ exception
440
+ ).and_return(error_mapper)
441
+ expect(error_mapper).to receive(:for_json).and_return("error_description")
442
+ expect(reporter).to receive(:update_error_description).with("error_description")
443
+ reporter.run_list_expand_failed(node, exception)
444
+ end
445
+ end
446
+
447
+ describe '#cookbook_resolution_failed' do
448
+ let(:error_mapper) { double("error_mapper") }
449
+ let(:exception) { double("exception") }
450
+ let(:expanded_run_list) { double("expanded_run_list") }
451
+
452
+ it "updates the error description" do
453
+ expect(Chef::Formatters::ErrorMapper).to receive(:cookbook_resolution_failed).with(
454
+ expanded_run_list,
455
+ exception
456
+ ).and_return(error_mapper)
457
+ expect(error_mapper).to receive(:for_json).and_return("error_description")
458
+ expect(reporter).to receive(:update_error_description).with("error_description")
459
+ reporter.cookbook_resolution_failed(expanded_run_list, exception)
460
+ end
461
+
462
+ end
463
+
464
+ describe '#cookbook_sync_failed' do
465
+ let(:cookbooks) { double("cookbooks") }
466
+ let(:error_mapper) { double("error_mapper") }
467
+ let(:exception) { double("exception") }
468
+
469
+ it "updates the error description" do
470
+ expect(Chef::Formatters::ErrorMapper).to receive(:cookbook_sync_failed).with(
471
+ cookbooks,
472
+ exception
473
+ ).and_return(error_mapper)
474
+ expect(error_mapper).to receive(:for_json).and_return("error_description")
475
+ expect(reporter).to receive(:update_error_description).with("error_description")
476
+ reporter.cookbook_sync_failed(cookbooks, exception)
477
+ end
478
+ end
479
+
480
+ describe '#disable_reporter_on_error' do
481
+ context "when no exception is raise by the block" do
482
+ it "does not disable the reporter" do
483
+ expect(reporter).not_to receive(:disable_data_collector_reporter)
484
+ reporter.send(:disable_reporter_on_error) { true }
485
+ end
486
+
487
+ it "does not raise an exception" do
488
+ expect { reporter.send(:disable_reporter_on_error) { true } }.not_to raise_error
489
+ end
490
+ end
491
+
492
+ context "when an unexpected exception is raised by the block" do
493
+ it "re-raises the exception" do
494
+ expect { reporter.send(:disable_reporter_on_error) { raise RuntimeError, "bummer" } }.to raise_error(RuntimeError)
495
+ end
496
+ end
497
+
498
+ [ Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
499
+ Errno::ECONNREFUSED, EOFError, Net::HTTPBadResponse,
500
+ Net::HTTPHeaderSyntaxError, Net::ProtocolError, OpenSSL::SSL::SSLError ].each do |exception_class|
501
+ context "when the block raises a #{exception_class} exception" do
502
+ it "disables the reporter" do
503
+ expect(reporter).to receive(:disable_data_collector_reporter)
504
+ reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") }
505
+ end
506
+
507
+ context "when raise-on-failure is enabled" do
508
+ it "logs an error and raises" do
509
+ Chef::Config[:data_collector][:raise_on_failure] = true
510
+ expect(Chef::Log).to receive(:error)
511
+ expect { reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") } }.to raise_error(exception_class)
512
+ end
513
+ end
514
+
515
+ context "when raise-on-failure is disabled" do
516
+ it "logs a warning and does not raise an exception" do
517
+ Chef::Config[:data_collector][:raise_on_failure] = false
518
+ expect(Chef::Log).to receive(:warn)
519
+ expect { reporter.send(:disable_reporter_on_error) { raise exception_class.new("bummer") } }.not_to raise_error
520
+ end
521
+ end
522
+ end
523
+ end
524
+ end
525
+ end