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
@@ -103,4 +103,133 @@ describe Chef::ChefFS::Config do
103
103
  expect(local_fs.child_paths["users"]).to eq([platform_path("/base_path/users")])
104
104
  end
105
105
  end
106
+
107
+ describe "formats paths", :unix_only do
108
+
109
+ let(:single_repo_path) do
110
+ Mash.new({
111
+ chef_repo_path: "/base_path",
112
+ })
113
+ end
114
+
115
+ let(:double_repo_path) do
116
+ Mash.new({
117
+ chef_repo_path: %w{ /base_path /second_base_path },
118
+ })
119
+ end
120
+
121
+ describe "#server_path" do
122
+ it "returns nil if no paths match" do
123
+ cfg = Chef::ChefFS::Config.new(single_repo_path, "/my_repo/cookbooks")
124
+ expect(cfg.server_path("foo")).to be_nil
125
+ end
126
+
127
+ context "with only repo paths" do
128
+ it "returns / if in the repo path" do
129
+ cwd = "/base_path/cookbooks"
130
+ cfg = Chef::ChefFS::Config.new(single_repo_path, cwd)
131
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path/cookbooks", cwd).and_return("/base_path/cookbooks")
132
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path", cwd).and_return("/base_path/cookbooks")
133
+ expect(cfg.server_path("/base_path/cookbooks")).to eq("/")
134
+ end
135
+
136
+ it "checks all the repo paths" do
137
+ cwd = "/second_base_path/cookbooks"
138
+ cfg = Chef::ChefFS::Config.new(double_repo_path, cwd)
139
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/second_base_path/cookbooks", cwd).and_return("/second_base_path/cookbooks")
140
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path", cwd).and_return("/base_path/cookbooks")
141
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/second_base_path", cwd).and_return("/second_base_path/cookbooks")
142
+ expect(cfg.server_path("/second_base_path/cookbooks")).to eq("/")
143
+ end
144
+ end
145
+
146
+ context "with specific object locations" do
147
+ let(:single_cookbook_path) do
148
+ Mash.new({
149
+ cookbook_path: "/base_path/cookbooks",
150
+ role_path: "/base_path/roles",
151
+ })
152
+ end
153
+
154
+ let(:cwd) { "/base_path/cookbooks" }
155
+ let(:cfg) { Chef::ChefFS::Config.new(single_cookbook_path, cwd) }
156
+
157
+ before do
158
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path/cookbooks", cwd).and_return("/base_path/cookbooks")
159
+ allow(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path/roles", cwd).and_return("/base_path/roles")
160
+ end
161
+
162
+ it "resolves a relative path" do
163
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("blah", cwd).and_return("/base_path/cookbooks/blah")
164
+ expect(cfg.server_path("blah")).to eql("/cookbooks/blah")
165
+ end
166
+
167
+ it "resolves a relative path in a parent directory" do
168
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("../roles/blah", cwd).and_return("/base_path/roles/blah")
169
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path/roles", cwd).and_return("/base_path/roles")
170
+ expect(cfg.server_path("../roles/blah")).to eql("/roles/blah")
171
+ end
172
+
173
+ it "ignores a relative path that's outside the repository" do
174
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("../../readme.txt", cwd).and_return("/readme.txt")
175
+ expect(cfg.server_path("../../readme.txt")).to be_nil
176
+ end
177
+
178
+ it "deals with splat paths" do
179
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("*/*ab*", cwd).and_return("/base_path/cookbooks/*/*ab*")
180
+ expect(cfg.server_path("*/*ab*")).to eql("/cookbooks/*/*ab*")
181
+ end
182
+
183
+ it "resolves an absolute path" do
184
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/base_path/cookbooks/blah", cwd).and_return("/base_path/cookbooks/blah")
185
+ expect(cfg.server_path("/base_path/cookbooks/blah")).to eql("/cookbooks/blah")
186
+ end
187
+
188
+ it "deals with an absolute path with splats" do
189
+ expect(Chef::ChefFS::PathUtils).to receive(:realest_path).with("/*/cookbooks/blah", cwd).and_return("/*/cookbooks/blah")
190
+ expect(cfg.server_path("/*/cookbooks/blah")).to be_nil
191
+ end
192
+ end
193
+ end
194
+
195
+ describe "#format_path" do
196
+ Entry = Struct.new(:path)
197
+
198
+ let(:config) do
199
+ Mash.new({
200
+ chef_repo_path: "/base_path",
201
+ cookbook_path: "/base_path/cookbooks",
202
+ role_path: "/base_path/roles",
203
+ })
204
+ end
205
+
206
+ let (:path) { "/roles/foo.json" }
207
+ let (:entry) { Entry.new(path) }
208
+
209
+ it "returns the entry's path if the cwd isn't in the config" do
210
+ cfg = Chef::ChefFS::Config.new(config, "/my_repo/cookbooks")
211
+ expect(cfg).to receive(:base_path).and_return(nil)
212
+ expect(cfg.format_path(entry)).to eq(path)
213
+ end
214
+
215
+ it "returns . if the cwd is the same as the entry's path" do
216
+ cfg = Chef::ChefFS::Config.new(config, "/base_path/roles/foo.json")
217
+ expect(cfg).to receive(:base_path).and_return("/roles/foo.json").at_least(:once)
218
+ expect(cfg.format_path(entry)).to eq(".")
219
+ end
220
+
221
+ it "returns a relative path if the cwd is in the repo" do
222
+ cfg = Chef::ChefFS::Config.new(config, "/base_path/roles")
223
+ expect(cfg).to receive(:base_path).and_return("/roles").at_least(:once)
224
+ expect(cfg.format_path(entry)).to eq("foo.json")
225
+ end
226
+
227
+ it "returns a relative path if the cwd is at the root of repo" do
228
+ cfg = Chef::ChefFS::Config.new(config, "/base_path")
229
+ expect(cfg).to receive(:base_path).and_return("/").at_least(:once)
230
+ expect(cfg.format_path(entry)).to eq("roles/foo.json")
231
+ end
232
+
233
+ end
234
+ end
106
235
  end
@@ -47,7 +47,7 @@ describe Chef::ChefFS::FileSystem::Repository::BaseFile do
47
47
  end
48
48
 
49
49
  context "#is_json_file?" do
50
- it "returns false when the file is not json" do
50
+ it "returns false when the file is not json", pending: "We assume that everything is ruby or JSON" do
51
51
  file = described_class.new("test_file.dpkg", parent)
52
52
  expect(file.is_json_file?).to be_falsey
53
53
  end
@@ -63,11 +63,16 @@ describe Chef::ChefFS::FileSystem::Repository::BaseFile do
63
63
  expect(file.name_valid?).to be_falsey
64
64
  end
65
65
 
66
- it "rejects non json files" do
66
+ it "rejects non json files", pending: "We assume that everything is ruby or JSON" do
67
67
  file = described_class.new("test_file.dpkg", parent)
68
68
  expect(file.name_valid?).to be_falsey
69
69
  end
70
70
 
71
+ it "allows ruby files" do
72
+ file = described_class.new("test_file.rb", parent)
73
+ expect(file.name_valid?).to be_truthy
74
+ end
75
+
71
76
  it "allows correctly named files" do
72
77
  expect(file.name_valid?).to be_truthy
73
78
  end
@@ -105,14 +110,7 @@ describe Chef::ChefFS::FileSystem::Repository::BaseFile do
105
110
 
106
111
  context "#write" do
107
112
  context "minimises a json object" do
108
- it "not if pretty json is off" do
109
- expect(file).to_not receive(:minimize)
110
- file.write(content)
111
- end
112
-
113
- it "not if it's not a json file" do
114
- file = described_class.new("test_file.dpkg", parent)
115
- file.write_pretty_json = true
113
+ it "unless pretty json is off" do
116
114
  expect(file).to_not receive(:minimize)
117
115
  file.write(content)
118
116
  end
@@ -462,7 +462,7 @@ describe Chef::Client do
462
462
 
463
463
  describe "assert_cookbook_path_not_empty" do
464
464
  before do
465
- Chef::Config[:solo] = true
465
+ Chef::Config[:solo_legacy_mode] = true
466
466
  Chef::Config[:cookbook_path] = ["/path/to/invalid/cookbook_path"]
467
467
  end
468
468
 
@@ -58,7 +58,7 @@ describe Chef::ConfigFetcher do
58
58
  and_return(invalid_json)
59
59
 
60
60
  expect(Chef::Application).to receive(:fatal!).
61
- with(invalid_json_error_regex, 2)
61
+ with(invalid_json_error_regex, Chef::Exceptions::DeprecatedExitCode.new)
62
62
  fetcher.fetch_json
63
63
  end
64
64
  end
@@ -104,7 +104,7 @@ describe Chef::ConfigFetcher do
104
104
  with("").and_return(invalid_json)
105
105
 
106
106
  expect(Chef::Application).to receive(:fatal!).
107
- with(invalid_json_error_regex, 2)
107
+ with(invalid_json_error_regex, Chef::Exceptions::DeprecatedExitCode.new)
108
108
  fetcher.fetch_json
109
109
  end
110
110
  end
@@ -50,7 +50,7 @@ describe Chef::CookbookCacheCleaner do
50
50
  end
51
51
 
52
52
  it "does not remove anything on chef-solo" do
53
- Chef::Config[:solo] = true
53
+ Chef::Config[:solo_legacy_mode] = true
54
54
  allow(cleaner.cache).to receive(:find).and_return(%w{cookbooks/valid1/recipes/default.rb cookbooks/valid2/recipes/default.rb})
55
55
  expect(cleaner.cache).not_to receive(:delete)
56
56
  cleaner.cleanup_file_cache
@@ -365,11 +365,11 @@ describe Chef::DataBagItem do
365
365
 
366
366
  describe "in solo mode" do
367
367
  before do
368
- Chef::Config[:solo] = true
368
+ Chef::Config[:solo_legacy_mode] = true
369
369
  end
370
370
 
371
371
  after do
372
- Chef::Config[:solo] = false
372
+ Chef::Config[:solo_legacy_mode] = false
373
373
  end
374
374
 
375
375
  it "converts the raw data to a data bag item" do
@@ -143,13 +143,13 @@ describe Chef::DataBag do
143
143
 
144
144
  shared_examples_for "data bag in solo mode" do |data_bag_path|
145
145
  before do
146
- Chef::Config[:solo] = true
146
+ Chef::Config[:solo_legacy_mode] = true
147
147
  Chef::Config[:data_bag_path] = data_bag_path
148
148
  @paths = Array(data_bag_path)
149
149
  end
150
150
 
151
151
  after do
152
- Chef::Config[:solo] = false
152
+ Chef::Config[:solo_legacy_mode] = false
153
153
  end
154
154
 
155
155
  it "should get the data bag from the data_bag_path" do
@@ -0,0 +1,190 @@
1
+ #
2
+ # Author:: Adam Leff (<adamleff@chef.io)
3
+ #
4
+ # Copyright:: Copyright 2012-2016, Chef Software Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require "spec_helper"
21
+ require "chef/data_collector/messages/helpers"
22
+
23
+ class TestMessage
24
+ extend Chef::DataCollector::Messages::Helpers
25
+ end
26
+
27
+ describe Chef::DataCollector::Messages::Helpers do
28
+ describe '#organization' do
29
+ context "when the run is a solo run" do
30
+ it "returns the data collector organization" do
31
+ allow(TestMessage).to receive(:solo_run?).and_return(true)
32
+ expect(TestMessage).to receive(:data_collector_organization).and_return("org1")
33
+ expect(TestMessage.organization).to eq("org1")
34
+ end
35
+ end
36
+
37
+ context "when the run is not a solo run" do
38
+ it "returns the data collector organization" do
39
+ allow(TestMessage).to receive(:solo_run?).and_return(false)
40
+ expect(TestMessage).to receive(:chef_server_organization).and_return("org2")
41
+ expect(TestMessage.organization).to eq("org2")
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#data_collector_organization' do
47
+ context "when the org is specified in the config" do
48
+ it "returns the org from the config" do
49
+ Chef::Config[:data_collector][:organization] = "org1"
50
+ expect(TestMessage.data_collector_organization).to eq("org1")
51
+ end
52
+ end
53
+
54
+ context "when the org is not specified in the config" do
55
+ it "returns the default chef_solo org" do
56
+ expect(TestMessage.data_collector_organization).to eq("chef_solo")
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '#chef_server_organization' do
62
+ context "when the URL is properly formatted" do
63
+ it "returns the org from the parsed URL" do
64
+ Chef::Config[:chef_server_url] = "http://mycompany.com/organizations/myorg"
65
+ expect(TestMessage.chef_server_organization).to eq("myorg")
66
+ end
67
+ end
68
+
69
+ context "when the URL is not properly formatted" do
70
+ it "returns unknown_organization" do
71
+ Chef::Config[:chef_server_url] = "http://mycompany.com/what/url/is/this"
72
+ expect(TestMessage.chef_server_organization).to eq("unknown_organization")
73
+ end
74
+ end
75
+ end
76
+
77
+ describe '#collector_source' do
78
+ context "when the run is a solo run" do
79
+ it "returns chef_solo" do
80
+ allow(TestMessage).to receive(:solo_run?).and_return(true)
81
+ expect(TestMessage.collector_source).to eq("chef_solo")
82
+ end
83
+ end
84
+
85
+ context "when the run is not a solo run" do
86
+ it "returns chef_client" do
87
+ allow(TestMessage).to receive(:solo_run?).and_return(false)
88
+ expect(TestMessage.collector_source).to eq("chef_client")
89
+ end
90
+ end
91
+ end
92
+
93
+ describe '#solo_run?' do
94
+ context "when :solo is set in Chef::Config" do
95
+ it "returns true" do
96
+ Chef::Config[:solo] = true
97
+ Chef::Config[:local_mode] = nil
98
+ expect(TestMessage.solo_run?).to be_truthy
99
+ end
100
+ end
101
+
102
+ context "when :local_mode is set in Chef::Config" do
103
+ it "returns true" do
104
+ Chef::Config[:solo] = nil
105
+ Chef::Config[:local_mode] = true
106
+ expect(TestMessage.solo_run?).to be_truthy
107
+ end
108
+ end
109
+
110
+ context "when neither :solo or :local_mode is set in Chef::Config" do
111
+ it "returns false" do
112
+ Chef::Config[:solo] = nil
113
+ Chef::Config[:local_mode] = nil
114
+ expect(TestMessage.solo_run?).to be_falsey
115
+ end
116
+ end
117
+ end
118
+
119
+ describe '#node_uuid' do
120
+ context "when the node UUID can be read" do
121
+ it "returns the read-in node UUID" do
122
+ allow(TestMessage).to receive(:read_node_uuid).and_return("read_uuid")
123
+ expect(TestMessage.node_uuid).to eq("read_uuid")
124
+ end
125
+ end
126
+
127
+ context "when the node UUID cannot be read" do
128
+ it "generated a new node UUID" do
129
+ allow(TestMessage).to receive(:read_node_uuid).and_return(nil)
130
+ allow(TestMessage).to receive(:generate_node_uuid).and_return("generated_uuid")
131
+ expect(TestMessage.node_uuid).to eq("generated_uuid")
132
+ end
133
+ end
134
+ end
135
+
136
+ describe '#generate_node_uuid' do
137
+ it "generates a new UUID, stores it, and returns it" do
138
+ expect(SecureRandom).to receive(:uuid).and_return("generated_uuid")
139
+ expect(TestMessage).to receive(:update_metadata).with("node_uuid", "generated_uuid")
140
+ expect(TestMessage.generate_node_uuid).to eq("generated_uuid")
141
+ end
142
+ end
143
+
144
+ describe '#read_node_uuid' do
145
+ it "reads the node UUID from metadata" do
146
+ expect(TestMessage).to receive(:metadata).and_return({ "node_uuid" => "read_uuid" })
147
+ expect(TestMessage.read_node_uuid).to eq("read_uuid")
148
+ end
149
+ end
150
+
151
+ describe "metadata" do
152
+ let(:metadata_filename) { "fake_metadata_file.json" }
153
+
154
+ before do
155
+ allow(TestMessage).to receive(:metadata_filename).and_return(metadata_filename)
156
+ end
157
+
158
+ context "when the metadata file exists" do
159
+ it "returns the contents of the metadata file" do
160
+ expect(Chef::FileCache).to receive(:load).with(metadata_filename).and_return('{"foo":"bar"}')
161
+ expect(TestMessage.metadata["foo"]).to eq("bar")
162
+ end
163
+ end
164
+
165
+ context "when the metadata file does not exist" do
166
+ it "returns an empty hash" do
167
+ expect(Chef::FileCache).to receive(:load).with(metadata_filename).and_raise(Chef::Exceptions::FileNotFound)
168
+ expect(TestMessage.metadata).to eq({})
169
+ end
170
+ end
171
+ end
172
+
173
+ describe '#update_metadata' do
174
+ let(:metadata) { double("metadata") }
175
+
176
+ it "updates the file" do
177
+ allow(TestMessage).to receive(:metadata_filename).and_return("fake_metadata_file.json")
178
+ allow(TestMessage).to receive(:metadata).and_return(metadata)
179
+ expect(metadata).to receive(:[]=).with("new_key", "new_value")
180
+ expect(metadata).to receive(:to_json).and_return("metadata_json")
181
+ expect(Chef::FileCache).to receive(:store).with(
182
+ "fake_metadata_file.json",
183
+ "metadata_json",
184
+ 0644
185
+ )
186
+
187
+ TestMessage.update_metadata("new_key", "new_value")
188
+ end
189
+ end
190
+ end
@@ -0,0 +1,207 @@
1
+ #
2
+ # Author:: Adam Leff (<adamleff@chef.io)
3
+ #
4
+ # Copyright:: Copyright 2012-2016, Chef Software Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require "spec_helper"
21
+ require "chef/data_collector/messages/helpers"
22
+
23
+ describe Chef::DataCollector::Messages do
24
+ describe '#run_start_message' do
25
+ let(:run_status) { Chef::RunStatus.new(Chef::Node.new, Chef::EventDispatch::Dispatcher.new) }
26
+ let(:required_fields) do
27
+ %w{
28
+ chef_server_fqdn
29
+ entity_uuid
30
+ id
31
+ message_version
32
+ message_type
33
+ node_name
34
+ organization_name
35
+ run_id
36
+ source
37
+ start_time
38
+ }
39
+ end
40
+ let(:optional_fields) { [] }
41
+
42
+ before do
43
+ allow(run_status).to receive(:start_time).and_return(Time.now)
44
+ end
45
+
46
+ it "is not missing any required fields" do
47
+ missing_fields = required_fields.select do |key|
48
+ !Chef::DataCollector::Messages.run_start_message(run_status).key?(key)
49
+ end
50
+
51
+ expect(missing_fields).to eq([])
52
+ end
53
+
54
+ it "does not have any extra fields" do
55
+ extra_fields = Chef::DataCollector::Messages.run_start_message(run_status).keys.select do |key|
56
+ !required_fields.include?(key) && !optional_fields.include?(key)
57
+ end
58
+
59
+ expect(extra_fields).to eq([])
60
+ end
61
+ end
62
+
63
+ describe '#run_end_message' do
64
+ let(:run_status) { Chef::RunStatus.new(Chef::Node.new, Chef::EventDispatch::Dispatcher.new) }
65
+ let(:resource) { double("resource", for_json: "resource_data") }
66
+ let(:reporter_data) do
67
+ {
68
+ run_status: run_status,
69
+ updated_resources: [resource],
70
+ }
71
+ end
72
+
73
+ before do
74
+ allow(run_status).to receive(:start_time).and_return(Time.now)
75
+ allow(run_status).to receive(:end_time).and_return(Time.now)
76
+ end
77
+
78
+ context "when the run was successful" do
79
+ let(:required_fields) do
80
+ %w{
81
+ chef_server_fqdn
82
+ entity_uuid
83
+ id
84
+ end_time
85
+ expanded_run_list
86
+ message_type
87
+ message_version
88
+ node_name
89
+ organization_name
90
+ resources
91
+ run_id
92
+ run_list
93
+ source
94
+ start_time
95
+ status
96
+ total_resource_count
97
+ updated_resource_count
98
+ }
99
+ end
100
+ let(:optional_fields) { %w{error} }
101
+
102
+ before do
103
+ allow(run_status).to receive(:exception).and_return(nil)
104
+ end
105
+
106
+ it "is not missing any required fields" do
107
+ missing_fields = required_fields.select do |key|
108
+ !Chef::DataCollector::Messages.run_end_message(reporter_data).key?(key)
109
+ end
110
+ expect(missing_fields).to eq([])
111
+ end
112
+
113
+ it "does not have any extra fields" do
114
+ extra_fields = Chef::DataCollector::Messages.run_end_message(reporter_data).keys.select do |key|
115
+ !required_fields.include?(key) && !optional_fields.include?(key)
116
+ end
117
+ expect(extra_fields).to eq([])
118
+ end
119
+ end
120
+
121
+ context "when the run was not successful" do
122
+ let(:required_fields) do
123
+ %w{
124
+ chef_server_fqdn
125
+ entity_uuid
126
+ id
127
+ end_time
128
+ error
129
+ expanded_run_list
130
+ message_type
131
+ message_version
132
+ node_name
133
+ organization_name
134
+ resources
135
+ run_id
136
+ run_list
137
+ source
138
+ start_time
139
+ status
140
+ total_resource_count
141
+ updated_resource_count
142
+ }
143
+ end
144
+ let(:optional_fields) { [] }
145
+
146
+ before do
147
+ allow(run_status).to receive(:exception).and_return(RuntimeError.new("an error happened"))
148
+ end
149
+
150
+ it "is not missing any required fields" do
151
+ missing_fields = required_fields.select do |key|
152
+ !Chef::DataCollector::Messages.run_end_message(reporter_data).key?(key)
153
+ end
154
+ expect(missing_fields).to eq([])
155
+ end
156
+
157
+ it "does not have any extra fields" do
158
+ extra_fields = Chef::DataCollector::Messages.run_end_message(reporter_data).keys.select do |key|
159
+ !required_fields.include?(key) && !optional_fields.include?(key)
160
+ end
161
+ expect(extra_fields).to eq([])
162
+ end
163
+ end
164
+ end
165
+
166
+ describe '#node_update_message' do
167
+ let(:run_status) { Chef::RunStatus.new(Chef::Node.new, Chef::EventDispatch::Dispatcher.new) }
168
+
169
+ let(:required_fields) do
170
+ %w{
171
+ entity_name
172
+ entity_type
173
+ entity_uuid
174
+ id
175
+ message_type
176
+ message_version
177
+ organization_name
178
+ recorded_at
179
+ remote_hostname
180
+ requestor_name
181
+ requestor_type
182
+ run_id
183
+ service_hostname
184
+ source
185
+ task
186
+ user_agent
187
+ }
188
+ end
189
+ let(:optional_fields) { %w{data} }
190
+
191
+ it "is not missing any required fields" do
192
+ missing_fields = required_fields.select do |key|
193
+ !Chef::DataCollector::Messages.node_update_message(run_status).key?(key)
194
+ end
195
+
196
+ expect(missing_fields).to eq([])
197
+ end
198
+
199
+ it "does not have any extra fields" do
200
+ extra_fields = Chef::DataCollector::Messages.node_update_message(run_status).keys.select do |key|
201
+ !required_fields.include?(key) && !optional_fields.include?(key)
202
+ end
203
+
204
+ expect(extra_fields).to eq([])
205
+ end
206
+ end
207
+ end