chef 12.10.24 → 12.11.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (523) 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-shell +0 -0
  45. data/bin/chef-solo +0 -0
  46. data/bin/knife +0 -0
  47. data/chef.gemspec +1 -0
  48. data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
  49. data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
  50. data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
  51. data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
  52. data/distro/common/html/_sources/index.txt +135 -135
  53. data/distro/common/html/_sources/knife.txt +74 -74
  54. data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
  55. data/distro/common/html/_sources/knife_client.txt +150 -150
  56. data/distro/common/html/_sources/knife_common_options.txt +6 -6
  57. data/distro/common/html/_sources/knife_configure.txt +29 -29
  58. data/distro/common/html/_sources/knife_cookbook.txt +236 -236
  59. data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
  60. data/distro/common/html/_sources/knife_data_bag.txt +159 -159
  61. data/distro/common/html/_sources/knife_delete.txt +26 -26
  62. data/distro/common/html/_sources/knife_deps.txt +61 -61
  63. data/distro/common/html/_sources/knife_diff.txt +34 -34
  64. data/distro/common/html/_sources/knife_download.txt +44 -44
  65. data/distro/common/html/_sources/knife_edit.txt +26 -26
  66. data/distro/common/html/_sources/knife_environment.txt +158 -158
  67. data/distro/common/html/_sources/knife_exec.txt +47 -47
  68. data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
  69. data/distro/common/html/_sources/knife_list.txt +33 -33
  70. data/distro/common/html/_sources/knife_node.txt +250 -250
  71. data/distro/common/html/_sources/knife_raw.txt +35 -35
  72. data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
  73. data/distro/common/html/_sources/knife_role.txt +157 -157
  74. data/distro/common/html/_sources/knife_search.txt +53 -53
  75. data/distro/common/html/_sources/knife_serve.txt +18 -18
  76. data/distro/common/html/_sources/knife_show.txt +26 -26
  77. data/distro/common/html/_sources/knife_ssh.txt +43 -43
  78. data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
  79. data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
  80. data/distro/common/html/_sources/knife_status.txt +37 -37
  81. data/distro/common/html/_sources/knife_tag.txt +69 -69
  82. data/distro/common/html/_sources/knife_upload.txt +49 -49
  83. data/distro/common/html/_sources/knife_user.txt +127 -127
  84. data/distro/common/html/_sources/knife_using.txt +43 -43
  85. data/distro/common/html/_sources/knife_xargs.txt +30 -30
  86. data/distro/common/html/_static/guide.css +504 -504
  87. data/distro/common/html/_static/pygments.css +61 -61
  88. data/distro/common/html/_static/underscore.js +31 -31
  89. data/distro/common/html/ctl_chef_client.html +269 -269
  90. data/distro/common/html/ctl_chef_server.html +727 -727
  91. data/distro/common/html/ctl_chef_shell.html +162 -162
  92. data/distro/common/html/ctl_chef_solo.html +193 -193
  93. data/distro/common/html/index.html +201 -201
  94. data/distro/common/html/knife.html +169 -169
  95. data/distro/common/html/knife_bootstrap.html +284 -284
  96. data/distro/common/html/knife_client.html +284 -284
  97. data/distro/common/html/knife_common_options.html +95 -95
  98. data/distro/common/html/knife_configure.html +104 -104
  99. data/distro/common/html/knife_cookbook.html +486 -486
  100. data/distro/common/html/knife_data_bag.html +373 -373
  101. data/distro/common/html/knife_delete.html +92 -92
  102. data/distro/common/html/knife_deps.html +142 -142
  103. data/distro/common/html/knife_diff.html +122 -122
  104. data/distro/common/html/knife_download.html +144 -144
  105. data/distro/common/html/knife_edit.html +88 -88
  106. data/distro/common/html/knife_environment.html +325 -325
  107. data/distro/common/html/knife_exec.html +219 -219
  108. data/distro/common/html/knife_index_rebuild.html +82 -82
  109. data/distro/common/html/knife_list.html +113 -113
  110. data/distro/common/html/knife_node.html +457 -457
  111. data/distro/common/html/knife_raw.html +109 -109
  112. data/distro/common/html/knife_recipe_list.html +90 -90
  113. data/distro/common/html/knife_role.html +294 -294
  114. data/distro/common/html/knife_search.html +202 -202
  115. data/distro/common/html/knife_serve.html +78 -78
  116. data/distro/common/html/knife_show.html +103 -103
  117. data/distro/common/html/knife_ssh.html +176 -176
  118. data/distro/common/html/knife_ssl_check.html +150 -150
  119. data/distro/common/html/knife_ssl_fetch.html +150 -150
  120. data/distro/common/html/knife_status.html +143 -143
  121. data/distro/common/html/knife_tag.html +137 -137
  122. data/distro/common/html/knife_upload.html +152 -152
  123. data/distro/common/html/knife_user.html +241 -241
  124. data/distro/common/html/knife_using.html +209 -209
  125. data/distro/common/html/knife_xargs.html +121 -121
  126. data/distro/common/html/search.html +81 -81
  127. data/distro/common/man/man1/README.md +58 -58
  128. data/distro/common/man/man1/chef-shell.1 +194 -194
  129. data/distro/common/man/man1/knife-bootstrap.1 +215 -215
  130. data/distro/common/man/man1/knife-client.1 +443 -443
  131. data/distro/common/man/man1/knife-configure.1 +161 -161
  132. data/distro/common/man/man1/knife-cookbook.1 +770 -770
  133. data/distro/common/man/man1/knife-data-bag.1 +617 -617
  134. data/distro/common/man/man1/knife-delete.1 +127 -127
  135. data/distro/common/man/man1/knife-deps.1 +246 -246
  136. data/distro/common/man/man1/knife-diff.1 +226 -226
  137. data/distro/common/man/man1/knife-download.1 +258 -258
  138. data/distro/common/man/man1/knife-edit.1 +121 -121
  139. data/distro/common/man/man1/knife-environment.1 +508 -508
  140. data/distro/common/man/man1/knife-exec.1 +362 -362
  141. data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
  142. data/distro/common/man/man1/knife-list.1 +174 -174
  143. data/distro/common/man/man1/knife-node.1 +716 -716
  144. data/distro/common/man/man1/knife-raw.1 +172 -172
  145. data/distro/common/man/man1/knife-recipe-list.1 +85 -85
  146. data/distro/common/man/man1/knife-role.1 +426 -426
  147. data/distro/common/man/man1/knife-search.1 +359 -359
  148. data/distro/common/man/man1/knife-serve.1 +109 -109
  149. data/distro/common/man/man1/knife-show.1 +160 -160
  150. data/distro/common/man/man1/knife-ssh.1 +284 -284
  151. data/distro/common/man/man1/knife-ssl-check.1 +207 -207
  152. data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
  153. data/distro/common/man/man1/knife-status.1 +234 -234
  154. data/distro/common/man/man1/knife-tag.1 +189 -189
  155. data/distro/common/man/man1/knife-upload.1 +280 -280
  156. data/distro/common/man/man1/knife-user.1 +356 -356
  157. data/distro/common/man/man1/knife-xargs.1 +189 -189
  158. data/distro/common/man/man1/knife.1 +332 -332
  159. data/distro/common/man/man8/chef-apply.8 +86 -86
  160. data/distro/common/man/man8/chef-client.8 +398 -398
  161. data/distro/common/man/man8/chef-solo.8 +260 -260
  162. data/distro/common/markdown/README +3 -3
  163. data/lib/chef/application.rb +14 -9
  164. data/lib/chef/application/apply.rb +5 -5
  165. data/lib/chef/application/client.rb +3 -3
  166. data/lib/chef/application/exit_code.rb +226 -0
  167. data/lib/chef/application/solo.rb +37 -7
  168. data/lib/chef/application/windows_service.rb +3 -3
  169. data/lib/chef/chef_fs/command_line.rb +7 -0
  170. data/lib/chef/chef_fs/config.rb +1 -1
  171. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +11 -10
  172. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  173. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  174. data/lib/chef/chef_fs/file_system.rb +15 -13
  175. data/lib/chef/chef_fs/file_system/base_fs_object.rb +4 -0
  176. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +1 -1
  177. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +9 -0
  178. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +6 -0
  179. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -0
  180. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +1 -1
  181. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
  182. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +4 -0
  183. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +4 -0
  184. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +4 -0
  185. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +4 -0
  186. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
  187. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +15 -4
  188. data/lib/chef/chef_fs/file_system/exceptions.rb +7 -0
  189. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -2
  190. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +0 -4
  191. data/lib/chef/chef_fs/file_system/repository/acl.rb +7 -0
  192. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +0 -4
  193. data/lib/chef/chef_fs/file_system/repository/base_file.rb +36 -4
  194. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +4 -0
  195. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +0 -4
  196. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +0 -3
  197. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +0 -4
  198. data/lib/chef/chef_fs/file_system/repository/directory.rb +4 -0
  199. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +0 -4
  200. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +0 -4
  201. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +0 -4
  202. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +0 -4
  203. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +0 -4
  204. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +0 -4
  205. data/lib/chef/client.rb +11 -3
  206. data/lib/chef/config_fetcher.rb +4 -4
  207. data/lib/chef/cookbook/gem_installer.rb +1 -0
  208. data/lib/chef/cookbook/synchronizer.rb +1 -1
  209. data/lib/chef/data_bag.rb +2 -2
  210. data/lib/chef/data_bag_item.rb +1 -1
  211. data/lib/chef/data_collector.rb +345 -0
  212. data/lib/chef/data_collector/messages.rb +125 -0
  213. data/lib/chef/data_collector/messages/helpers.rb +161 -0
  214. data/lib/chef/data_collector/resource_report.rb +84 -0
  215. data/lib/chef/decorator.rb +81 -0
  216. data/lib/chef/decorator/lazy.rb +60 -0
  217. data/lib/chef/decorator/lazy_array.rb +59 -0
  218. data/lib/chef/deprecation/provider/remote_file.rb +1 -1
  219. data/lib/chef/dsl/core.rb +19 -11
  220. data/lib/chef/dsl/platform_introspection.rb +16 -0
  221. data/lib/chef/dsl/recipe.rb +15 -9
  222. data/lib/chef/dsl/universal.rb +50 -0
  223. data/lib/chef/environment.rb +2 -2
  224. data/lib/chef/exceptions.rb +19 -4
  225. data/lib/chef/handler.rb +33 -0
  226. data/lib/chef/knife/cookbook_show.rb +6 -10
  227. data/lib/chef/knife/cookbook_site_install.rb +7 -2
  228. data/lib/chef/knife/help_topics.rb +4 -4
  229. data/lib/chef/knife/list.rb +1 -2
  230. data/lib/chef/knife/ssl_check.rb +2 -1
  231. data/lib/chef/monkey_patches/win32/registry.rb +11 -0
  232. data/lib/chef/nil_argument.rb +3 -3
  233. data/lib/chef/node.rb +2 -2
  234. data/lib/chef/platform/rebooter.rb +13 -2
  235. data/lib/chef/policy_builder/dynamic.rb +1 -1
  236. data/lib/chef/policy_builder/expand_node_object.rb +3 -3
  237. data/lib/chef/policy_builder/policyfile.rb +1 -1
  238. data/lib/chef/provider/git.rb +43 -41
  239. data/lib/chef/provider/lwrp_base.rb +0 -1
  240. data/lib/chef/provider/osx_profile.rb +2 -3
  241. data/lib/chef/provider/package.rb +51 -13
  242. data/lib/chef/provider/package/apt.rb +97 -103
  243. data/lib/chef/provider/package/chocolatey.rb +9 -10
  244. data/lib/chef/provider/package/dpkg.rb +2 -2
  245. data/lib/chef/provider/package/portage.rb +1 -1
  246. data/lib/chef/provider/package/rubygems.rb +8 -12
  247. data/lib/chef/provider/package/yum.rb +4 -959
  248. data/lib/chef/provider/package/yum/rpm_utils.rb +642 -0
  249. data/lib/chef/provider/package/{yum-dump.py → yum/yum-dump.py} +0 -0
  250. data/lib/chef/provider/package/yum/yum_cache.rb +376 -0
  251. data/lib/chef/provider/resource_update.rb +52 -52
  252. data/lib/chef/provider/systemd_unit.rb +238 -0
  253. data/lib/chef/providers.rb +1 -0
  254. data/lib/chef/reserved_names.rb +9 -9
  255. data/lib/chef/resource.rb +2 -7
  256. data/lib/chef/resource/file.rb +6 -1
  257. data/lib/chef/resource/systemd_unit.rb +63 -0
  258. data/lib/chef/resources.rb +1 -0
  259. data/lib/chef/sandbox.rb +20 -20
  260. data/lib/chef/shell/shell_session.rb +3 -3
  261. data/lib/chef/version.rb +1 -1
  262. data/lib/chef/win32/system.rb +0 -0
  263. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  264. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  265. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  266. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  267. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  268. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  269. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  270. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  271. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  272. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  273. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  274. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  275. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +0 -0
  276. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  277. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  278. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  279. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  280. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  281. data/spec/data/apt/var/www/apt/db/version +4 -4
  282. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  283. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  284. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  285. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  286. data/spec/data/bootstrap/no_proxy.erb +2 -2
  287. data/spec/data/bootstrap/secret.erb +9 -9
  288. data/spec/data/bootstrap/test-hints.erb +12 -12
  289. data/spec/data/bootstrap/test.erb +1 -1
  290. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  291. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  292. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  293. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  294. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  295. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  296. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  297. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  298. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  299. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  300. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  301. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  302. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  303. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  304. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  305. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  306. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  307. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  308. data/spec/data/config.rb +6 -6
  309. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  310. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  311. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  312. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  313. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  314. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  315. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  316. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  317. data/spec/data/cookbooks/chefignore +8 -8
  318. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  319. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  320. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  321. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  322. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  323. data/spec/data/cookbooks/java/metadata.rb +2 -2
  324. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  325. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  326. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  327. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  328. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  329. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  330. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  331. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  332. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  333. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  334. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  335. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  336. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  337. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  338. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  339. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  340. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  341. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  342. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  343. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  344. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  345. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  346. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  347. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  348. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  349. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  350. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  351. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  352. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  353. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  354. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  355. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  356. data/spec/data/definitions/test.rb +4 -4
  357. data/spec/data/environment-config.rb +4 -4
  358. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  359. data/spec/data/fileedit/hosts +4 -4
  360. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  361. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  362. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  363. data/spec/data/kitchen/chefignore +6 -6
  364. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  365. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  366. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  367. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  368. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  369. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  370. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  371. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  372. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  373. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  374. data/spec/data/lwrp/providers/inline_compiler.rb +26 -26
  375. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  376. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  377. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  378. data/spec/data/lwrp/resources/foo.rb +4 -4
  379. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  380. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  381. data/spec/data/mac_users/10.7-8.plist.xml +559 -559
  382. data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
  383. data/spec/data/mac_users/10.7.plist.xml +559 -559
  384. data/spec/data/mac_users/10.7.shadow.xml +11 -11
  385. data/spec/data/mac_users/10.8.plist.xml +559 -559
  386. data/spec/data/mac_users/10.8.shadow.xml +21 -21
  387. data/spec/data/mac_users/10.9.plist.xml +560 -560
  388. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  389. data/spec/data/metadata/quick_start/metadata.rb +19 -19
  390. data/spec/data/nodes/default.rb +15 -15
  391. data/spec/data/nodes/test.example.com.rb +17 -17
  392. data/spec/data/nodes/test.rb +15 -15
  393. data/spec/data/null_config.rb +1 -1
  394. data/spec/data/object_loader/environments/test.json +7 -7
  395. data/spec/data/object_loader/environments/test.rb +2 -2
  396. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  397. data/spec/data/object_loader/nodes/test.json +7 -7
  398. data/spec/data/object_loader/nodes/test.rb +2 -2
  399. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  400. data/spec/data/object_loader/roles/test.json +7 -7
  401. data/spec/data/object_loader/roles/test.rb +2 -2
  402. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  403. data/spec/data/partial_one.erb +1 -1
  404. data/spec/data/recipes/test.rb +7 -7
  405. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -4
  406. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  407. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  408. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  409. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  410. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  411. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -3
  412. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  413. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  414. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  415. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  416. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  417. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
  418. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
  419. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -3
  420. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  421. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  422. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  423. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  424. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -3
  425. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  426. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  427. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  428. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  429. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -3
  430. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  431. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  432. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  433. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -3
  434. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  435. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  436. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  437. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  438. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  439. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -3
  440. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  441. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  442. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  443. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  444. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  445. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  446. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  447. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  448. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  449. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  450. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  451. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  452. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  453. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  454. data/spec/data/run_context/nodes/run_context.rb +5 -5
  455. data/spec/data/search_queries_to_transform.txt +98 -98
  456. data/spec/data/shef-config.rb +10 -10
  457. data/spec/data/ssl/5e707473.0 +18 -18
  458. data/spec/data/ssl/chef-rspec.cert +27 -27
  459. data/spec/data/ssl/chef-rspec.key +27 -27
  460. data/spec/data/ssl/key.pem +15 -15
  461. data/spec/data/ssl/private_key.pem +27 -27
  462. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  463. data/spec/data/standalone_cookbook/chefignore +9 -9
  464. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  465. data/spec/data/trusted_certs/example.crt +22 -22
  466. data/spec/data/trusted_certs/intermediate.pem +27 -27
  467. data/spec/data/trusted_certs/root.pem +22 -22
  468. data/spec/functional/assets/chefinittest +34 -34
  469. data/spec/functional/assets/testchefsubsys +10 -10
  470. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +0 -0
  471. data/spec/functional/resource/aix_service_spec.rb +0 -0
  472. data/spec/functional/resource/aixinit_service_spec.rb +0 -0
  473. data/spec/functional/resource/chocolatey_package_spec.rb +0 -5
  474. data/spec/functional/resource/env_spec.rb +0 -0
  475. data/spec/functional/win32/registry_spec.rb +1 -0
  476. data/spec/integration/client/exit_code_spec.rb +245 -0
  477. data/spec/integration/knife/deps_spec.rb +7 -7
  478. data/spec/integration/knife/download_spec.rb +19 -0
  479. data/spec/integration/knife/list_spec.rb +0 -8
  480. data/spec/integration/knife/upload_spec.rb +21 -2
  481. data/spec/integration/solo/solo_spec.rb +1 -1
  482. data/spec/rcov.opts +2 -2
  483. data/spec/unit/application/apply_spec.rb +6 -4
  484. data/spec/unit/application/exit_code_spec.rb +231 -0
  485. data/spec/unit/application/solo_spec.rb +143 -88
  486. data/spec/unit/chef_fs/config_spec.rb +129 -0
  487. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +8 -10
  488. data/spec/unit/client_spec.rb +1 -1
  489. data/spec/unit/config_fetcher_spec.rb +2 -2
  490. data/spec/unit/cookbook/synchronizer_spec.rb +1 -1
  491. data/spec/unit/data_bag_item_spec.rb +2 -2
  492. data/spec/unit/data_bag_spec.rb +2 -2
  493. data/spec/unit/data_collector/messages/helpers_spec.rb +190 -0
  494. data/spec/unit/data_collector/messages_spec.rb +207 -0
  495. data/spec/unit/data_collector_spec.rb +525 -0
  496. data/spec/unit/decorator/lazy_array_spec.rb +58 -0
  497. data/spec/unit/decorator/lazy_spec.rb +39 -0
  498. data/spec/unit/decorator_spec.rb +142 -0
  499. data/spec/unit/environment_spec.rb +4 -4
  500. data/spec/unit/handler_spec.rb +87 -0
  501. data/spec/unit/knife/cookbook_show_spec.rb +89 -90
  502. data/spec/unit/knife/ssl_check_spec.rb +16 -0
  503. data/spec/unit/policy_builder/dynamic_spec.rb +1 -1
  504. data/spec/unit/policy_builder/policyfile_spec.rb +1 -1
  505. data/spec/unit/provider/git_spec.rb +77 -18
  506. data/spec/unit/provider/package/apt_spec.rb +97 -34
  507. data/spec/unit/provider/package/chocolatey_spec.rb +3 -15
  508. data/spec/unit/provider/package/portage_spec.rb +6 -0
  509. data/spec/unit/provider/package/rubygems_spec.rb +38 -4
  510. data/spec/unit/provider/package/yum/yum_cache_spec.rb +27 -0
  511. data/spec/unit/provider/package_spec.rb +20 -7
  512. data/spec/unit/provider/systemd_unit_spec.rb +885 -0
  513. data/spec/unit/resource/systemd_unit_spec.rb +133 -0
  514. data/spec/unit/resource_builder_spec.rb +1 -1
  515. data/tasks/bin/bundle-platform +6 -2
  516. data/tasks/bin/bundle-platform.bat +0 -0
  517. data/tasks/bin/create-override-gemfile +0 -0
  518. data/tasks/bin/run_external_test +0 -0
  519. data/tasks/bundle_util.rb +18 -2
  520. data/tasks/changelog.rb +1 -0
  521. data/tasks/dependencies.rb +47 -57
  522. metadata +847 -7
  523. data/tasks/bin/run_chef_tests +0 -17
@@ -114,6 +114,22 @@ E
114
114
  allow(ssl_check).to receive(:verify_cert_host).and_return(true)
115
115
  end
116
116
 
117
+ context "when the trusted certificates directory is not glob escaped", :windows_only do
118
+ let(:trusted_certs_dir) { File.join(CHEF_SPEC_DATA.tr("/", "\\"), "trusted_certs") }
119
+
120
+ before do
121
+ allow(ssl_check).to receive(:trusted_certificates).and_call_original
122
+ allow(store).to receive(:verify).with(certificate).and_return(true)
123
+ end
124
+
125
+ it "escpaes the trusted certificates directory" do
126
+ expect(Dir).to receive(:glob)
127
+ .with("#{ChefConfig::PathHelper.escape_glob_dir(trusted_certs_dir)}/*.{crt,pem}")
128
+ .and_return([trusted_cert_file])
129
+ ssl_check.run
130
+ end
131
+ end
132
+
117
133
  context "when the trusted certificates have valid X509 properties" do
118
134
  before do
119
135
  allow(store).to receive(:verify).with(certificate).and_return(true)
@@ -254,7 +254,7 @@ describe Chef::PolicyBuilder::Dynamic do
254
254
  context "when running chef solo" do
255
255
 
256
256
  before do
257
- Chef::Config[:solo] = true
257
+ Chef::Config[:solo_legacy_mode] = true
258
258
  expect(Chef::Node).to receive(:build).with(node_name).and_return(node)
259
259
  expect(policy_builder).to receive(:select_implementation).with(node)
260
260
  expect(implementation).to receive(:finish_load_node).with(node)
@@ -115,7 +115,7 @@ describe Chef::PolicyBuilder::Policyfile do
115
115
  end
116
116
 
117
117
  context "chef-solo" do
118
- before { Chef::Config[:solo] = true }
118
+ before { Chef::Config[:solo_legacy_mode] = true }
119
119
 
120
120
  it "errors on create" do
121
121
  expect { initialize_pb }.to raise_error(err_namespace::UnsupportedFeature)
@@ -58,7 +58,7 @@ describe Chef::Provider::Git do
58
58
  it "determines the current revision when there is one" do
59
59
  expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
60
60
  @stdout = "9b4d8dc38dd471246e7cfb1c3c1ad14b0f2bee13\n"
61
- expect(@provider).to receive(:shell_out!).with("git rev-parse HEAD", { :cwd => "/my/deploy/dir", :returns => [0, 128] }).and_return(double("ShellOut result", :stdout => @stdout))
61
+ expect(@provider).to receive(:shell_out!).with("git rev-parse HEAD", { :cwd => "/my/deploy/dir", :returns => [0, 128], :log_tag => "git[web2.0 app]" }).and_return(double("ShellOut result", :stdout => @stdout))
62
62
  expect(@provider.find_current_revision).to eql("9b4d8dc38dd471246e7cfb1c3c1ad14b0f2bee13")
63
63
  end
64
64
 
@@ -66,7 +66,7 @@ describe Chef::Provider::Git do
66
66
  expect(::File).to receive(:exist?).with("/my/deploy/dir/.git").and_return(true)
67
67
  @stderr = "fatal: Not a git repository (or any of the parent directories): .git"
68
68
  @stdout = ""
69
- expect(@provider).to receive(:shell_out!).with("git rev-parse HEAD", :cwd => "/my/deploy/dir", :returns => [0, 128]).and_return(double("ShellOut result", :stdout => "", :stderr => @stderr))
69
+ expect(@provider).to receive(:shell_out!).with("git rev-parse HEAD", :cwd => "/my/deploy/dir", :returns => [0, 128], :log_tag => "git[web2.0 app]" ).and_return(double("ShellOut result", :stdout => "", :stderr => @stderr))
70
70
  expect(@provider.find_current_revision).to be_nil
71
71
  end
72
72
  end
@@ -218,7 +218,7 @@ SHAS
218
218
  context "with an ssh wrapper" do
219
219
  let(:deploy_user) { "deployNinja" }
220
220
  let(:wrapper) { "do_it_this_way.sh" }
221
- let(:expected_cmd) { 'git clone "git://github.com/opscode/chef.git" "/my/deploy/dir"' }
221
+ let(:expected_cmd) { 'git clone "git://github.com/opscode/chef.git" "/my/deploy/dir"' }
222
222
  let(:default_options) do
223
223
  {
224
224
  :user => deploy_user,
@@ -267,16 +267,52 @@ SHAS
267
267
  end
268
268
  end
269
269
 
270
+ context "with a user id" do
271
+ let(:deploy_user) { 123 }
272
+ let(:expected_cmd) { 'git clone "git://github.com/opscode/chef.git" "/my/deploy/dir"' }
273
+ let(:default_options) do
274
+ {
275
+ :user => 123,
276
+ :environment => { "HOME" => "/home/deployNinja" },
277
+ :log_tag => "git[web2.0 app]",
278
+ }
279
+ end
280
+ before do
281
+ @resource.user deploy_user
282
+ allow(Etc).to receive(:getpwuid).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/deployNinja"))
283
+ end
284
+ context "with a specific home" do
285
+ let (:override_home) do
286
+ { "HOME" => "/home/masterNinja" }
287
+ end
288
+ let(:overrided_options) do
289
+ {
290
+ :user => 123,
291
+ :environment => { "HOME" => "/home/masterNinja" },
292
+ :log_tag => "git[web2.0 app]",
293
+ }
294
+ end
295
+ before do
296
+ @resource.environment(override_home)
297
+ end
298
+ before { @resource.environment(override_home) }
299
+ it "clones a repo with amended git options with specific home" do
300
+ expect(@provider).to receive(:shell_out!).with(expected_cmd, hash_including(overrided_options))
301
+ @provider.clone
302
+ end
303
+ end
304
+ end
305
+
270
306
  it "runs a clone command with escaped destination" do
271
307
  @resource.user "deployNinja"
272
308
  allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/deployNinja"))
273
309
  @resource.destination "/Application Support/with/space"
274
310
  @resource.ssh_wrapper "do_it_this_way.sh"
275
- expected_cmd = "git clone \"git://github.com/opscode/chef.git\" \"/Application Support/with/space\""
311
+ expected_cmd = "git clone \"git://github.com/opscode/chef.git\" \"/Application Support/with/space\""
276
312
  expect(@provider).to receive(:shell_out!).with(expected_cmd, :user => "deployNinja",
277
- :environment => { "GIT_SSH" => "do_it_this_way.sh",
278
- "HOME" => "/home/deployNinja" },
279
- :log_tag => "git[web2.0 app]")
313
+ :log_tag => "git[web2.0 app]",
314
+ :environment => { "HOME" => "/home/deployNinja",
315
+ "GIT_SSH" => "do_it_this_way.sh" })
280
316
  @provider.clone
281
317
  end
282
318
 
@@ -334,8 +370,12 @@ SHAS
334
370
 
335
371
  it "runs a sync command with default options" do
336
372
  expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
337
- expected_cmd = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
338
- expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
373
+ expected_cmd1 = "git fetch origin"
374
+ expect(@provider).to receive(:shell_out!).with(expected_cmd1, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
375
+ expected_cmd2 = "git fetch origin --tags"
376
+ expect(@provider).to receive(:shell_out!).with(expected_cmd2, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
377
+ expected_cmd3 = "git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
378
+ expect(@provider).to receive(:shell_out!).with(expected_cmd3, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
339
379
  @provider.fetch_updates
340
380
  end
341
381
 
@@ -344,27 +384,46 @@ SHAS
344
384
  allow(Etc).to receive(:getpwnam).and_return(double("Struct::Passwd", :name => @resource.user, :dir => "/home/whois"))
345
385
  @resource.group("thisis")
346
386
  expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
347
- expected_cmd = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
348
- expect(@provider).to receive(:shell_out!).with(expected_cmd, :cwd => "/my/deploy/dir",
349
- :user => "whois", :group => "thisis",
350
- :log_tag => "git[web2.0 app]",
351
- :environment => { "HOME" => "/home/whois" })
387
+
388
+ expected_cmd1 = "git fetch origin"
389
+ expect(@provider).to receive(:shell_out!).with(expected_cmd1, :cwd => "/my/deploy/dir",
390
+ :user => "whois", :group => "thisis",
391
+ :log_tag => "git[web2.0 app]",
392
+ :environment => { "HOME" => "/home/whois" })
393
+ expected_cmd2 = "git fetch origin --tags"
394
+ expect(@provider).to receive(:shell_out!).with(expected_cmd2, :cwd => "/my/deploy/dir",
395
+ :user => "whois", :group => "thisis",
396
+ :log_tag => "git[web2.0 app]",
397
+ :environment => { "HOME" => "/home/whois" })
398
+ expected_cmd3 = "git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
399
+ expect(@provider).to receive(:shell_out!).with(expected_cmd3, :cwd => "/my/deploy/dir",
400
+ :user => "whois", :group => "thisis",
401
+ :log_tag => "git[web2.0 app]",
402
+ :environment => { "HOME" => "/home/whois" })
352
403
  @provider.fetch_updates
353
404
  end
354
405
 
355
406
  it "configures remote tracking branches when remote is ``origin''" do
356
407
  @resource.remote "origin"
357
408
  expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
358
- fetch_command = "git fetch origin && git fetch origin --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
359
- expect(@provider).to receive(:shell_out!).with(fetch_command, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
409
+ fetch_command1 = "git fetch origin"
410
+ expect(@provider).to receive(:shell_out!).with(fetch_command1, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
411
+ fetch_command2 = "git fetch origin --tags"
412
+ expect(@provider).to receive(:shell_out!).with(fetch_command2, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
413
+ fetch_command3 = "git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
414
+ expect(@provider).to receive(:shell_out!).with(fetch_command3, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
360
415
  @provider.fetch_updates
361
416
  end
362
417
 
363
418
  it "configures remote tracking branches when remote is not ``origin''" do
364
419
  @resource.remote "opscode"
365
420
  expect(@provider).to receive(:setup_remote_tracking_branches).with(@resource.remote, @resource.repository)
366
- fetch_command = "git fetch opscode && git fetch opscode --tags && git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
367
- expect(@provider).to receive(:shell_out!).with(fetch_command, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
421
+ fetch_command1 = "git fetch opscode"
422
+ expect(@provider).to receive(:shell_out!).with(fetch_command1, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
423
+ fetch_command2 = "git fetch opscode --tags"
424
+ expect(@provider).to receive(:shell_out!).with(fetch_command2, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
425
+ fetch_command3 = "git reset --hard d35af14d41ae22b19da05d7d03a0bafc321b244c"
426
+ expect(@provider).to receive(:shell_out!).with(fetch_command3, :cwd => "/my/deploy/dir", :log_tag => "git[web2.0 app]")
368
427
  @provider.fetch_updates
369
428
  end
370
429
 
@@ -52,6 +52,7 @@ irssi:
52
52
  it "should create a current resource with the name of the new_resource" do
53
53
  expect(@provider).to receive(:shell_out!).with(
54
54
  "apt-cache policy #{@new_resource.package_name}",
55
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
55
56
  :timeout => @timeout
56
57
  ).and_return(@shell_out)
57
58
  @provider.load_current_resource
@@ -60,7 +61,7 @@ irssi:
60
61
  expect(current_resource).to be_a(Chef::Resource::Package)
61
62
  expect(current_resource.name).to eq("irssi")
62
63
  expect(current_resource.package_name).to eq("irssi")
63
- expect(current_resource.version).to be_nil
64
+ expect(current_resource.version).to eql([nil])
64
65
  end
65
66
 
66
67
  it "should set the installed version if package has one" do
@@ -78,8 +79,32 @@ sudo:
78
79
  INSTALLED
79
80
  expect(@provider).to receive(:shell_out!).and_return(@shell_out)
80
81
  @provider.load_current_resource
81
- expect(@provider.current_resource.version).to eq("1.7.2p1-1ubuntu5.3")
82
- expect(@provider.candidate_version).to eql("1.7.2p1-1ubuntu5.3")
82
+ expect(@provider.current_resource.version).to eq(["1.7.2p1-1ubuntu5.3"])
83
+ expect(@provider.candidate_version).to eql(["1.7.2p1-1ubuntu5.3"])
84
+ end
85
+
86
+ # it is the superclasses responsibility to throw most exceptions
87
+ it "if the package does not exist in the cache sets installed + candidate version to nil" do
88
+ @new_resource.package_name("conic-smarms")
89
+ policy_out = <<-POLICY_STDOUT
90
+ N: Unable to locate package conic-smarms
91
+ POLICY_STDOUT
92
+ policy = double(:stdout => policy_out, :exitstatus => 0)
93
+ expect(@provider).to receive(:shell_out!).with(
94
+ "apt-cache policy conic-smarms",
95
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
96
+ :timeout => @timeout
97
+ ).and_return(policy)
98
+ showpkg_out = <<-SHOWPKG_STDOUT
99
+ N: Unable to locate package conic-smarms
100
+ SHOWPKG_STDOUT
101
+ showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
102
+ expect(@provider).to receive(:shell_out!).with(
103
+ "apt-cache showpkg conic-smarms",
104
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
105
+ :timeout => @timeout
106
+ ).and_return(showpkg)
107
+ @provider.load_current_resource
83
108
  end
84
109
 
85
110
  # libmysqlclient-dev is a real package in newer versions of debian + ubuntu
@@ -95,6 +120,7 @@ libmysqlclient15-dev:
95
120
  virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
96
121
  expect(@provider).to receive(:shell_out!).with(
97
122
  "apt-cache policy libmysqlclient15-dev",
123
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
98
124
  :timeout => @timeout
99
125
  ).and_return(virtual_package)
100
126
  showpkg_out = <<-SHOWPKG_STDOUT
@@ -118,6 +144,7 @@ libmysqlclient-dev 5.1.41-3ubuntu12
118
144
  showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
119
145
  expect(@provider).to receive(:shell_out!).with(
120
146
  "apt-cache showpkg libmysqlclient15-dev",
147
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
121
148
  :timeout => @timeout
122
149
  ).and_return(showpkg)
123
150
  real_package_out = <<-RPKG_STDOUT
@@ -136,6 +163,7 @@ libmysqlclient-dev:
136
163
  real_package = double(:stdout => real_package_out, :exitstatus => 0)
137
164
  expect(@provider).to receive(:shell_out!).with(
138
165
  "apt-cache policy libmysqlclient-dev",
166
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
139
167
  :timeout => @timeout
140
168
  ).and_return(real_package)
141
169
  @provider.load_current_resource
@@ -152,6 +180,7 @@ mp3-decoder:
152
180
  virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
153
181
  expect(@provider).to receive(:shell_out!).with(
154
182
  "apt-cache policy mp3-decoder",
183
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
155
184
  :timeout => @timeout
156
185
  ).and_return(virtual_package)
157
186
  showpkg_out = <<-SHOWPKG_STDOUT
@@ -178,6 +207,7 @@ mpg123 1.12.1-0ubuntu1
178
207
  showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
179
208
  expect(@provider).to receive(:shell_out!).with(
180
209
  "apt-cache showpkg mp3-decoder",
210
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
181
211
  :timeout => @timeout
182
212
  ).and_return(showpkg)
183
213
  expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package)
@@ -191,6 +221,7 @@ mpg123 1.12.1-0ubuntu1
191
221
  allow(@new_resource).to receive(:provider).and_return(nil)
192
222
  expect(@provider).to receive(:shell_out!).with(
193
223
  "apt-cache -o APT::Default-Release=lenny-backports policy irssi",
224
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
194
225
  :timeout => @timeout
195
226
  ).and_return(@shell_out)
196
227
  @provider.load_current_resource
@@ -200,11 +231,9 @@ mpg123 1.12.1-0ubuntu1
200
231
  @new_resource.source "pluto"
201
232
  expect(@provider).to receive(:shell_out!).with(
202
233
  "apt-cache policy #{@new_resource.package_name}",
234
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" } ,
203
235
  :timeout => @timeout
204
236
  ).and_return(@shell_out)
205
- @provider.load_current_resource
206
- @provider.define_resource_requirements
207
- expect(@provider).to receive(:shell_out!).with("apt-cache policy irssi", { :timeout => 900 }).and_return(@shell_out)
208
237
  expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
209
238
  end
210
239
  end
@@ -213,26 +242,38 @@ mpg123 1.12.1-0ubuntu1
213
242
  before do
214
243
  @current_resource = resource_klass.new("irssi", @run_context)
215
244
  @provider.current_resource = @current_resource
245
+ allow(@provider).to receive(:package_data).and_return({
246
+ "irssi" => {
247
+ virtual: false,
248
+ candidate_version: "0.8.12-7",
249
+ installed_version: nil,
250
+ },
251
+ "libmysqlclient15-dev" => {
252
+ virtual: true,
253
+ candidate_version: nil,
254
+ installed_version: nil,
255
+ },
256
+ })
216
257
  end
217
258
 
218
259
  describe "install_package" do
219
260
  it "should run apt-get install with the package name and version" do
220
261
  expect(@provider).to receive(:shell_out!). with(
221
262
  "apt-get -q -y install irssi=0.8.12-7",
222
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
263
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
223
264
  :timeout => @timeout
224
265
  )
225
- @provider.install_package("irssi", "0.8.12-7")
266
+ @provider.install_package(["irssi"], ["0.8.12-7"])
226
267
  end
227
268
 
228
269
  it "should run apt-get install with the package name and version and options if specified" do
229
270
  expect(@provider).to receive(:shell_out!).with(
230
271
  "apt-get -q -y --force-yes install irssi=0.8.12-7",
231
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
272
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
232
273
  :timeout => @timeout
233
274
  )
234
275
  @new_resource.options("--force-yes")
235
- @provider.install_package("irssi", "0.8.12-7")
276
+ @provider.install_package(["irssi"], ["0.8.12-7"])
236
277
  end
237
278
 
238
279
  it "should run apt-get install with the package name and version and default_release if there is one and provider is explicitly defined" do
@@ -244,19 +285,19 @@ mpg123 1.12.1-0ubuntu1
244
285
 
245
286
  expect(@provider).to receive(:shell_out!).with(
246
287
  "apt-get -q -y -o APT::Default-Release=lenny-backports install irssi=0.8.12-7",
247
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
288
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
248
289
  :timeout => @timeout
249
290
  )
250
291
 
251
- @provider.install_package("irssi", "0.8.12-7")
292
+ @provider.install_package(["irssi"], ["0.8.12-7"])
252
293
  end
253
294
  end
254
295
 
255
296
  describe resource_klass, "upgrade_package" do
256
297
 
257
298
  it "should run install_package with the name and version" do
258
- expect(@provider).to receive(:install_package).with("irssi", "0.8.12-7")
259
- @provider.upgrade_package("irssi", "0.8.12-7")
299
+ expect(@provider).to receive(:install_package).with(["irssi"], ["0.8.12-7"])
300
+ @provider.upgrade_package(["irssi"], ["0.8.12-7"])
260
301
  end
261
302
  end
262
303
 
@@ -265,21 +306,21 @@ mpg123 1.12.1-0ubuntu1
265
306
  it "should run apt-get remove with the package name" do
266
307
  expect(@provider).to receive(:shell_out!).with(
267
308
  "apt-get -q -y remove irssi",
268
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
309
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
269
310
  :timeout => @timeout
270
311
  )
271
- @provider.remove_package("irssi", "0.8.12-7")
312
+ @provider.remove_package(["irssi"], ["0.8.12-7"])
272
313
  end
273
314
 
274
315
  it "should run apt-get remove with the package name and options if specified" do
275
316
  expect(@provider).to receive(:shell_out!).with(
276
317
  "apt-get -q -y --force-yes remove irssi",
277
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
318
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
278
319
  :timeout => @timeout
279
320
  )
280
321
  @new_resource.options("--force-yes")
281
322
 
282
- @provider.remove_package("irssi", "0.8.12-7")
323
+ @provider.remove_package(["irssi"], ["0.8.12-7"])
283
324
  end
284
325
  end
285
326
 
@@ -288,21 +329,21 @@ mpg123 1.12.1-0ubuntu1
288
329
  it "should run apt-get purge with the package name" do
289
330
  expect(@provider).to receive(:shell_out!).with(
290
331
  "apt-get -q -y purge irssi",
291
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
332
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
292
333
  :timeout => @timeout
293
334
  )
294
- @provider.purge_package("irssi", "0.8.12-7")
335
+ @provider.purge_package(["irssi"], ["0.8.12-7"])
295
336
  end
296
337
 
297
338
  it "should run apt-get purge with the package name and options if specified" do
298
339
  expect(@provider).to receive(:shell_out!).with(
299
340
  "apt-get -q -y --force-yes purge irssi",
300
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
341
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
301
342
  :timeout => @timeout
302
343
  )
303
344
  @new_resource.options("--force-yes")
304
345
 
305
- @provider.purge_package("irssi", "0.8.12-7")
346
+ @provider.purge_package(["irssi"], ["0.8.12-7"])
306
347
  end
307
348
  end
308
349
 
@@ -316,7 +357,7 @@ mpg123 1.12.1-0ubuntu1
316
357
 
317
358
  expect(@provider).to receive(:shell_out!).with(
318
359
  "debconf-set-selections /tmp/irssi-0.8.12-7.seed",
319
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
360
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
320
361
  :timeout => @timeout
321
362
  )
322
363
 
@@ -326,7 +367,7 @@ mpg123 1.12.1-0ubuntu1
326
367
  it "should run debconf-set-selections on the preseed file if it has changed" do
327
368
  expect(@provider).to receive(:shell_out!).with(
328
369
  "debconf-set-selections /tmp/irssi-0.8.12-7.seed",
329
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
370
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
330
371
  :timeout => @timeout
331
372
  )
332
373
  file = @provider.get_preseed_file("irssi", "0.8.12-7")
@@ -347,7 +388,7 @@ mpg123 1.12.1-0ubuntu1
347
388
  it "should run dpkg-reconfigure package" do
348
389
  expect(@provider).to receive(:shell_out!).with(
349
390
  "dpkg-reconfigure irssi",
350
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
391
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
351
392
  :timeout => @timeout
352
393
  )
353
394
  @provider.reconfig_package("irssi", "0.8.12-7")
@@ -356,27 +397,49 @@ mpg123 1.12.1-0ubuntu1
356
397
 
357
398
  describe "when installing a virtual package" do
358
399
  it "should install the package without specifying a version" do
359
- @provider.is_virtual_package["libmysqlclient-dev"] = true
400
+ @provider.package_data["libmysqlclient15-dev"][:virtual] = true
401
+ expect(@provider).to receive(:shell_out!).with(
402
+ "apt-get -q -y install libmysqlclient15-dev",
403
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
404
+ :timeout => @timeout
405
+ )
406
+ @provider.install_package(["libmysqlclient15-dev"], ["not_a_real_version"])
407
+ end
408
+ end
409
+
410
+ describe "when removing a virtual package" do
411
+ it "should remove the resolved name instead of the virtual package name" do
412
+ expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
413
+ expect(@provider).to receive(:shell_out!).with(
414
+ "apt-get -q -y remove libmysqlclient-dev",
415
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
416
+ :timeout => @timeout
417
+ )
418
+ @provider.remove_package(["libmysqlclient15-dev"], ["not_a_real_version"])
419
+ end
420
+ end
421
+
422
+ describe "when purging a virtual package" do
423
+ it "should purge the resolved name instead of the virtual package name" do
424
+ expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
360
425
  expect(@provider).to receive(:shell_out!).with(
361
- "apt-get -q -y install libmysqlclient-dev",
362
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
426
+ "apt-get -q -y purge libmysqlclient-dev",
427
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
363
428
  :timeout => @timeout
364
429
  )
365
- @provider.install_package("libmysqlclient-dev", "not_a_real_version")
430
+ @provider.purge_package(["libmysqlclient15-dev"], ["not_a_real_version"])
366
431
  end
367
432
  end
368
433
 
369
434
  describe "when installing multiple packages" do
370
435
  it "can install a virtual package followed by a non-virtual package" do
371
436
  # https://github.com/chef/chef/issues/2914
372
- @provider.is_virtual_package["libmysqlclient-dev"] = true
373
- @provider.is_virtual_package["irssi"] = false
374
437
  expect(@provider).to receive(:shell_out!).with(
375
- "apt-get -q -y install libmysqlclient-dev irssi=0.8.12-7",
376
- :env => { "DEBIAN_FRONTEND" => "noninteractive", "LC_ALL" => nil },
438
+ "apt-get -q -y install libmysqlclient15-dev irssi=0.8.12-7",
439
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
377
440
  :timeout => @timeout
378
441
  )
379
- @provider.install_package(["libmysqlclient-dev", "irssi"], ["not_a_real_version", "0.8.12-7"])
442
+ @provider.install_package(["libmysqlclient15-dev", "irssi"], ["not_a_real_version", "0.8.12-7"])
380
443
  end
381
444
  end
382
445