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

Sign up to get free protection for your applications and to get access to all the features.
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,58 @@
1
+ #
2
+ # Author:: Lamont Granquist (<lamont@chef.io>)
3
+ # Copyright:: Copyright 2015-2016, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ describe Chef::Decorator::LazyArray do
22
+ def foo
23
+ @foo ||= 1
24
+ end
25
+
26
+ def bar
27
+ @bar ||= 2
28
+ end
29
+
30
+ let(:decorator) do
31
+ Chef::Decorator::LazyArray.new { [ foo, bar ] }
32
+ end
33
+
34
+ it "behaves like an array" do
35
+ expect(decorator[0]).to eql(1)
36
+ expect(decorator[1]).to eql(2)
37
+ end
38
+
39
+ it "accessing the array elements is lazy" do
40
+ expect(decorator[0].class).to eql(Chef::Decorator::Lazy)
41
+ expect(decorator[1].class).to eql(Chef::Decorator::Lazy)
42
+ expect(@foo).to be nil
43
+ expect(@bar).to be nil
44
+ end
45
+
46
+ it "calling a method on the array element runs the proc (and both elements are autovivified)" do
47
+ expect(decorator[0].nil?).to be false
48
+ expect(@foo).to equal(1)
49
+ expect(@bar).to equal(2)
50
+ end
51
+
52
+ it "if we loop over the elements and do nothing then its not lazy" do
53
+ # we don't know how many elements there are unless we evaluate the proc
54
+ decorator.each { |i| }
55
+ expect(@foo).to equal(1)
56
+ expect(@bar).to equal(2)
57
+ end
58
+ end
@@ -0,0 +1,39 @@
1
+ #
2
+ # Author:: Lamont Granquist (<lamont@chef.io>)
3
+ # Copyright:: Copyright 2015-2016, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ describe Chef::Decorator::Lazy do
22
+ let(:decorator) do
23
+ @a = 0
24
+ Chef::Decorator::Lazy.new { @a = @a + 1 }
25
+ end
26
+
27
+ it "decorates an object" do
28
+ expect(decorator.even?).to be false
29
+ end
30
+
31
+ it "the proc runs and does work" do
32
+ expect(decorator).to eql(1)
33
+ end
34
+
35
+ it "creating the decorator does not cause the proc to run" do
36
+ decorator
37
+ expect(@a).to eql(0)
38
+ end
39
+ end
@@ -0,0 +1,142 @@
1
+ #
2
+ # Author:: Lamont Granquist (<lamont@chef.io>)
3
+ # Copyright:: Copyright 2015-2016, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ def impersonates_a(klass)
22
+ it "#is_a?(#{klass}) is true" do
23
+ expect(decorator.is_a?(klass)).to be true
24
+ end
25
+
26
+ it "#is_a?(Chef::Decorator) is true" do
27
+ expect(decorator.is_a?(Chef::Decorator)).to be true
28
+ end
29
+
30
+ it "#kind_of?(#{klass}) is true" do
31
+ expect(decorator.kind_of?(klass)).to be true
32
+ end
33
+
34
+ it "#kind_of?(Chef::Decorator) is true" do
35
+ expect(decorator.kind_of?(Chef::Decorator)).to be true
36
+ end
37
+
38
+ it "#instance_of?(#{klass}) is false" do
39
+ expect(decorator.instance_of?(klass)).to be false
40
+ end
41
+
42
+ it "#instance_of?(Chef::Decorator) is true" do
43
+ expect(decorator.instance_of?(Chef::Decorator)).to be true
44
+ end
45
+
46
+ it "#class is Chef::Decorator" do
47
+ expect(decorator.class).to eql(Chef::Decorator)
48
+ end
49
+ end
50
+
51
+ describe Chef::Decorator do
52
+ let(:obj) {}
53
+ let(:decorator) { Chef::Decorator.new(obj) }
54
+
55
+ context "when the obj is a string" do
56
+ let(:obj) { "STRING" }
57
+
58
+ impersonates_a(String)
59
+
60
+ it "#nil? is false" do
61
+ expect(decorator.nil?).to be false
62
+ end
63
+
64
+ it "!! is true" do
65
+ expect(!!decorator).to be true
66
+ end
67
+
68
+ it "dup returns a decorator" do
69
+ expect(decorator.dup.class).to be Chef::Decorator
70
+ end
71
+
72
+ it "dup dup's the underlying thing" do
73
+ expect(decorator.dup.__getobj__).not_to equal(decorator.__getobj__)
74
+ end
75
+ end
76
+
77
+ context "when the obj is a nil" do
78
+ let(:obj) { nil }
79
+
80
+ it "#nil? is true" do
81
+ expect(decorator.nil?).to be true
82
+ end
83
+
84
+ it "!! is false" do
85
+ expect(!!decorator).to be false
86
+ end
87
+
88
+ impersonates_a(NilClass)
89
+ end
90
+
91
+ context "when the obj is an empty Hash" do
92
+ let(:obj) { {} }
93
+
94
+ impersonates_a(Hash)
95
+
96
+ it "formats it correctly through ffi-yajl and not the JSON gem" do
97
+ # this relies on a quirk of pretty formatting whitespace between yajl and ruby's JSON
98
+ expect(FFI_Yajl::Encoder.encode(decorator, pretty: true)).to eql("{\n\n}\n")
99
+ end
100
+ end
101
+
102
+ context "whent he obj is a Hash with elements" do
103
+ let(:obj) { { foo: "bar", baz: "qux" } }
104
+
105
+ impersonates_a(Hash)
106
+
107
+ it "dup is shallow on the Hash" do
108
+ expect(decorator.dup[:baz]).to equal(decorator[:baz])
109
+ end
110
+
111
+ it "deep mutating the dup'd hash mutates the origin" do
112
+ decorator.dup[:baz] << "qux"
113
+ expect(decorator[:baz]).to eql("quxqux")
114
+ end
115
+ end
116
+
117
+ context "memoizing methods" do
118
+ let(:obj) { {} }
119
+
120
+ it "calls method_missing only once" do
121
+ expect(decorator).to receive(:method_missing).once.and_call_original
122
+ expect(decorator.keys).to eql([])
123
+ expect(decorator.keys).to eql([])
124
+ end
125
+
126
+ it "switching a Hash to an Array responds to keys then does not" do
127
+ expect(decorator.respond_to?(:keys)).to be true
128
+ expect(decorator.keys).to eql([])
129
+ decorator.__setobj__([])
130
+ expect(decorator.respond_to?(:keys)).to be false
131
+ expect { decorator.keys }.to raise_error(NoMethodError)
132
+ end
133
+
134
+ it "memoization of methods happens on the instances, not the classes" do
135
+ decorator2 = Chef::Decorator.new([])
136
+ expect(decorator.respond_to?(:keys)).to be true
137
+ expect(decorator.keys).to eql([])
138
+ expect(decorator2.respond_to?(:keys)).to be false
139
+ expect { decorator2.keys }.to raise_error(NoMethodError)
140
+ end
141
+ end
142
+ end
@@ -288,11 +288,11 @@ describe Chef::Environment do
288
288
 
289
289
  describe "in solo mode" do
290
290
  before do
291
- Chef::Config[:solo] = true
291
+ Chef::Config[:solo_legacy_mode] = true
292
292
  end
293
293
 
294
294
  after do
295
- Chef::Config[:solo] = false
295
+ Chef::Config[:solo_legacy_mode] = false
296
296
  end
297
297
 
298
298
  it "should raise and exception" do
@@ -392,12 +392,12 @@ describe Chef::Environment do
392
392
  describe "when loading" do
393
393
  describe "in solo mode" do
394
394
  before do
395
- Chef::Config[:solo] = true
395
+ Chef::Config[:solo_legacy_mode] = true
396
396
  Chef::Config[:environment_path] = "/var/chef/environments"
397
397
  end
398
398
 
399
399
  after do
400
- Chef::Config[:solo] = false
400
+ Chef::Config[:solo_legacy_mode] = false
401
401
  end
402
402
 
403
403
  it "should get the environment from the environment_path" do
@@ -212,4 +212,91 @@ describe Chef::Handler do
212
212
  end
213
213
  end
214
214
 
215
+ describe "library report handler" do
216
+ before do
217
+ # we need to lazily declare this after we have reset Chef::Config in the default rspec before handler
218
+ class MyTestHandler < Chef::Handler
219
+ handler_for :report, :exception, :start
220
+
221
+ class << self
222
+ attr_accessor :ran_report
223
+ end
224
+
225
+ def report
226
+ self.class.ran_report = true
227
+ end
228
+ end
229
+ end
230
+
231
+ it "gets added to Chef::Config[:report_handlers]" do
232
+ expect(Chef::Config[:report_handlers].include?(MyTestHandler)).to be true
233
+ end
234
+
235
+ it "gets added to Chef::Config[:exception_handlers]" do
236
+ expect(Chef::Config[:exception_handlers].include?(MyTestHandler)).to be true
237
+ end
238
+
239
+ it "gets added to Chef::Config[:start_handlers]" do
240
+ expect(Chef::Config[:start_handlers].include?(MyTestHandler)).to be true
241
+ end
242
+
243
+ it "runs the report handler" do
244
+ Chef::Handler.run_report_handlers(@run_status)
245
+ expect(MyTestHandler.ran_report).to be true
246
+ end
247
+
248
+ it "runs the exception handler" do
249
+ Chef::Handler.run_exception_handlers(@run_status)
250
+ expect(MyTestHandler.ran_report).to be true
251
+ end
252
+
253
+ it "runs the start handler" do
254
+ Chef::Handler.run_start_handlers(@run_status)
255
+ expect(MyTestHandler.ran_report).to be true
256
+ end
257
+ end
258
+
259
+ describe "library singleton report handler" do
260
+ before do
261
+ # we need to lazily declare this after we have reset Chef::Config in the default rspec before handler
262
+ class MyTestHandler < Chef::Handler
263
+ handler_for :report, :exception, :start
264
+
265
+ include Singleton
266
+
267
+ attr_accessor :ran_report
268
+
269
+ def report
270
+ self.ran_report = true
271
+ end
272
+ end
273
+ end
274
+
275
+ it "gets added to Chef::Config[:report_handlers]" do
276
+ expect(Chef::Config[:report_handlers].include?(MyTestHandler)).to be true
277
+ end
278
+
279
+ it "gets added to Chef::Config[:exception_handlers]" do
280
+ expect(Chef::Config[:exception_handlers].include?(MyTestHandler)).to be true
281
+ end
282
+
283
+ it "gets added to Chef::Config[:start_handlers]" do
284
+ expect(Chef::Config[:start_handlers].include?(MyTestHandler)).to be true
285
+ end
286
+
287
+ it "runs the report handler" do
288
+ Chef::Handler.run_report_handlers(@run_status)
289
+ expect(MyTestHandler.instance.ran_report).to be true
290
+ end
291
+
292
+ it "runs the exception handler" do
293
+ Chef::Handler.run_exception_handlers(@run_status)
294
+ expect(MyTestHandler.instance.ran_report).to be true
295
+ end
296
+
297
+ it "runs the start handler" do
298
+ Chef::Handler.run_start_handlers(@run_status)
299
+ expect(MyTestHandler.instance.ran_report).to be true
300
+ end
301
+ end
215
302
  end
@@ -20,30 +20,57 @@
20
20
  require "spec_helper"
21
21
 
22
22
  describe Chef::Knife::CookbookShow do
23
- before(:each) do
23
+ before do
24
24
  Chef::Config[:node_name] = "webmonkey.example.com"
25
- @knife = Chef::Knife::CookbookShow.new
26
- @knife.config = {}
27
- @knife.name_args = [ "cookbook_name" ]
28
- @rest = double(Chef::ServerAPI)
29
- allow(@knife).to receive(:rest).and_return(@rest)
30
- allow(@knife).to receive(:pretty_print).and_return(true)
31
- allow(@knife).to receive(:output).and_return(true)
25
+ allow(knife).to receive(:rest).and_return(rest)
26
+ allow(knife).to receive(:pretty_print).and_return(true)
27
+ allow(knife).to receive(:output).and_return(true)
28
+ allow(Chef::CookbookVersion).to receive(:load).and_return(cb)
29
+ end
30
+
31
+ let (:knife) do
32
+ knife = Chef::Knife::CookbookShow.new
33
+ knife.config = {}
34
+ knife.name_args = [ "cookbook_name" ]
35
+ knife
36
+ end
37
+
38
+ let (:cb) do
39
+ cb = Chef::CookbookVersion.new("cookbook_name")
40
+ cb.manifest = manifest
41
+ cb
42
+ end
43
+
44
+ let (:rest) { double(Chef::ServerAPI) }
45
+
46
+ let (:content) { "Example recipe text" }
47
+
48
+ let (:manifest) do
49
+ {
50
+ "recipes" => [
51
+ {
52
+ :name => "default.rb",
53
+ :path => "recipes/default.rb",
54
+ :checksum => "1234",
55
+ :url => "http://example.org/files/default.rb",
56
+ },
57
+ ],
58
+ }
32
59
  end
33
60
 
34
61
  describe "run" do
35
62
  describe "with 0 arguments: help" do
36
63
  it "should should print usage and exit when given no arguments" do
37
- @knife.name_args = []
38
- expect(@knife).to receive(:show_usage)
39
- expect(@knife.ui).to receive(:fatal)
40
- expect { @knife.run }.to raise_error(SystemExit)
64
+ knife.name_args = []
65
+ expect(knife).to receive(:show_usage)
66
+ expect(knife.ui).to receive(:fatal)
67
+ expect { knife.run }.to raise_error(SystemExit)
41
68
  end
42
69
  end
43
70
 
44
71
  describe "with 1 argument: versions" do
45
- before(:each) do
46
- @response = {
72
+ let (:response) do
73
+ {
47
74
  "cookbook_name" => {
48
75
  "url" => "http://url/cookbooks/cookbook_name",
49
76
  "versions" => [
@@ -56,87 +83,60 @@ describe Chef::Knife::CookbookShow do
56
83
  end
57
84
 
58
85
  it "should show the raw cookbook data" do
59
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name").and_return(@response)
60
- expect(@knife).to receive(:format_cookbook_list_for_display).with(@response)
61
- @knife.run
86
+ expect(rest).to receive(:get).with("cookbooks/cookbook_name").and_return(response)
87
+ expect(knife).to receive(:format_cookbook_list_for_display).with(response)
88
+ knife.run
62
89
  end
63
90
 
64
91
  it "should respect the user-supplied environment" do
65
- @knife.config[:environment] = "foo"
66
- expect(@rest).to receive(:get).with("environments/foo/cookbooks/cookbook_name").and_return(@response)
67
- expect(@knife).to receive(:format_cookbook_list_for_display).with(@response)
68
- @knife.run
92
+ knife.config[:environment] = "foo"
93
+ expect(rest).to receive(:get).with("environments/foo/cookbooks/cookbook_name").and_return(response)
94
+ expect(knife).to receive(:format_cookbook_list_for_display).with(response)
95
+ knife.run
69
96
  end
70
97
  end
71
98
 
72
99
  describe "with 2 arguments: name and version" do
73
- before(:each) do
74
- @knife.name_args << "0.1.0"
75
- @response = { "0.1.0" => { "recipes" => { "default.rb" => "" } } }
100
+ before do
101
+ knife.name_args << "0.1.0"
76
102
  end
77
103
 
78
104
  it "should show the specific part of a cookbook" do
79
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@response)
80
- expect(@knife).to receive(:output).with(@response)
81
- @knife.run
105
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
106
+ expect(knife).to receive(:output).with(cb)
107
+ knife.run
82
108
  end
83
109
  end
84
110
 
85
111
  describe "with 3 arguments: name, version, and segment" do
86
112
  before(:each) do
87
- @knife.name_args = [ "cookbook_name", "0.1.0", "recipes" ]
88
- @cookbook_response = Chef::CookbookVersion.new("cookbook_name")
89
- @manifest = {
90
- "recipes" => [
91
- {
92
- :name => "default.rb",
93
- :path => "recipes/default.rb",
94
- :checksum => "1234",
95
- :url => "http://example.org/files/default.rb",
96
- },
97
- ],
98
- }
99
- @cookbook_response.manifest = @manifest
100
- @response = { "name" => "default.rb", "url" => "http://example.org/files/default.rb", "checksum" => "1234", "path" => "recipes/default.rb" }
113
+ knife.name_args = [ "cookbook_name", "0.1.0", "recipes" ]
101
114
  end
102
115
 
103
116
  it "should print the json of the part" do
104
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
105
- expect(@knife).to receive(:output).with(@cookbook_response.manifest["recipes"])
106
- @knife.run
117
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
118
+ expect(knife).to receive(:output).with(cb.manifest["recipes"])
119
+ knife.run
107
120
  end
108
121
  end
109
122
 
110
123
  describe "with 4 arguments: name, version, segment and filename" do
111
124
  before(:each) do
112
- @knife.name_args = [ "cookbook_name", "0.1.0", "recipes", "default.rb" ]
113
- @cookbook_response = Chef::CookbookVersion.new("cookbook_name")
114
- @cookbook_response.manifest = {
115
- "recipes" => [
116
- {
117
- :name => "default.rb",
118
- :path => "recipes/default.rb",
119
- :checksum => "1234",
120
- :url => "http://example.org/files/default.rb",
121
- },
122
- ],
123
- }
124
- @response = "Example recipe text"
125
+ knife.name_args = [ "cookbook_name", "0.1.0", "recipes", "default.rb" ]
125
126
  end
126
127
 
127
128
  it "should print the raw result of the request (likely a file!)" do
128
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
129
- expect(@rest).to receive(:streaming_request).with("http://example.org/files/default.rb").and_return(StringIO.new(@response))
130
- expect(@knife).to receive(:pretty_print).with(@response)
131
- @knife.run
129
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
130
+ expect(rest).to receive(:streaming_request).with("http://example.org/files/default.rb").and_return(StringIO.new(content))
131
+ expect(knife).to receive(:pretty_print).with(content)
132
+ knife.run
132
133
  end
133
134
  end
134
135
 
135
136
  describe "with 4 arguments: name, version, segment and filename -- with specificity" do
136
137
  before(:each) do
137
- @knife.name_args = [ "cookbook_name", "0.1.0", "files", "afile.rb" ]
138
- @cookbook_response = Chef::CookbookVersion.new("cookbook_name")
139
- @cookbook_response.manifest = {
138
+ knife.name_args = [ "cookbook_name", "0.1.0", "files", "afile.rb" ]
139
+ cb.manifest = {
140
140
  "files" => [
141
141
  {
142
142
  :name => "afile.rb",
@@ -169,51 +169,50 @@ describe Chef::Knife::CookbookShow do
169
169
  ],
170
170
  }
171
171
 
172
- @response = "Example recipe text"
173
172
  end
174
173
 
175
174
  describe "with --fqdn" do
176
175
  it "should pass the fqdn" do
177
- @knife.config[:platform] = "example_platform"
178
- @knife.config[:platform_version] = "1.0"
179
- @knife.config[:fqdn] = "examplehost.example.org"
180
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
181
- expect(@rest).to receive(:streaming_request).with("http://example.org/files/1111").and_return(StringIO.new(@response))
182
- expect(@knife).to receive(:pretty_print).with(@response)
183
- @knife.run
176
+ knife.config[:platform] = "example_platform"
177
+ knife.config[:platform_version] = "1.0"
178
+ knife.config[:fqdn] = "examplehost.example.org"
179
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
180
+ expect(rest).to receive(:streaming_request).with("http://example.org/files/1111").and_return(StringIO.new(content))
181
+ expect(knife).to receive(:pretty_print).with(content)
182
+ knife.run
184
183
  end
185
184
  end
186
185
 
187
186
  describe "and --platform" do
188
187
  it "should pass the platform" do
189
- @knife.config[:platform] = "ubuntu"
190
- @knife.config[:platform_version] = "1.0"
191
- @knife.config[:fqdn] = "differenthost.example.org"
192
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
193
- expect(@rest).to receive(:streaming_request).with("http://example.org/files/3333").and_return(StringIO.new(@response))
194
- expect(@knife).to receive(:pretty_print).with(@response)
195
- @knife.run
188
+ knife.config[:platform] = "ubuntu"
189
+ knife.config[:platform_version] = "1.0"
190
+ knife.config[:fqdn] = "differenthost.example.org"
191
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
192
+ expect(rest).to receive(:streaming_request).with("http://example.org/files/3333").and_return(StringIO.new(content))
193
+ expect(knife).to receive(:pretty_print).with(content)
194
+ knife.run
196
195
  end
197
196
  end
198
197
 
199
198
  describe "and --platform-version" do
200
199
  it "should pass the platform" do
201
- @knife.config[:platform] = "ubuntu"
202
- @knife.config[:platform_version] = "9.10"
203
- @knife.config[:fqdn] = "differenthost.example.org"
204
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
205
- expect(@rest).to receive(:streaming_request).with("http://example.org/files/2222").and_return(StringIO.new(@response))
206
- expect(@knife).to receive(:pretty_print).with(@response)
207
- @knife.run
200
+ knife.config[:platform] = "ubuntu"
201
+ knife.config[:platform_version] = "9.10"
202
+ knife.config[:fqdn] = "differenthost.example.org"
203
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
204
+ expect(rest).to receive(:streaming_request).with("http://example.org/files/2222").and_return(StringIO.new(content))
205
+ expect(knife).to receive(:pretty_print).with(content)
206
+ knife.run
208
207
  end
209
208
  end
210
209
 
211
210
  describe "with none of the arguments, it should use the default" do
212
211
  it "should pass them all" do
213
- expect(@rest).to receive(:get).with("cookbooks/cookbook_name/0.1.0").and_return(@cookbook_response)
214
- expect(@rest).to receive(:streaming_request).with("http://example.org/files/4444").and_return(StringIO.new(@response))
215
- expect(@knife).to receive(:pretty_print).with(@response)
216
- @knife.run
212
+ expect(Chef::CookbookVersion).to receive(:load).with("cookbook_name", "0.1.0").and_return(cb)
213
+ expect(rest).to receive(:streaming_request).with("http://example.org/files/4444").and_return(StringIO.new(content))
214
+ expect(knife).to receive(:pretty_print).with(content)
215
+ knife.run
217
216
  end
218
217
  end
219
218