chef 13.7.16-universal-mingw32 → 13.8.0-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 (2060) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.md +151 -151
  3. data/Gemfile +71 -71
  4. data/LICENSE +201 -201
  5. data/README.md +248 -248
  6. data/Rakefile +76 -76
  7. data/VERSION +1 -1
  8. data/acceptance/.gitignore +3 -3
  9. data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -33
  10. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +283 -283
  11. data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +59 -59
  12. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +68 -68
  13. data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -1
  14. data/acceptance/Gemfile +19 -19
  15. data/acceptance/Gemfile.lock +266 -266
  16. data/acceptance/README.md +137 -137
  17. data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -2
  18. data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -3
  19. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  20. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  21. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  22. data/acceptance/basics/.kitchen.yml +4 -4
  23. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -19
  24. data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -6
  25. data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +8 -8
  26. data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -2
  27. data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -3
  28. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -2
  29. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -2
  30. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -2
  31. data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -16
  32. data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -3
  33. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +101 -101
  34. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -3
  35. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -4
  36. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -4
  37. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -2
  38. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -4
  39. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -2
  40. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -7
  41. data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +44 -44
  42. data/acceptance/data-collector/.kitchen.yml +9 -9
  43. data/acceptance/data-collector/Berksfile +3 -3
  44. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +208 -208
  45. data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +8 -8
  46. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -2
  47. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -1
  48. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  49. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  50. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -61
  51. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -2
  52. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -43
  53. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +41 -41
  54. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -3
  55. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  56. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  57. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  58. data/acceptance/top-cookbooks/.gitignore +1 -1
  59. data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -6
  60. data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -4
  61. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -7
  62. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -7
  63. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -7
  64. data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -4
  65. data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -5
  66. data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -8
  67. data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -38
  68. data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -2
  69. data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -2
  70. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  71. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  72. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  73. data/acceptance/trivial/.kitchen.yml +7 -7
  74. data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -5
  75. data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -2
  76. data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -2
  77. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -1
  78. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -1
  79. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -1
  80. data/acceptance/windows-service/.kitchen.yml +7 -7
  81. data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -58
  82. data/bin/chef-apply +25 -25
  83. data/bin/chef-client +26 -26
  84. data/bin/chef-service-manager +38 -38
  85. data/bin/chef-shell +36 -36
  86. data/bin/chef-solo +25 -25
  87. data/bin/chef-windows-service +35 -35
  88. data/bin/knife +25 -25
  89. data/chef-universal-mingw32.gemspec +23 -23
  90. data/chef.gemspec +62 -62
  91. data/distro/common/html/_sources/ctl_chef_client.txt +35 -35
  92. data/distro/common/html/_sources/ctl_chef_server.txt +341 -341
  93. data/distro/common/html/_sources/ctl_chef_shell.txt +15 -15
  94. data/distro/common/html/_sources/ctl_chef_solo.txt +25 -25
  95. data/distro/common/html/_sources/index.txt +135 -135
  96. data/distro/common/html/_sources/knife.txt +74 -74
  97. data/distro/common/html/_sources/knife_bootstrap.txt +56 -56
  98. data/distro/common/html/_sources/knife_client.txt +150 -150
  99. data/distro/common/html/_sources/knife_common_options.txt +6 -6
  100. data/distro/common/html/_sources/knife_configure.txt +29 -29
  101. data/distro/common/html/_sources/knife_cookbook.txt +236 -236
  102. data/distro/common/html/_sources/knife_cookbook_site.txt +157 -157
  103. data/distro/common/html/_sources/knife_data_bag.txt +159 -159
  104. data/distro/common/html/_sources/knife_delete.txt +26 -26
  105. data/distro/common/html/_sources/knife_deps.txt +61 -61
  106. data/distro/common/html/_sources/knife_diff.txt +34 -34
  107. data/distro/common/html/_sources/knife_download.txt +44 -44
  108. data/distro/common/html/_sources/knife_edit.txt +26 -26
  109. data/distro/common/html/_sources/knife_environment.txt +158 -158
  110. data/distro/common/html/_sources/knife_exec.txt +47 -47
  111. data/distro/common/html/_sources/knife_index_rebuild.txt +20 -20
  112. data/distro/common/html/_sources/knife_list.txt +33 -33
  113. data/distro/common/html/_sources/knife_node.txt +250 -250
  114. data/distro/common/html/_sources/knife_raw.txt +35 -35
  115. data/distro/common/html/_sources/knife_recipe_list.txt +23 -23
  116. data/distro/common/html/_sources/knife_role.txt +157 -157
  117. data/distro/common/html/_sources/knife_search.txt +53 -53
  118. data/distro/common/html/_sources/knife_serve.txt +18 -18
  119. data/distro/common/html/_sources/knife_show.txt +26 -26
  120. data/distro/common/html/_sources/knife_ssh.txt +43 -43
  121. data/distro/common/html/_sources/knife_ssl_check.txt +41 -41
  122. data/distro/common/html/_sources/knife_ssl_fetch.txt +41 -41
  123. data/distro/common/html/_sources/knife_status.txt +37 -37
  124. data/distro/common/html/_sources/knife_tag.txt +69 -69
  125. data/distro/common/html/_sources/knife_upload.txt +49 -49
  126. data/distro/common/html/_sources/knife_user.txt +127 -127
  127. data/distro/common/html/_sources/knife_using.txt +43 -43
  128. data/distro/common/html/_sources/knife_xargs.txt +30 -30
  129. data/distro/common/html/_static/basic.css +536 -536
  130. data/distro/common/html/_static/doctools.js +238 -238
  131. data/distro/common/html/_static/guide.css +504 -504
  132. data/distro/common/html/_static/pygments.css +61 -61
  133. data/distro/common/html/_static/searchtools.js +621 -621
  134. data/distro/common/html/_static/underscore.js +31 -31
  135. data/distro/common/html/_static/websupport.js +808 -808
  136. data/distro/common/html/ctl_chef_client.html +269 -269
  137. data/distro/common/html/ctl_chef_server.html +727 -727
  138. data/distro/common/html/ctl_chef_shell.html +162 -162
  139. data/distro/common/html/ctl_chef_solo.html +193 -193
  140. data/distro/common/html/index.html +201 -201
  141. data/distro/common/html/knife.html +169 -169
  142. data/distro/common/html/knife_bootstrap.html +284 -284
  143. data/distro/common/html/knife_client.html +284 -284
  144. data/distro/common/html/knife_common_options.html +95 -95
  145. data/distro/common/html/knife_configure.html +104 -104
  146. data/distro/common/html/knife_cookbook.html +486 -486
  147. data/distro/common/html/knife_cookbook_site.html +375 -375
  148. data/distro/common/html/knife_data_bag.html +373 -373
  149. data/distro/common/html/knife_delete.html +92 -92
  150. data/distro/common/html/knife_deps.html +142 -142
  151. data/distro/common/html/knife_diff.html +122 -122
  152. data/distro/common/html/knife_download.html +144 -144
  153. data/distro/common/html/knife_edit.html +88 -88
  154. data/distro/common/html/knife_environment.html +322 -322
  155. data/distro/common/html/knife_exec.html +219 -219
  156. data/distro/common/html/knife_index_rebuild.html +82 -82
  157. data/distro/common/html/knife_list.html +113 -113
  158. data/distro/common/html/knife_node.html +457 -457
  159. data/distro/common/html/knife_raw.html +109 -109
  160. data/distro/common/html/knife_recipe_list.html +90 -90
  161. data/distro/common/html/knife_role.html +294 -294
  162. data/distro/common/html/knife_search.html +202 -202
  163. data/distro/common/html/knife_serve.html +78 -78
  164. data/distro/common/html/knife_show.html +103 -103
  165. data/distro/common/html/knife_ssh.html +176 -176
  166. data/distro/common/html/knife_ssl_check.html +150 -150
  167. data/distro/common/html/knife_ssl_fetch.html +150 -150
  168. data/distro/common/html/knife_status.html +143 -143
  169. data/distro/common/html/knife_tag.html +137 -137
  170. data/distro/common/html/knife_upload.html +152 -152
  171. data/distro/common/html/knife_user.html +241 -241
  172. data/distro/common/html/knife_using.html +209 -209
  173. data/distro/common/html/knife_xargs.html +121 -121
  174. data/distro/common/html/search.html +81 -81
  175. data/distro/common/man/man1/README.md +58 -58
  176. data/distro/common/man/man1/chef-shell.1 +194 -194
  177. data/distro/common/man/man1/knife-bootstrap.1 +215 -215
  178. data/distro/common/man/man1/knife-client.1 +443 -443
  179. data/distro/common/man/man1/knife-configure.1 +161 -161
  180. data/distro/common/man/man1/knife-cookbook-site.1 +552 -552
  181. data/distro/common/man/man1/knife-cookbook.1 +770 -770
  182. data/distro/common/man/man1/knife-data-bag.1 +617 -617
  183. data/distro/common/man/man1/knife-delete.1 +127 -127
  184. data/distro/common/man/man1/knife-deps.1 +246 -246
  185. data/distro/common/man/man1/knife-diff.1 +226 -226
  186. data/distro/common/man/man1/knife-download.1 +258 -258
  187. data/distro/common/man/man1/knife-edit.1 +121 -121
  188. data/distro/common/man/man1/knife-environment.1 +496 -496
  189. data/distro/common/man/man1/knife-exec.1 +362 -362
  190. data/distro/common/man/man1/knife-index-rebuild.1 +63 -63
  191. data/distro/common/man/man1/knife-list.1 +174 -174
  192. data/distro/common/man/man1/knife-node.1 +716 -716
  193. data/distro/common/man/man1/knife-raw.1 +172 -172
  194. data/distro/common/man/man1/knife-recipe-list.1 +85 -85
  195. data/distro/common/man/man1/knife-role.1 +426 -426
  196. data/distro/common/man/man1/knife-search.1 +359 -359
  197. data/distro/common/man/man1/knife-serve.1 +109 -109
  198. data/distro/common/man/man1/knife-show.1 +160 -160
  199. data/distro/common/man/man1/knife-ssh.1 +284 -284
  200. data/distro/common/man/man1/knife-ssl-check.1 +207 -207
  201. data/distro/common/man/man1/knife-ssl-fetch.1 +207 -207
  202. data/distro/common/man/man1/knife-status.1 +234 -234
  203. data/distro/common/man/man1/knife-tag.1 +189 -189
  204. data/distro/common/man/man1/knife-upload.1 +280 -280
  205. data/distro/common/man/man1/knife-user.1 +356 -356
  206. data/distro/common/man/man1/knife-xargs.1 +189 -189
  207. data/distro/common/man/man1/knife.1 +332 -332
  208. data/distro/common/man/man8/chef-apply.8 +86 -86
  209. data/distro/common/man/man8/chef-client.8 +398 -398
  210. data/distro/common/man/man8/chef-solo.8 +260 -260
  211. data/distro/common/markdown/README +3 -3
  212. data/distro/common/markdown/man1/chef-shell.mkd +195 -195
  213. data/distro/common/markdown/man1/knife-bootstrap.mkd +141 -141
  214. data/distro/common/markdown/man1/knife-client.mkd +103 -103
  215. data/distro/common/markdown/man1/knife-configure.mkd +71 -71
  216. data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -123
  217. data/distro/common/markdown/man1/knife-cookbook.mkd +263 -263
  218. data/distro/common/markdown/man1/knife-data-bag.mkd +121 -121
  219. data/distro/common/markdown/man1/knife-environment.mkd +151 -151
  220. data/distro/common/markdown/man1/knife-exec.mkd +42 -42
  221. data/distro/common/markdown/man1/knife-index.mkd +30 -30
  222. data/distro/common/markdown/man1/knife-node.mkd +130 -130
  223. data/distro/common/markdown/man1/knife-role.mkd +85 -85
  224. data/distro/common/markdown/man1/knife-search.mkd +180 -180
  225. data/distro/common/markdown/man1/knife-ssh.mkd +69 -69
  226. data/distro/common/markdown/man1/knife-status.mkd +36 -36
  227. data/distro/common/markdown/man1/knife-tag.mkd +39 -39
  228. data/distro/common/markdown/man1/knife.mkd +213 -213
  229. data/distro/common/markdown/man8/chef-client.mkd +75 -75
  230. data/distro/common/markdown/man8/chef-expander.mkd +81 -81
  231. data/distro/common/markdown/man8/chef-expanderctl.mkd +57 -57
  232. data/distro/common/markdown/man8/chef-server-webui.mkd +121 -121
  233. data/distro/common/markdown/man8/chef-server.mkd +120 -120
  234. data/distro/common/markdown/man8/chef-solo.mkd +107 -107
  235. data/distro/common/markdown/man8/chef-solr.mkd +89 -89
  236. data/distro/powershell/chef/chef.psm1 +459 -459
  237. data/ext/win32-eventlog/Rakefile +53 -53
  238. data/ext/win32-eventlog/chef-log.man +56 -56
  239. data/lib/chef.rb +34 -34
  240. data/lib/chef/api_client.rb +226 -226
  241. data/lib/chef/api_client/registration.rb +192 -192
  242. data/lib/chef/api_client_v1.rb +323 -323
  243. data/lib/chef/application.rb +369 -369
  244. data/lib/chef/application/apply.rb +219 -219
  245. data/lib/chef/application/client.rb +537 -537
  246. data/lib/chef/application/exit_code.rb +164 -164
  247. data/lib/chef/application/knife.rb +220 -220
  248. data/lib/chef/application/solo.rb +379 -379
  249. data/lib/chef/application/windows_service.rb +337 -337
  250. data/lib/chef/application/windows_service_manager.rb +204 -204
  251. data/lib/chef/applications.rb +4 -4
  252. data/lib/chef/audit/audit_event_proxy.rb +93 -93
  253. data/lib/chef/audit/audit_reporter.rb +176 -176
  254. data/lib/chef/audit/control_group_data.rb +139 -139
  255. data/lib/chef/audit/logger.rb +36 -36
  256. data/lib/chef/audit/rspec_formatter.rb +37 -37
  257. data/lib/chef/audit/runner.rb +196 -196
  258. data/lib/chef/blacklist.rb +81 -81
  259. data/lib/chef/chef_class.rb +240 -240
  260. data/lib/chef/chef_fs.rb +59 -59
  261. data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
  262. data/lib/chef/chef_fs/command_line.rb +292 -292
  263. data/lib/chef/chef_fs/config.rb +284 -284
  264. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
  265. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
  266. data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
  267. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
  268. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
  269. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
  270. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +203 -203
  271. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
  272. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
  273. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
  274. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
  275. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
  276. data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
  277. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
  278. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
  279. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
  280. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
  281. data/lib/chef/chef_fs/file_pattern.rb +301 -301
  282. data/lib/chef/chef_fs/file_system.rb +431 -431
  283. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
  284. data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
  285. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
  286. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +67 -67
  287. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
  288. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
  289. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
  290. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +106 -106
  291. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
  292. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
  293. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
  294. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
  295. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +105 -105
  296. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
  297. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
  298. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
  299. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
  300. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
  301. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
  302. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
  303. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
  304. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
  305. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +158 -158
  306. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +135 -135
  307. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
  308. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +38 -38
  309. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
  310. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
  311. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
  312. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +111 -111
  313. data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
  314. data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
  315. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
  316. data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
  317. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +62 -62
  318. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
  319. data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
  320. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
  321. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
  322. data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
  323. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
  324. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +143 -143
  325. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
  326. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +231 -231
  327. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
  328. data/lib/chef/chef_fs/file_system/repository/client.rb +38 -38
  329. data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
  330. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
  331. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
  332. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
  333. data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
  334. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
  335. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
  336. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
  337. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
  338. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
  339. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
  340. data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
  341. data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
  342. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
  343. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
  344. data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
  345. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
  346. data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
  347. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
  348. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
  349. data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
  350. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
  351. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
  352. data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
  353. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
  354. data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
  355. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
  356. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
  357. data/lib/chef/chef_fs/file_system_cache.rb +80 -80
  358. data/lib/chef/chef_fs/knife.rb +161 -161
  359. data/lib/chef/chef_fs/parallelizer.rb +103 -103
  360. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
  361. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
  362. data/lib/chef/chef_fs/path_utils.rb +127 -127
  363. data/lib/chef/client.rb +1014 -1014
  364. data/lib/chef/config.rb +85 -85
  365. data/lib/chef/config_fetcher.rb +72 -72
  366. data/lib/chef/constants.rb +28 -28
  367. data/lib/chef/cookbook/chefignore.rb +78 -78
  368. data/lib/chef/cookbook/cookbook_collection.rb +63 -63
  369. data/lib/chef/cookbook/cookbook_version_loader.rb +268 -268
  370. data/lib/chef/cookbook/file_system_file_vendor.rb +58 -58
  371. data/lib/chef/cookbook/file_vendor.rb +71 -71
  372. data/lib/chef/cookbook/gem_installer.rb +88 -88
  373. data/lib/chef/cookbook/manifest_v0.rb +68 -68
  374. data/lib/chef/cookbook/manifest_v2.rb +41 -41
  375. data/lib/chef/cookbook/metadata.rb +803 -803
  376. data/lib/chef/cookbook/remote_file_vendor.rb +87 -87
  377. data/lib/chef/cookbook/synchronizer.rb +312 -312
  378. data/lib/chef/cookbook/syntax_check.rb +260 -260
  379. data/lib/chef/cookbook_loader.rb +200 -200
  380. data/lib/chef/cookbook_manifest.rb +324 -324
  381. data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
  382. data/lib/chef/cookbook_uploader.rb +157 -157
  383. data/lib/chef/cookbook_version.rb +549 -549
  384. data/lib/chef/daemon.rb +131 -131
  385. data/lib/chef/data_bag.rb +174 -174
  386. data/lib/chef/data_bag_item.rb +213 -213
  387. data/lib/chef/data_collector.rb +489 -489
  388. data/lib/chef/data_collector/messages.rb +100 -100
  389. data/lib/chef/data_collector/messages/helpers.rb +161 -161
  390. data/lib/chef/data_collector/resource_report.rb +123 -123
  391. data/lib/chef/decorator.rb +81 -81
  392. data/lib/chef/decorator/lazy.rb +60 -60
  393. data/lib/chef/decorator/lazy_array.rb +59 -59
  394. data/lib/chef/decorator/unchain.rb +43 -43
  395. data/lib/chef/delayed_evaluator.rb +21 -21
  396. data/lib/chef/deprecated.rb +294 -294
  397. data/lib/chef/deprecation/warnings.rb +38 -38
  398. data/lib/chef/digester.rb +74 -74
  399. data/lib/chef/dsl.rb +6 -6
  400. data/lib/chef/dsl/audit.rb +51 -51
  401. data/lib/chef/dsl/chef_provisioning.rb +57 -57
  402. data/lib/chef/dsl/cheffish.rb +65 -65
  403. data/lib/chef/dsl/core.rb +52 -52
  404. data/lib/chef/dsl/data_query.rb +89 -89
  405. data/lib/chef/dsl/declare_resource.rb +297 -297
  406. data/lib/chef/dsl/definitions.rb +43 -43
  407. data/lib/chef/dsl/include_attribute.rb +61 -61
  408. data/lib/chef/dsl/include_recipe.rb +44 -44
  409. data/lib/chef/dsl/platform_introspection.rb +268 -268
  410. data/lib/chef/dsl/powershell.rb +29 -29
  411. data/lib/chef/dsl/reboot_pending.rb +64 -64
  412. data/lib/chef/dsl/recipe.rb +92 -92
  413. data/lib/chef/dsl/registry_helper.rb +63 -63
  414. data/lib/chef/dsl/resources.rb +49 -49
  415. data/lib/chef/dsl/universal.rb +50 -50
  416. data/lib/chef/encrypted_data_bag_item.rb +155 -155
  417. data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
  418. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
  419. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
  420. data/lib/chef/encrypted_data_bag_item/decryptor.rb +227 -227
  421. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
  422. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
  423. data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
  424. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
  425. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
  426. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
  427. data/lib/chef/environment.rb +319 -319
  428. data/lib/chef/event_dispatch/base.rb +445 -445
  429. data/lib/chef/event_dispatch/dispatcher.rb +62 -62
  430. data/lib/chef/event_dispatch/dsl.rb +65 -65
  431. data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
  432. data/lib/chef/event_loggers/base.rb +62 -62
  433. data/lib/chef/event_loggers/windows_eventlog.rb +101 -101
  434. data/lib/chef/exceptions.rb +525 -525
  435. data/lib/chef/file_access_control.rb +75 -75
  436. data/lib/chef/file_access_control/unix.rb +290 -290
  437. data/lib/chef/file_access_control/windows.rb +335 -335
  438. data/lib/chef/file_cache.rb +221 -221
  439. data/lib/chef/file_content_management/content_base.rb +56 -56
  440. data/lib/chef/file_content_management/deploy.rb +37 -37
  441. data/lib/chef/file_content_management/deploy/cp.rb +48 -48
  442. data/lib/chef/file_content_management/deploy/mv_unix.rb +76 -76
  443. data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
  444. data/lib/chef/file_content_management/tempfile.rb +107 -107
  445. data/lib/chef/formatters/base.rb +247 -247
  446. data/lib/chef/formatters/doc.rb +447 -447
  447. data/lib/chef/formatters/error_description.rb +86 -86
  448. data/lib/chef/formatters/error_inspectors.rb +19 -19
  449. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +183 -183
  450. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
  451. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
  452. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
  453. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +128 -128
  454. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +147 -147
  455. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +124 -124
  456. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +121 -121
  457. data/lib/chef/formatters/error_mapper.rb +85 -85
  458. data/lib/chef/formatters/indentable_output_stream.rb +170 -170
  459. data/lib/chef/formatters/minimal.rb +233 -233
  460. data/lib/chef/guard_interpreter.rb +32 -32
  461. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +45 -45
  462. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
  463. data/lib/chef/handler.rb +268 -268
  464. data/lib/chef/handler/error_report.rb +33 -33
  465. data/lib/chef/handler/json_file.rb +63 -63
  466. data/lib/chef/http.rb +527 -527
  467. data/lib/chef/http/api_versions.rb +56 -56
  468. data/lib/chef/http/auth_credentials.rb +57 -57
  469. data/lib/chef/http/authenticator.rb +115 -115
  470. data/lib/chef/http/basic_client.rb +158 -158
  471. data/lib/chef/http/cookie_jar.rb +31 -31
  472. data/lib/chef/http/cookie_manager.rb +59 -59
  473. data/lib/chef/http/decompressor.rb +142 -142
  474. data/lib/chef/http/http_request.rb +189 -189
  475. data/lib/chef/http/json_input.rb +73 -73
  476. data/lib/chef/http/json_output.rb +81 -81
  477. data/lib/chef/http/json_to_model_output.rb +34 -34
  478. data/lib/chef/http/remote_request_id.rb +46 -46
  479. data/lib/chef/http/simple.rb +40 -40
  480. data/lib/chef/http/simple_json.rb +43 -43
  481. data/lib/chef/http/socketless_chef_zero_client.rb +209 -209
  482. data/lib/chef/http/ssl_policies.rb +130 -130
  483. data/lib/chef/http/validate_content_length.rb +114 -114
  484. data/lib/chef/json_compat.rb +68 -68
  485. data/lib/chef/key.rb +267 -267
  486. data/lib/chef/knife.rb +617 -617
  487. data/lib/chef/knife/bootstrap.rb +495 -495
  488. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +159 -159
  489. data/lib/chef/knife/bootstrap/client_builder.rb +208 -208
  490. data/lib/chef/knife/bootstrap/templates/README.md +11 -11
  491. data/lib/chef/knife/bootstrap/templates/chef-full.erb +236 -236
  492. data/lib/chef/knife/client_bulk_delete.rb +104 -104
  493. data/lib/chef/knife/client_create.rb +111 -111
  494. data/lib/chef/knife/client_delete.rb +63 -63
  495. data/lib/chef/knife/client_edit.rb +53 -53
  496. data/lib/chef/knife/client_key_create.rb +70 -70
  497. data/lib/chef/knife/client_key_delete.rb +77 -77
  498. data/lib/chef/knife/client_key_edit.rb +80 -80
  499. data/lib/chef/knife/client_key_list.rb +70 -70
  500. data/lib/chef/knife/client_key_show.rb +77 -77
  501. data/lib/chef/knife/client_list.rb +42 -42
  502. data/lib/chef/knife/client_reregister.rb +59 -59
  503. data/lib/chef/knife/client_show.rb +49 -49
  504. data/lib/chef/knife/configure.rb +145 -145
  505. data/lib/chef/knife/configure_client.rb +48 -48
  506. data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
  507. data/lib/chef/knife/cookbook_create.rb +29 -29
  508. data/lib/chef/knife/cookbook_delete.rb +151 -151
  509. data/lib/chef/knife/cookbook_download.rb +142 -142
  510. data/lib/chef/knife/cookbook_list.rb +47 -47
  511. data/lib/chef/knife/cookbook_metadata.rb +107 -107
  512. data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -44
  513. data/lib/chef/knife/cookbook_show.rb +98 -98
  514. data/lib/chef/knife/cookbook_site_download.rb +116 -116
  515. data/lib/chef/knife/cookbook_site_install.rb +196 -196
  516. data/lib/chef/knife/cookbook_site_list.rb +65 -65
  517. data/lib/chef/knife/cookbook_site_search.rb +53 -53
  518. data/lib/chef/knife/cookbook_site_share.rb +170 -170
  519. data/lib/chef/knife/cookbook_site_show.rb +66 -66
  520. data/lib/chef/knife/cookbook_site_unshare.rb +63 -63
  521. data/lib/chef/knife/cookbook_test.rb +95 -95
  522. data/lib/chef/knife/cookbook_upload.rb +308 -308
  523. data/lib/chef/knife/core/bootstrap_context.rb +269 -269
  524. data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
  525. data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
  526. data/lib/chef/knife/core/generic_presenter.rb +232 -232
  527. data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
  528. data/lib/chef/knife/core/node_editor.rb +130 -130
  529. data/lib/chef/knife/core/node_presenter.rb +159 -159
  530. data/lib/chef/knife/core/object_loader.rb +115 -115
  531. data/lib/chef/knife/core/status_presenter.rb +161 -161
  532. data/lib/chef/knife/core/subcommand_loader.rb +182 -182
  533. data/lib/chef/knife/core/text_formatter.rb +85 -85
  534. data/lib/chef/knife/core/ui.rb +277 -277
  535. data/lib/chef/knife/data_bag_create.rb +80 -80
  536. data/lib/chef/knife/data_bag_delete.rb +49 -49
  537. data/lib/chef/knife/data_bag_edit.rb +74 -74
  538. data/lib/chef/knife/data_bag_from_file.rb +114 -114
  539. data/lib/chef/knife/data_bag_list.rb +42 -42
  540. data/lib/chef/knife/data_bag_secret_options.rb +142 -142
  541. data/lib/chef/knife/data_bag_show.rb +69 -69
  542. data/lib/chef/knife/delete.rb +107 -107
  543. data/lib/chef/knife/deps.rb +138 -138
  544. data/lib/chef/knife/diff.rb +68 -68
  545. data/lib/chef/knife/download.rb +68 -68
  546. data/lib/chef/knife/edit.rb +72 -72
  547. data/lib/chef/knife/environment_compare.rb +127 -127
  548. data/lib/chef/knife/environment_create.rb +53 -53
  549. data/lib/chef/knife/environment_delete.rb +45 -45
  550. data/lib/chef/knife/environment_edit.rb +45 -45
  551. data/lib/chef/knife/environment_from_file.rb +82 -82
  552. data/lib/chef/knife/environment_list.rb +42 -42
  553. data/lib/chef/knife/environment_show.rb +48 -48
  554. data/lib/chef/knife/exec.rb +87 -87
  555. data/lib/chef/knife/help.rb +101 -101
  556. data/lib/chef/knife/help_topics.rb +4 -4
  557. data/lib/chef/knife/index_rebuild.rb +133 -133
  558. data/lib/chef/knife/key_create.rb +112 -112
  559. data/lib/chef/knife/key_create_base.rb +50 -50
  560. data/lib/chef/knife/key_delete.rb +55 -55
  561. data/lib/chef/knife/key_edit.rb +118 -118
  562. data/lib/chef/knife/key_edit_base.rb +55 -55
  563. data/lib/chef/knife/key_list.rb +88 -88
  564. data/lib/chef/knife/key_list_base.rb +45 -45
  565. data/lib/chef/knife/key_show.rb +53 -53
  566. data/lib/chef/knife/list.rb +156 -156
  567. data/lib/chef/knife/node_bulk_delete.rb +74 -74
  568. data/lib/chef/knife/node_create.rb +47 -47
  569. data/lib/chef/knife/node_delete.rb +46 -46
  570. data/lib/chef/knife/node_edit.rb +70 -70
  571. data/lib/chef/knife/node_environment_set.rb +54 -54
  572. data/lib/chef/knife/node_from_file.rb +51 -51
  573. data/lib/chef/knife/node_list.rb +44 -44
  574. data/lib/chef/knife/node_run_list_add.rb +104 -104
  575. data/lib/chef/knife/node_run_list_remove.rb +67 -67
  576. data/lib/chef/knife/node_run_list_set.rb +66 -66
  577. data/lib/chef/knife/node_show.rb +61 -61
  578. data/lib/chef/knife/null.rb +10 -10
  579. data/lib/chef/knife/osc_user_create.rb +97 -97
  580. data/lib/chef/knife/osc_user_delete.rb +51 -51
  581. data/lib/chef/knife/osc_user_edit.rb +58 -58
  582. data/lib/chef/knife/osc_user_list.rb +47 -47
  583. data/lib/chef/knife/osc_user_reregister.rb +64 -64
  584. data/lib/chef/knife/osc_user_show.rb +53 -53
  585. data/lib/chef/knife/raw.rb +103 -103
  586. data/lib/chef/knife/recipe_list.rb +32 -32
  587. data/lib/chef/knife/rehash.rb +65 -65
  588. data/lib/chef/knife/role_bulk_delete.rb +65 -65
  589. data/lib/chef/knife/role_create.rb +53 -53
  590. data/lib/chef/knife/role_delete.rb +46 -46
  591. data/lib/chef/knife/role_edit.rb +45 -45
  592. data/lib/chef/knife/role_env_run_list_add.rb +86 -86
  593. data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
  594. data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
  595. data/lib/chef/knife/role_env_run_list_replace.rb +59 -59
  596. data/lib/chef/knife/role_env_run_list_set.rb +70 -70
  597. data/lib/chef/knife/role_from_file.rb +51 -51
  598. data/lib/chef/knife/role_list.rb +42 -42
  599. data/lib/chef/knife/role_run_list_add.rb +86 -86
  600. data/lib/chef/knife/role_run_list_clear.rb +55 -55
  601. data/lib/chef/knife/role_run_list_remove.rb +57 -57
  602. data/lib/chef/knife/role_run_list_replace.rb +59 -59
  603. data/lib/chef/knife/role_run_list_set.rb +70 -70
  604. data/lib/chef/knife/role_show.rb +49 -49
  605. data/lib/chef/knife/search.rb +194 -192
  606. data/lib/chef/knife/serve.rb +48 -48
  607. data/lib/chef/knife/show.rb +56 -56
  608. data/lib/chef/knife/ssh.rb +621 -623
  609. data/lib/chef/knife/ssl_check.rb +283 -283
  610. data/lib/chef/knife/ssl_fetch.rb +161 -161
  611. data/lib/chef/knife/status.rb +110 -110
  612. data/lib/chef/knife/supermarket_download.rb +33 -33
  613. data/lib/chef/knife/supermarket_install.rb +33 -33
  614. data/lib/chef/knife/supermarket_list.rb +33 -33
  615. data/lib/chef/knife/supermarket_search.rb +33 -33
  616. data/lib/chef/knife/supermarket_share.rb +33 -33
  617. data/lib/chef/knife/supermarket_show.rb +33 -33
  618. data/lib/chef/knife/supermarket_unshare.rb +33 -33
  619. data/lib/chef/knife/tag_create.rb +52 -52
  620. data/lib/chef/knife/tag_delete.rb +60 -60
  621. data/lib/chef/knife/tag_list.rb +47 -47
  622. data/lib/chef/knife/upload.rb +70 -70
  623. data/lib/chef/knife/user_create.rb +152 -152
  624. data/lib/chef/knife/user_delete.rb +97 -97
  625. data/lib/chef/knife/user_edit.rb +83 -83
  626. data/lib/chef/knife/user_key_create.rb +70 -70
  627. data/lib/chef/knife/user_key_delete.rb +77 -77
  628. data/lib/chef/knife/user_key_edit.rb +80 -80
  629. data/lib/chef/knife/user_key_list.rb +70 -70
  630. data/lib/chef/knife/user_key_show.rb +77 -77
  631. data/lib/chef/knife/user_list.rb +45 -45
  632. data/lib/chef/knife/user_reregister.rb +91 -91
  633. data/lib/chef/knife/user_show.rb +80 -80
  634. data/lib/chef/knife/xargs.rb +266 -266
  635. data/lib/chef/local_mode.rb +129 -129
  636. data/lib/chef/log.rb +68 -68
  637. data/lib/chef/log/syslog.rb +45 -45
  638. data/lib/chef/log/winevt.rb +99 -99
  639. data/lib/chef/mash.rb +232 -232
  640. data/lib/chef/mixin/api_version_request_handling.rb +66 -66
  641. data/lib/chef/mixin/checksum.rb +37 -37
  642. data/lib/chef/mixin/convert_to_class_name.rb +126 -126
  643. data/lib/chef/mixin/create_path.rb +71 -71
  644. data/lib/chef/mixin/deep_merge.rb +140 -140
  645. data/lib/chef/mixin/deprecation.rb +117 -117
  646. data/lib/chef/mixin/descendants_tracker.rb +81 -81
  647. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
  648. data/lib/chef/mixin/file_class.rb +35 -35
  649. data/lib/chef/mixin/from_file.rb +50 -50
  650. data/lib/chef/mixin/get_source_from_package.rb +47 -47
  651. data/lib/chef/mixin/homebrew_user.rb +68 -68
  652. data/lib/chef/mixin/language.rb +48 -48
  653. data/lib/chef/mixin/language_include_attribute.rb +34 -34
  654. data/lib/chef/mixin/language_include_recipe.rb +31 -31
  655. data/lib/chef/mixin/lazy_module_include.rb +77 -77
  656. data/lib/chef/mixin/notifying_block.rb +51 -51
  657. data/lib/chef/mixin/params_validate.rb +490 -490
  658. data/lib/chef/mixin/path_sanity.rb +66 -66
  659. data/lib/chef/mixin/powershell_out.rb +98 -98
  660. data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
  661. data/lib/chef/mixin/properties.rb +306 -306
  662. data/lib/chef/mixin/provides.rb +28 -28
  663. data/lib/chef/mixin/proxified_socket.rb +42 -42
  664. data/lib/chef/mixin/recipe_definition_dsl_core.rb +35 -35
  665. data/lib/chef/mixin/securable.rb +196 -196
  666. data/lib/chef/mixin/shell_out.rb +195 -195
  667. data/lib/chef/mixin/subclass_directive.rb +37 -37
  668. data/lib/chef/mixin/template.rb +262 -262
  669. data/lib/chef/mixin/unformatter.rb +32 -32
  670. data/lib/chef/mixin/uris.rb +42 -42
  671. data/lib/chef/mixin/user_context.rb +52 -52
  672. data/lib/chef/mixin/versioned_api.rb +84 -84
  673. data/lib/chef/mixin/which.rb +50 -50
  674. data/lib/chef/mixin/why_run.rb +331 -331
  675. data/lib/chef/mixin/wide_string.rb +72 -72
  676. data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
  677. data/lib/chef/mixin/windows_env_helper.rb +67 -67
  678. data/lib/chef/mixin/xml_escape.rb +138 -138
  679. data/lib/chef/mixins.rb +12 -12
  680. data/lib/chef/monkey_patches/net_http.rb +60 -60
  681. data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
  682. data/lib/chef/monkey_patches/win32/registry.rb +86 -86
  683. data/lib/chef/monologger.rb +88 -88
  684. data/lib/chef/nil_argument.rb +3 -3
  685. data/lib/chef/node.rb +678 -678
  686. data/lib/chef/node/attribute.rb +650 -626
  687. data/lib/chef/node/attribute_collections.rb +213 -213
  688. data/lib/chef/node/common_api.rb +121 -121
  689. data/lib/chef/node/immutable_collections.rb +182 -339
  690. data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
  691. data/lib/chef/node/mixin/immutablize_array.rb +67 -67
  692. data/lib/chef/node/mixin/immutablize_hash.rb +54 -54
  693. data/lib/chef/node/mixin/state_tracking.rb +96 -96
  694. data/lib/chef/node_map.rb +279 -253
  695. data/lib/chef/null_logger.rb +72 -72
  696. data/lib/chef/org.rb +142 -142
  697. data/lib/chef/platform.rb +30 -30
  698. data/lib/chef/platform/priority_map.rb +41 -41
  699. data/lib/chef/platform/provider_handler_map.rb +29 -29
  700. data/lib/chef/platform/provider_mapping.rb +55 -55
  701. data/lib/chef/platform/provider_priority_map.rb +11 -11
  702. data/lib/chef/platform/query_helpers.rb +112 -112
  703. data/lib/chef/platform/rebooter.rb +70 -70
  704. data/lib/chef/platform/resource_handler_map.rb +29 -29
  705. data/lib/chef/platform/resource_priority_map.rb +11 -11
  706. data/lib/chef/platform/service_helpers.rb +122 -122
  707. data/lib/chef/policy_builder.rb +42 -42
  708. data/lib/chef/policy_builder/dynamic.rb +185 -185
  709. data/lib/chef/policy_builder/expand_node_object.rb +252 -252
  710. data/lib/chef/policy_builder/policyfile.rb +551 -551
  711. data/lib/chef/property.rb +682 -682
  712. data/lib/chef/provider.rb +412 -412
  713. data/lib/chef/provider/apt_preference.rb +94 -94
  714. data/lib/chef/provider/apt_repository.rb +250 -250
  715. data/lib/chef/provider/apt_update.rb +77 -77
  716. data/lib/chef/provider/batch.rb +45 -45
  717. data/lib/chef/provider/cookbook_file.rb +47 -47
  718. data/lib/chef/provider/cookbook_file/content.rb +49 -49
  719. data/lib/chef/provider/cron.rb +244 -244
  720. data/lib/chef/provider/cron/aix.rb +50 -50
  721. data/lib/chef/provider/cron/solaris.rb +22 -22
  722. data/lib/chef/provider/cron/unix.rb +83 -83
  723. data/lib/chef/provider/deploy.rb +470 -470
  724. data/lib/chef/provider/deploy/revision.rb +107 -107
  725. data/lib/chef/provider/deploy/timestamped.rb +34 -34
  726. data/lib/chef/provider/directory.rb +164 -164
  727. data/lib/chef/provider/dsc_resource.rb +209 -209
  728. data/lib/chef/provider/dsc_script.rb +185 -185
  729. data/lib/chef/provider/env.rb +171 -171
  730. data/lib/chef/provider/env/windows.rb +76 -76
  731. data/lib/chef/provider/erl_call.rb +76 -76
  732. data/lib/chef/provider/execute.rb +125 -125
  733. data/lib/chef/provider/file.rb +478 -478
  734. data/lib/chef/provider/file/content.rb +39 -39
  735. data/lib/chef/provider/git.rb +347 -347
  736. data/lib/chef/provider/group.rb +179 -179
  737. data/lib/chef/provider/group/aix.rb +79 -79
  738. data/lib/chef/provider/group/dscl.rb +177 -177
  739. data/lib/chef/provider/group/gpasswd.rb +58 -58
  740. data/lib/chef/provider/group/groupadd.rb +133 -133
  741. data/lib/chef/provider/group/groupmod.rb +123 -123
  742. data/lib/chef/provider/group/pw.rb +137 -137
  743. data/lib/chef/provider/group/suse.rb +83 -83
  744. data/lib/chef/provider/group/usermod.rb +90 -90
  745. data/lib/chef/provider/group/windows.rb +109 -109
  746. data/lib/chef/provider/http_request.rb +132 -132
  747. data/lib/chef/provider/ifconfig.rb +271 -271
  748. data/lib/chef/provider/ifconfig/aix.rb +94 -94
  749. data/lib/chef/provider/ifconfig/debian.rb +85 -85
  750. data/lib/chef/provider/ifconfig/redhat.rb +52 -52
  751. data/lib/chef/provider/launchd.rb +231 -231
  752. data/lib/chef/provider/link.rb +168 -168
  753. data/lib/chef/provider/log.rb +43 -43
  754. data/lib/chef/provider/lwrp_base.rb +89 -89
  755. data/lib/chef/provider/mdadm.rb +85 -85
  756. data/lib/chef/provider/mount.rb +167 -167
  757. data/lib/chef/provider/mount/aix.rb +221 -221
  758. data/lib/chef/provider/mount/mount.rb +270 -270
  759. data/lib/chef/provider/mount/solaris.rb +271 -271
  760. data/lib/chef/provider/mount/windows.rb +92 -92
  761. data/lib/chef/provider/noop.rb +37 -37
  762. data/lib/chef/provider/ohai.rb +45 -45
  763. data/lib/chef/provider/osx_profile.rb +252 -252
  764. data/lib/chef/provider/package.rb +681 -681
  765. data/lib/chef/provider/package/aix.rb +142 -142
  766. data/lib/chef/provider/package/apt.rb +217 -217
  767. data/lib/chef/provider/package/cab.rb +183 -183
  768. data/lib/chef/provider/package/chocolatey.rb +291 -291
  769. data/lib/chef/provider/package/dnf.rb +196 -196
  770. data/lib/chef/provider/package/dnf/dnf_helper.py +100 -100
  771. data/lib/chef/provider/package/dnf/python_helper.rb +172 -172
  772. data/lib/chef/provider/package/dnf/version.rb +56 -56
  773. data/lib/chef/provider/package/dpkg.rb +241 -241
  774. data/lib/chef/provider/package/freebsd/base.rb +89 -89
  775. data/lib/chef/provider/package/freebsd/pkg.rb +114 -114
  776. data/lib/chef/provider/package/freebsd/pkgng.rb +76 -76
  777. data/lib/chef/provider/package/freebsd/port.rb +60 -60
  778. data/lib/chef/provider/package/homebrew.rb +138 -138
  779. data/lib/chef/provider/package/ips.rb +85 -85
  780. data/lib/chef/provider/package/macports.rb +101 -101
  781. data/lib/chef/provider/package/msu.rb +161 -161
  782. data/lib/chef/provider/package/openbsd.rb +139 -139
  783. data/lib/chef/provider/package/pacman.rb +103 -103
  784. data/lib/chef/provider/package/paludis.rb +85 -85
  785. data/lib/chef/provider/package/portage.rb +139 -139
  786. data/lib/chef/provider/package/powershell.rb +114 -114
  787. data/lib/chef/provider/package/rpm.rb +127 -127
  788. data/lib/chef/provider/package/rubygems.rb +591 -591
  789. data/lib/chef/provider/package/smartos.rb +92 -92
  790. data/lib/chef/provider/package/solaris.rb +137 -137
  791. data/lib/chef/provider/package/windows.rb +286 -286
  792. data/lib/chef/provider/package/windows/exe.rb +115 -115
  793. data/lib/chef/provider/package/windows/msi.rb +94 -94
  794. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +93 -93
  795. data/lib/chef/provider/package/yum.rb +520 -520
  796. data/lib/chef/provider/package/yum/rpm_utils.rb +642 -642
  797. data/lib/chef/provider/package/yum/yum-dump.py +307 -307
  798. data/lib/chef/provider/package/yum/yum_cache.rb +376 -376
  799. data/lib/chef/provider/package/zypper.rb +157 -157
  800. data/lib/chef/provider/powershell_script.rb +223 -223
  801. data/lib/chef/provider/reboot.rb +78 -78
  802. data/lib/chef/provider/registry_key.rb +178 -178
  803. data/lib/chef/provider/remote_directory.rb +271 -271
  804. data/lib/chef/provider/remote_file.rb +66 -66
  805. data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
  806. data/lib/chef/provider/remote_file/content.rb +81 -81
  807. data/lib/chef/provider/remote_file/fetcher.rb +60 -60
  808. data/lib/chef/provider/remote_file/ftp.rb +172 -172
  809. data/lib/chef/provider/remote_file/http.rb +141 -136
  810. data/lib/chef/provider/remote_file/local_file.rb +60 -60
  811. data/lib/chef/provider/remote_file/network_file.rb +61 -61
  812. data/lib/chef/provider/remote_file/sftp.rb +105 -105
  813. data/lib/chef/provider/resource_update.rb +52 -52
  814. data/lib/chef/provider/route.rb +244 -244
  815. data/lib/chef/provider/ruby_block.rb +40 -40
  816. data/lib/chef/provider/script.rb +121 -121
  817. data/lib/chef/provider/service.rb +252 -252
  818. data/lib/chef/provider/service/aix.rb +125 -125
  819. data/lib/chef/provider/service/aixinit.rb +117 -117
  820. data/lib/chef/provider/service/arch.rb +118 -118
  821. data/lib/chef/provider/service/debian.rb +176 -176
  822. data/lib/chef/provider/service/freebsd.rb +194 -194
  823. data/lib/chef/provider/service/gentoo.rb +70 -70
  824. data/lib/chef/provider/service/init.rb +93 -93
  825. data/lib/chef/provider/service/insserv.rb +59 -59
  826. data/lib/chef/provider/service/invokercd.rb +41 -41
  827. data/lib/chef/provider/service/macosx.rb +251 -251
  828. data/lib/chef/provider/service/openbsd.rb +216 -216
  829. data/lib/chef/provider/service/redhat.rb +126 -126
  830. data/lib/chef/provider/service/simple.rb +171 -171
  831. data/lib/chef/provider/service/solaris.rb +127 -127
  832. data/lib/chef/provider/service/systemd.rb +189 -189
  833. data/lib/chef/provider/service/upstart.rb +259 -259
  834. data/lib/chef/provider/service/windows.rb +309 -309
  835. data/lib/chef/provider/subversion.rb +227 -227
  836. data/lib/chef/provider/support/yum_repo.erb +138 -138
  837. data/lib/chef/provider/support/zypper_repo.erb +17 -17
  838. data/lib/chef/provider/systemd_unit.rb +242 -242
  839. data/lib/chef/provider/template.rb +59 -59
  840. data/lib/chef/provider/template/content.rb +93 -93
  841. data/lib/chef/provider/template_finder.rb +62 -62
  842. data/lib/chef/provider/user.rb +204 -204
  843. data/lib/chef/provider/user/aix.rb +99 -99
  844. data/lib/chef/provider/user/dscl.rb +719 -719
  845. data/lib/chef/provider/user/linux.rb +126 -126
  846. data/lib/chef/provider/user/pw.rb +105 -105
  847. data/lib/chef/provider/user/solaris.rb +129 -129
  848. data/lib/chef/provider/user/useradd.rb +158 -158
  849. data/lib/chef/provider/user/windows.rb +125 -125
  850. data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
  851. data/lib/chef/provider/windows_path.rb +61 -61
  852. data/lib/chef/provider/windows_script.rb +75 -75
  853. data/lib/chef/provider/windows_task.rb +568 -568
  854. data/lib/chef/provider/yum_repository.rb +130 -130
  855. data/lib/chef/provider/zypper_repository.rb +169 -169
  856. data/lib/chef/provider_resolver.rb +146 -146
  857. data/lib/chef/providers.rb +154 -154
  858. data/lib/chef/recipe.rb +116 -116
  859. data/lib/chef/request_id.rb +37 -37
  860. data/lib/chef/reserved_names.rb +9 -9
  861. data/lib/chef/resource.rb +1507 -1507
  862. data/lib/chef/resource/action_class.rb +90 -90
  863. data/lib/chef/resource/apt_package.rb +33 -33
  864. data/lib/chef/resource/apt_preference.rb +40 -40
  865. data/lib/chef/resource/apt_repository.rb +50 -50
  866. data/lib/chef/resource/apt_update.rb +38 -38
  867. data/lib/chef/resource/bash.rb +37 -37
  868. data/lib/chef/resource/batch.rb +38 -38
  869. data/lib/chef/resource/bff_package.rb +31 -31
  870. data/lib/chef/resource/breakpoint.rb +50 -50
  871. data/lib/chef/resource/cab_package.rb +44 -44
  872. data/lib/chef/resource/chef_gem.rb +56 -56
  873. data/lib/chef/resource/chocolatey_package.rb +41 -41
  874. data/lib/chef/resource/conditional.rb +135 -135
  875. data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
  876. data/lib/chef/resource/cookbook_file.rb +47 -47
  877. data/lib/chef/resource/cron.rb +218 -218
  878. data/lib/chef/resource/csh.rb +37 -37
  879. data/lib/chef/resource/deploy.rb +449 -449
  880. data/lib/chef/resource/deploy_revision.rb +31 -31
  881. data/lib/chef/resource/directory.rb +44 -44
  882. data/lib/chef/resource/dnf_package.rb +79 -79
  883. data/lib/chef/resource/dpkg_package.rb +32 -32
  884. data/lib/chef/resource/dsc_resource.rb +134 -134
  885. data/lib/chef/resource/dsc_script.rb +146 -146
  886. data/lib/chef/resource/env.rb +36 -36
  887. data/lib/chef/resource/erl_call.rb +90 -90
  888. data/lib/chef/resource/execute.rb +233 -233
  889. data/lib/chef/resource/file.rb +89 -89
  890. data/lib/chef/resource/file/verification.rb +135 -135
  891. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
  892. data/lib/chef/resource/freebsd_package.rb +70 -70
  893. data/lib/chef/resource/gem_package.rb +57 -57
  894. data/lib/chef/resource/git.rb +46 -46
  895. data/lib/chef/resource/group.rb +103 -103
  896. data/lib/chef/resource/homebrew_package.rb +37 -37
  897. data/lib/chef/resource/http_request.rb +68 -68
  898. data/lib/chef/resource/ifconfig.rb +56 -56
  899. data/lib/chef/resource/ips_package.rb +35 -35
  900. data/lib/chef/resource/ksh.rb +38 -38
  901. data/lib/chef/resource/launchd.rb +145 -145
  902. data/lib/chef/resource/link.rb +117 -117
  903. data/lib/chef/resource/log.rb +49 -49
  904. data/lib/chef/resource/lwrp_base.rb +122 -122
  905. data/lib/chef/resource/macosx_service.rb +58 -58
  906. data/lib/chef/resource/macports_package.rb +28 -28
  907. data/lib/chef/resource/mdadm.rb +116 -116
  908. data/lib/chef/resource/mount.rb +175 -175
  909. data/lib/chef/resource/msu_package.rb +46 -46
  910. data/lib/chef/resource/ohai.rb +35 -35
  911. data/lib/chef/resource/openbsd_package.rb +38 -38
  912. data/lib/chef/resource/osx_profile.rb +44 -44
  913. data/lib/chef/resource/package.rb +53 -53
  914. data/lib/chef/resource/pacman_package.rb +29 -29
  915. data/lib/chef/resource/paludis_package.rb +36 -36
  916. data/lib/chef/resource/perl.rb +36 -36
  917. data/lib/chef/resource/portage_package.rb +33 -33
  918. data/lib/chef/resource/powershell_package.rb +46 -46
  919. data/lib/chef/resource/powershell_script.rb +58 -58
  920. data/lib/chef/resource/python.rb +35 -35
  921. data/lib/chef/resource/reboot.rb +42 -42
  922. data/lib/chef/resource/registry_key.rb +145 -145
  923. data/lib/chef/resource/remote_directory.rb +125 -125
  924. data/lib/chef/resource/remote_file.rb +220 -220
  925. data/lib/chef/resource/resource_notification.rb +139 -139
  926. data/lib/chef/resource/route.rb +44 -44
  927. data/lib/chef/resource/rpm_package.rb +33 -33
  928. data/lib/chef/resource/ruby.rb +35 -35
  929. data/lib/chef/resource/ruby_block.rb +56 -56
  930. data/lib/chef/resource/scm.rb +179 -179
  931. data/lib/chef/resource/script.rb +52 -52
  932. data/lib/chef/resource/service.rb +220 -220
  933. data/lib/chef/resource/smartos_package.rb +30 -30
  934. data/lib/chef/resource/solaris_package.rb +32 -32
  935. data/lib/chef/resource/subversion.rb +45 -45
  936. data/lib/chef/resource/systemd_unit.rb +74 -74
  937. data/lib/chef/resource/template.rb +224 -224
  938. data/lib/chef/resource/timestamped_deploy.rb +26 -26
  939. data/lib/chef/resource/user.rb +159 -159
  940. data/lib/chef/resource/user/aix_user.rb +31 -31
  941. data/lib/chef/resource/user/dscl_user.rb +31 -31
  942. data/lib/chef/resource/user/linux_user.rb +32 -32
  943. data/lib/chef/resource/user/pw_user.rb +31 -31
  944. data/lib/chef/resource/user/solaris_user.rb +31 -31
  945. data/lib/chef/resource/user/windows_user.rb +31 -31
  946. data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
  947. data/lib/chef/resource/windows_package.rb +60 -60
  948. data/lib/chef/resource/windows_path.rb +36 -36
  949. data/lib/chef/resource/windows_script.rb +65 -65
  950. data/lib/chef/resource/windows_service.rb +74 -74
  951. data/lib/chef/resource/windows_task.rb +221 -221
  952. data/lib/chef/resource/yum_package.rb +61 -61
  953. data/lib/chef/resource/yum_repository.rb +85 -85
  954. data/lib/chef/resource/zypper_package.rb +33 -33
  955. data/lib/chef/resource/zypper_repository.rb +58 -58
  956. data/lib/chef/resource_builder.rb +92 -92
  957. data/lib/chef/resource_collection.rb +146 -146
  958. data/lib/chef/resource_collection/resource_collection_serialization.rb +66 -66
  959. data/lib/chef/resource_collection/resource_list.rb +106 -106
  960. data/lib/chef/resource_collection/resource_set.rb +200 -200
  961. data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
  962. data/lib/chef/resource_definition.rb +68 -68
  963. data/lib/chef/resource_definition_list.rb +38 -38
  964. data/lib/chef/resource_reporter.rb +338 -338
  965. data/lib/chef/resource_resolver.rb +160 -160
  966. data/lib/chef/resources.rb +104 -104
  967. data/lib/chef/role.rb +274 -274
  968. data/lib/chef/run_context.rb +673 -673
  969. data/lib/chef/run_context/cookbook_compiler.rb +335 -335
  970. data/lib/chef/run_list.rb +168 -168
  971. data/lib/chef/run_list/run_list_expansion.rb +234 -234
  972. data/lib/chef/run_list/run_list_item.rb +98 -98
  973. data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
  974. data/lib/chef/run_lock.rb +197 -197
  975. data/lib/chef/run_status.rb +125 -125
  976. data/lib/chef/runner.rb +144 -144
  977. data/lib/chef/sandbox.rb +20 -20
  978. data/lib/chef/scan_access_control.rb +138 -138
  979. data/lib/chef/search/query.rb +183 -183
  980. data/lib/chef/server_api.rb +81 -81
  981. data/lib/chef/server_api_versions.rb +59 -59
  982. data/lib/chef/shell.rb +353 -353
  983. data/lib/chef/shell/ext.rb +593 -593
  984. data/lib/chef/shell/model_wrapper.rb +120 -120
  985. data/lib/chef/shell/shell_session.rb +309 -309
  986. data/lib/chef/user.rb +192 -192
  987. data/lib/chef/user_v1.rb +323 -323
  988. data/lib/chef/util/backup.rb +94 -94
  989. data/lib/chef/util/diff.rb +184 -184
  990. data/lib/chef/util/dsc/configuration_generator.rb +139 -139
  991. data/lib/chef/util/dsc/lcm_output_parser.rb +192 -192
  992. data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
  993. data/lib/chef/util/dsc/resource_info.rb +26 -26
  994. data/lib/chef/util/dsc/resource_store.rb +109 -109
  995. data/lib/chef/util/editor.rb +91 -91
  996. data/lib/chef/util/file_edit.rb +100 -100
  997. data/lib/chef/util/path_helper.rb +25 -25
  998. data/lib/chef/util/powershell/cmdlet.rb +173 -173
  999. data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
  1000. data/lib/chef/util/powershell/ps_credential.rb +41 -41
  1001. data/lib/chef/util/selinux.rb +93 -93
  1002. data/lib/chef/util/threaded_job_queue.rb +61 -61
  1003. data/lib/chef/util/windows.rb +24 -24
  1004. data/lib/chef/util/windows/logon_session.rb +126 -126
  1005. data/lib/chef/util/windows/net_group.rb +72 -72
  1006. data/lib/chef/util/windows/net_use.rb +81 -81
  1007. data/lib/chef/util/windows/net_user.rb +164 -164
  1008. data/lib/chef/util/windows/volume.rb +53 -53
  1009. data/lib/chef/version.rb +36 -36
  1010. data/lib/chef/version/platform.rb +62 -62
  1011. data/lib/chef/version_class.rb +75 -75
  1012. data/lib/chef/version_constraint.rb +118 -118
  1013. data/lib/chef/version_constraint/platform.rb +28 -28
  1014. data/lib/chef/version_string.rb +143 -143
  1015. data/lib/chef/whitelist.rb +86 -86
  1016. data/lib/chef/win32/api.rb +372 -372
  1017. data/lib/chef/win32/api/crypto.rb +63 -63
  1018. data/lib/chef/win32/api/error.rb +953 -953
  1019. data/lib/chef/win32/api/file.rb +620 -620
  1020. data/lib/chef/win32/api/installer.rb +165 -165
  1021. data/lib/chef/win32/api/memory.rb +105 -105
  1022. data/lib/chef/win32/api/net.rb +312 -312
  1023. data/lib/chef/win32/api/process.rb +42 -42
  1024. data/lib/chef/win32/api/psapi.rb +51 -51
  1025. data/lib/chef/win32/api/registry.rb +51 -51
  1026. data/lib/chef/win32/api/security.rb +462 -462
  1027. data/lib/chef/win32/api/synchronization.rb +89 -89
  1028. data/lib/chef/win32/api/system.rb +238 -238
  1029. data/lib/chef/win32/api/unicode.rb +135 -135
  1030. data/lib/chef/win32/crypto.rb +50 -50
  1031. data/lib/chef/win32/error.rb +86 -86
  1032. data/lib/chef/win32/eventlog.rb +31 -31
  1033. data/lib/chef/win32/file.rb +218 -218
  1034. data/lib/chef/win32/file/info.rb +99 -99
  1035. data/lib/chef/win32/file/version_info.rb +93 -93
  1036. data/lib/chef/win32/handle.rb +55 -55
  1037. data/lib/chef/win32/memory.rb +101 -101
  1038. data/lib/chef/win32/mutex.rb +116 -116
  1039. data/lib/chef/win32/net.rb +311 -311
  1040. data/lib/chef/win32/process.rb +97 -97
  1041. data/lib/chef/win32/registry.rb +374 -374
  1042. data/lib/chef/win32/security.rb +665 -665
  1043. data/lib/chef/win32/security/ace.rb +123 -123
  1044. data/lib/chef/win32/security/acl.rb +103 -103
  1045. data/lib/chef/win32/security/securable_object.rb +109 -109
  1046. data/lib/chef/win32/security/security_descriptor.rb +93 -93
  1047. data/lib/chef/win32/security/sid.rb +309 -309
  1048. data/lib/chef/win32/security/token.rb +72 -72
  1049. data/lib/chef/win32/system.rb +62 -62
  1050. data/lib/chef/win32/unicode.rb +60 -60
  1051. data/lib/chef/win32/version.rb +164 -164
  1052. data/lib/chef/workstation_config_loader.rb +23 -23
  1053. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  1054. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  1055. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  1056. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
  1057. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  1058. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  1059. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  1060. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  1061. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  1062. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  1063. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
  1064. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  1065. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  1066. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  1067. data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
  1068. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
  1069. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
  1070. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
  1071. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
  1072. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
  1073. data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
  1074. data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
  1075. data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
  1076. data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
  1077. data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
  1078. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
  1079. data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
  1080. data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
  1081. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
  1082. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
  1083. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  1084. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  1085. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  1086. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  1087. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  1088. data/spec/data/apt/var/www/apt/db/version +4 -4
  1089. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  1090. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  1091. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  1092. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  1093. data/spec/data/bootstrap/no_proxy.erb +2 -2
  1094. data/spec/data/bootstrap/secret.erb +9 -9
  1095. data/spec/data/bootstrap/test-hints.erb +12 -12
  1096. data/spec/data/bootstrap/test.erb +1 -1
  1097. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  1098. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  1099. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  1100. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  1101. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  1102. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  1103. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  1104. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  1105. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  1106. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  1107. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  1108. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  1109. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  1110. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  1111. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  1112. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  1113. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  1114. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  1115. data/spec/data/client.d_00/00-foo.rb +2 -2
  1116. data/spec/data/client.d_00/01-bar.rb +1 -1
  1117. data/spec/data/client.d_00/02-strings.rb +2 -2
  1118. data/spec/data/client.d_00/bar +1 -1
  1119. data/spec/data/client.d_01/foo/bar.rb +1 -1
  1120. data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
  1121. data/spec/data/config.rb +6 -6
  1122. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  1123. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  1124. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  1125. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  1126. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  1127. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  1128. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  1129. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  1130. data/spec/data/cookbooks/chefignore +8 -8
  1131. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  1132. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  1133. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  1134. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  1135. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  1136. data/spec/data/cookbooks/java/metadata.rb +2 -2
  1137. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  1138. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  1139. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
  1140. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  1141. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  1142. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  1143. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  1144. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  1145. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  1146. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  1147. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  1148. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  1149. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  1150. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  1151. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  1152. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  1153. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  1154. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  1155. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  1156. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  1157. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  1158. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  1159. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  1160. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  1161. data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
  1162. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  1163. data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
  1164. data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
  1165. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  1166. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
  1167. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  1168. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  1169. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  1170. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  1171. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  1172. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  1173. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  1174. data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
  1175. data/spec/data/definitions/test.rb +4 -4
  1176. data/spec/data/environment-config.rb +4 -4
  1177. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  1178. data/spec/data/fileedit/hosts +4 -4
  1179. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  1180. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  1181. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
  1182. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  1183. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
  1184. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
  1185. data/spec/data/kitchen/chefignore +6 -6
  1186. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  1187. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  1188. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  1189. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  1190. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  1191. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  1192. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  1193. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  1194. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  1195. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  1196. data/spec/data/lwrp/providers/buck_passer.rb +28 -28
  1197. data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
  1198. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
  1199. data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
  1200. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  1201. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  1202. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  1203. data/spec/data/lwrp/resources/bar.rb +2 -2
  1204. data/spec/data/lwrp/resources/buck_passer.rb +5 -5
  1205. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
  1206. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
  1207. data/spec/data/lwrp/resources/foo.rb +4 -4
  1208. data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
  1209. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
  1210. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
  1211. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
  1212. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  1213. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  1214. data/spec/data/lwrp_override/resources/foo.rb +10 -10
  1215. data/spec/data/mac_users/10.7-8.plist.xml +559 -559
  1216. data/spec/data/mac_users/10.7-8.shadow.xml +11 -11
  1217. data/spec/data/mac_users/10.7.plist.xml +559 -559
  1218. data/spec/data/mac_users/10.7.shadow.xml +11 -11
  1219. data/spec/data/mac_users/10.8.plist.xml +559 -559
  1220. data/spec/data/mac_users/10.8.shadow.xml +21 -21
  1221. data/spec/data/mac_users/10.9.plist.xml +560 -560
  1222. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  1223. data/spec/data/metadata/quick_start/metadata.rb +19 -19
  1224. data/spec/data/nested.json +2 -2
  1225. data/spec/data/nodes/default.rb +15 -15
  1226. data/spec/data/nodes/test.example.com.rb +17 -17
  1227. data/spec/data/nodes/test.rb +15 -15
  1228. data/spec/data/null_config.rb +1 -1
  1229. data/spec/data/object_loader/environments/test.json +7 -7
  1230. data/spec/data/object_loader/environments/test.rb +2 -2
  1231. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  1232. data/spec/data/object_loader/nodes/test.json +7 -7
  1233. data/spec/data/object_loader/nodes/test.rb +2 -2
  1234. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  1235. data/spec/data/object_loader/roles/test.json +7 -7
  1236. data/spec/data/object_loader/roles/test.rb +2 -2
  1237. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  1238. data/spec/data/partial_one.erb +1 -1
  1239. data/spec/data/prefer_metadata_json/metadata.json +51 -51
  1240. data/spec/data/prefer_metadata_json/metadata.rb +6 -6
  1241. data/spec/data/recipes/test.rb +7 -7
  1242. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
  1243. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
  1244. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
  1245. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
  1246. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
  1247. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
  1248. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
  1249. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
  1250. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
  1251. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
  1252. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
  1253. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
  1254. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  1255. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  1256. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  1257. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  1258. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  1259. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
  1260. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  1261. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  1262. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  1263. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  1264. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  1265. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
  1266. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
  1267. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
  1268. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  1269. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  1270. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  1271. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  1272. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
  1273. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  1274. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  1275. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  1276. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  1277. data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
  1278. data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
  1279. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
  1280. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  1281. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  1282. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  1283. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
  1284. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  1285. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  1286. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  1287. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  1288. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  1289. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
  1290. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  1291. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  1292. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  1293. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  1294. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  1295. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  1296. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  1297. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  1298. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  1299. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  1300. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  1301. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  1302. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  1303. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  1304. data/spec/data/run_context/nodes/run_context.rb +5 -5
  1305. data/spec/data/sample_msu1.xml +10 -10
  1306. data/spec/data/sample_msu2.xml +14 -14
  1307. data/spec/data/sample_msu3.xml +16 -16
  1308. data/spec/data/search_queries_to_transform.txt +98 -98
  1309. data/spec/data/shef-config.rb +11 -11
  1310. data/spec/data/ssl/5e707473.0 +18 -18
  1311. data/spec/data/ssl/chef-rspec.cert +27 -27
  1312. data/spec/data/ssl/chef-rspec.key +27 -27
  1313. data/spec/data/ssl/key.pem +15 -15
  1314. data/spec/data/ssl/private_key.pem +27 -27
  1315. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  1316. data/spec/data/standalone_cookbook/chefignore +9 -9
  1317. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  1318. data/spec/data/trusted_certs/example.crt +22 -22
  1319. data/spec/data/trusted_certs/example_no_cn.crt +36 -36
  1320. data/spec/data/trusted_certs/intermediate.pem +27 -27
  1321. data/spec/data/trusted_certs/opscode.pem +57 -57
  1322. data/spec/data/trusted_certs/root.pem +22 -22
  1323. data/spec/functional/application_spec.rb +58 -58
  1324. data/spec/functional/assets/chefinittest +36 -36
  1325. data/spec/functional/assets/testchefsubsys +10 -10
  1326. data/spec/functional/assets/yumrepo/repodata/repomd.xml +55 -55
  1327. data/spec/functional/audit/rspec_formatter_spec.rb +54 -54
  1328. data/spec/functional/audit/runner_spec.rb +121 -121
  1329. data/spec/functional/dsl/reboot_pending_spec.rb +106 -106
  1330. data/spec/functional/dsl/registry_helper_spec.rb +61 -61
  1331. data/spec/functional/event_loggers/windows_eventlog_spec.rb +104 -104
  1332. data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
  1333. data/spec/functional/http/simple_spec.rb +140 -140
  1334. data/spec/functional/knife/configure_spec.rb +33 -33
  1335. data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
  1336. data/spec/functional/knife/exec_spec.rb +55 -55
  1337. data/spec/functional/knife/rehash_spec.rb +39 -39
  1338. data/spec/functional/knife/smoke_test.rb +42 -42
  1339. data/spec/functional/knife/ssh_spec.rb +359 -359
  1340. data/spec/functional/mixin/powershell_out_spec.rb +43 -59
  1341. data/spec/functional/mixin/shell_out_spec.rb +48 -48
  1342. data/spec/functional/mixin/user_context_spec.rb +117 -117
  1343. data/spec/functional/notifications_spec.rb +238 -238
  1344. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
  1345. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
  1346. data/spec/functional/rebooter_spec.rb +117 -117
  1347. data/spec/functional/resource/aix_service_spec.rb +138 -138
  1348. data/spec/functional/resource/aixinit_service_spec.rb +211 -211
  1349. data/spec/functional/resource/base.rb +28 -28
  1350. data/spec/functional/resource/bash_spec.rb +54 -54
  1351. data/spec/functional/resource/batch_spec.rb +34 -34
  1352. data/spec/functional/resource/bff_spec.rb +120 -120
  1353. data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
  1354. data/spec/functional/resource/cookbook_file_spec.rb +81 -81
  1355. data/spec/functional/resource/cron_spec.rb +179 -179
  1356. data/spec/functional/resource/deploy_revision_spec.rb +881 -881
  1357. data/spec/functional/resource/directory_spec.rb +43 -43
  1358. data/spec/functional/resource/dnf_package_spec.rb +686 -686
  1359. data/spec/functional/resource/dpkg_package_spec.rb +339 -339
  1360. data/spec/functional/resource/dsc_resource_spec.rb +90 -90
  1361. data/spec/functional/resource/dsc_script_spec.rb +484 -484
  1362. data/spec/functional/resource/env_spec.rb +192 -192
  1363. data/spec/functional/resource/execute_spec.rb +171 -171
  1364. data/spec/functional/resource/file_spec.rb +167 -167
  1365. data/spec/functional/resource/git_spec.rb +257 -257
  1366. data/spec/functional/resource/group_spec.rb +488 -488
  1367. data/spec/functional/resource/ifconfig_spec.rb +171 -171
  1368. data/spec/functional/resource/link_spec.rb +703 -703
  1369. data/spec/functional/resource/mount_spec.rb +207 -207
  1370. data/spec/functional/resource/msu_package_spec.rb +84 -84
  1371. data/spec/functional/resource/ohai_spec.rb +62 -62
  1372. data/spec/functional/resource/package_spec.rb +386 -386
  1373. data/spec/functional/resource/powershell_script_spec.rb +601 -601
  1374. data/spec/functional/resource/reboot_spec.rb +103 -103
  1375. data/spec/functional/resource/registry_spec.rb +676 -676
  1376. data/spec/functional/resource/remote_directory_spec.rb +220 -220
  1377. data/spec/functional/resource/remote_file_spec.rb +420 -420
  1378. data/spec/functional/resource/rpm_spec.rb +120 -120
  1379. data/spec/functional/resource/template_spec.rb +245 -245
  1380. data/spec/functional/resource/user/dscl_spec.rb +196 -196
  1381. data/spec/functional/resource/user/useradd_spec.rb +709 -709
  1382. data/spec/functional/resource/user/windows_spec.rb +133 -133
  1383. data/spec/functional/resource/windows_package_spec.rb +168 -168
  1384. data/spec/functional/resource/windows_path_spec.rb +64 -64
  1385. data/spec/functional/resource/windows_service_spec.rb +102 -102
  1386. data/spec/functional/resource/windows_task_spec.rb +482 -482
  1387. data/spec/functional/root_alias_spec.rb +78 -78
  1388. data/spec/functional/run_lock_spec.rb +473 -473
  1389. data/spec/functional/shell_spec.rb +146 -146
  1390. data/spec/functional/tiny_server_spec.rb +79 -79
  1391. data/spec/functional/util/path_helper_spec.rb +37 -37
  1392. data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
  1393. data/spec/functional/version_spec.rb +35 -35
  1394. data/spec/functional/win32/crypto_spec.rb +54 -54
  1395. data/spec/functional/win32/registry_spec.rb +624 -624
  1396. data/spec/functional/win32/security_spec.rb +100 -100
  1397. data/spec/functional/win32/service_manager_spec.rb +220 -220
  1398. data/spec/functional/win32/sid_spec.rb +55 -55
  1399. data/spec/functional/win32/version_info_spec.rb +50 -50
  1400. data/spec/functional/win32/versions_spec.rb +117 -117
  1401. data/spec/integration/client/client_spec.rb +627 -627
  1402. data/spec/integration/client/exit_code_spec.rb +141 -141
  1403. data/spec/integration/client/ipv6_spec.rb +134 -134
  1404. data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
  1405. data/spec/integration/knife/chef_repo_path_spec.rb +959 -959
  1406. data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
  1407. data/spec/integration/knife/chefignore_spec.rb +300 -300
  1408. data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
  1409. data/spec/integration/knife/client_create_spec.rb +69 -69
  1410. data/spec/integration/knife/client_delete_spec.rb +63 -63
  1411. data/spec/integration/knife/client_key_create_spec.rb +65 -65
  1412. data/spec/integration/knife/client_key_delete_spec.rb +42 -42
  1413. data/spec/integration/knife/client_key_list_spec.rb +60 -60
  1414. data/spec/integration/knife/client_key_show_spec.rb +44 -44
  1415. data/spec/integration/knife/client_list_spec.rb +48 -48
  1416. data/spec/integration/knife/client_show_spec.rb +36 -36
  1417. data/spec/integration/knife/common_options_spec.rb +173 -173
  1418. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
  1419. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
  1420. data/spec/integration/knife/cookbook_download_spec.rb +71 -71
  1421. data/spec/integration/knife/cookbook_list_spec.rb +54 -54
  1422. data/spec/integration/knife/cookbook_show_spec.rb +148 -148
  1423. data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
  1424. data/spec/integration/knife/data_bag_create_spec.rb +55 -55
  1425. data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
  1426. data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
  1427. data/spec/integration/knife/data_bag_list_spec.rb +43 -43
  1428. data/spec/integration/knife/data_bag_show_spec.rb +53 -53
  1429. data/spec/integration/knife/delete_spec.rb +1017 -1017
  1430. data/spec/integration/knife/deps_spec.rb +702 -702
  1431. data/spec/integration/knife/diff_spec.rb +602 -602
  1432. data/spec/integration/knife/download_spec.rb +1333 -1333
  1433. data/spec/integration/knife/environment_compare_spec.rb +74 -74
  1434. data/spec/integration/knife/environment_create_spec.rb +40 -40
  1435. data/spec/integration/knife/environment_delete_spec.rb +36 -36
  1436. data/spec/integration/knife/environment_from_file_spec.rb +115 -115
  1437. data/spec/integration/knife/environment_list_spec.rb +41 -41
  1438. data/spec/integration/knife/environment_show_spec.rb +76 -76
  1439. data/spec/integration/knife/list_spec.rb +1059 -1059
  1440. data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
  1441. data/spec/integration/knife/node_create_spec.rb +46 -46
  1442. data/spec/integration/knife/node_delete_spec.rb +47 -47
  1443. data/spec/integration/knife/node_environment_set_spec.rb +45 -45
  1444. data/spec/integration/knife/node_from_file_spec.rb +58 -58
  1445. data/spec/integration/knife/node_list_spec.rb +44 -44
  1446. data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
  1447. data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
  1448. data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
  1449. data/spec/integration/knife/node_show_spec.rb +35 -35
  1450. data/spec/integration/knife/raw_spec.rb +244 -244
  1451. data/spec/integration/knife/redirection_spec.rb +52 -52
  1452. data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
  1453. data/spec/integration/knife/role_create_spec.rb +40 -40
  1454. data/spec/integration/knife/role_delete_spec.rb +47 -47
  1455. data/spec/integration/knife/role_from_file_spec.rb +95 -95
  1456. data/spec/integration/knife/role_list_spec.rb +44 -44
  1457. data/spec/integration/knife/role_show_spec.rb +50 -50
  1458. data/spec/integration/knife/search_node_spec.rb +39 -39
  1459. data/spec/integration/knife/serve_spec.rb +93 -93
  1460. data/spec/integration/knife/show_spec.rb +167 -167
  1461. data/spec/integration/knife/upload_spec.rb +1540 -1540
  1462. data/spec/integration/recipes/accumulator_spec.rb +232 -232
  1463. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
  1464. data/spec/integration/recipes/lwrp_spec.rb +53 -53
  1465. data/spec/integration/recipes/noop_resource_spec.rb +24 -24
  1466. data/spec/integration/recipes/notifies_spec.rb +394 -394
  1467. data/spec/integration/recipes/notifying_block_spec.rb +111 -111
  1468. data/spec/integration/recipes/provider_choice.rb +37 -37
  1469. data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
  1470. data/spec/integration/recipes/remote_directory.rb +74 -74
  1471. data/spec/integration/recipes/resource_action_spec.rb +599 -599
  1472. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
  1473. data/spec/integration/recipes/resource_load_spec.rb +192 -192
  1474. data/spec/integration/solo/solo_spec.rb +217 -217
  1475. data/spec/rcov.opts +2 -2
  1476. data/spec/scripts/ssl-serve.rb +47 -47
  1477. data/spec/spec_helper.rb +319 -301
  1478. data/spec/stress/win32/file_spec.rb +37 -37
  1479. data/spec/stress/win32/memory_spec.rb +22 -22
  1480. data/spec/stress/win32/security_spec.rb +69 -69
  1481. data/spec/support/chef_helpers.rb +115 -115
  1482. data/spec/support/key_helpers.rb +104 -104
  1483. data/spec/support/lib/chef/provider/easy.rb +35 -35
  1484. data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
  1485. data/spec/support/lib/chef/provider/snakeoil.rb +42 -42
  1486. data/spec/support/lib/chef/resource/cat.rb +39 -39
  1487. data/spec/support/lib/chef/resource/one_two_three_four.rb +38 -38
  1488. data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
  1489. data/spec/support/lib/chef/resource/with_state.rb +30 -30
  1490. data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
  1491. data/spec/support/lib/chef/resource/zen_master.rb +42 -42
  1492. data/spec/support/lib/library_load_order.rb +20 -20
  1493. data/spec/support/matchers/leak.rb +98 -98
  1494. data/spec/support/mock/constant.rb +52 -52
  1495. data/spec/support/mock/platform.rb +25 -25
  1496. data/spec/support/platform_helpers.rb +245 -245
  1497. data/spec/support/platforms/prof/gc.rb +51 -51
  1498. data/spec/support/platforms/prof/win32.rb +45 -45
  1499. data/spec/support/platforms/win32/spec_service.rb +59 -59
  1500. data/spec/support/shared/context/client.rb +302 -302
  1501. data/spec/support/shared/context/config.rb +21 -21
  1502. data/spec/support/shared/context/win32.rb +34 -34
  1503. data/spec/support/shared/examples/client.rb +53 -53
  1504. data/spec/support/shared/functional/diff_disabled.rb +10 -10
  1505. data/spec/support/shared/functional/directory_resource.rb +176 -176
  1506. data/spec/support/shared/functional/execute_resource.rb +150 -150
  1507. data/spec/support/shared/functional/file_resource.rb +1050 -1050
  1508. data/spec/support/shared/functional/http.rb +248 -248
  1509. data/spec/support/shared/functional/knife.rb +37 -37
  1510. data/spec/support/shared/functional/securable_resource.rb +547 -547
  1511. data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
  1512. data/spec/support/shared/functional/win32_service.rb +57 -57
  1513. data/spec/support/shared/functional/windows_script.rb +272 -272
  1514. data/spec/support/shared/integration/app_server_support.rb +40 -40
  1515. data/spec/support/shared/integration/integration_helper.rb +154 -154
  1516. data/spec/support/shared/integration/knife_support.rb +185 -185
  1517. data/spec/support/shared/matchers/exit_with_code.rb +32 -32
  1518. data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
  1519. data/spec/support/shared/shared_examples.rb +14 -14
  1520. data/spec/support/shared/unit/api_error_inspector.rb +190 -190
  1521. data/spec/support/shared/unit/api_versioning.rb +77 -77
  1522. data/spec/support/shared/unit/application_dot_d.rb +75 -75
  1523. data/spec/support/shared/unit/execute_resource.rb +168 -168
  1524. data/spec/support/shared/unit/file_system_support.rb +69 -69
  1525. data/spec/support/shared/unit/knife_shared.rb +39 -39
  1526. data/spec/support/shared/unit/mock_shellout.rb +49 -49
  1527. data/spec/support/shared/unit/platform_introspector.rb +189 -189
  1528. data/spec/support/shared/unit/provider/file.rb +853 -853
  1529. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
  1530. data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
  1531. data/spec/support/shared/unit/script_resource.rb +90 -90
  1532. data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
  1533. data/spec/support/shared/unit/windows_script_resource.rb +80 -80
  1534. data/spec/tiny_server.rb +192 -192
  1535. data/spec/unit/api_client/registration_spec.rb +278 -278
  1536. data/spec/unit/api_client_spec.rb +341 -341
  1537. data/spec/unit/api_client_v1_spec.rb +455 -455
  1538. data/spec/unit/application/apply_spec.rb +113 -113
  1539. data/spec/unit/application/client_spec.rb +532 -532
  1540. data/spec/unit/application/exit_code_spec.rb +144 -144
  1541. data/spec/unit/application/knife_spec.rb +229 -229
  1542. data/spec/unit/application/solo_spec.rb +232 -232
  1543. data/spec/unit/application_spec.rb +421 -421
  1544. data/spec/unit/audit/audit_event_proxy_spec.rb +318 -318
  1545. data/spec/unit/audit/audit_reporter_spec.rb +439 -439
  1546. data/spec/unit/audit/control_group_data_spec.rb +482 -482
  1547. data/spec/unit/audit/logger_spec.rb +42 -42
  1548. data/spec/unit/audit/rspec_formatter_spec.rb +29 -29
  1549. data/spec/unit/audit/runner_spec.rb +144 -144
  1550. data/spec/unit/chef_class_spec.rb +110 -110
  1551. data/spec/unit/chef_fs/config_spec.rb +235 -235
  1552. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
  1553. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
  1554. data/spec/unit/chef_fs/diff_spec.rb +328 -328
  1555. data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
  1556. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
  1557. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
  1558. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +126 -126
  1559. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
  1560. data/spec/unit/chef_fs/file_system_spec.rb +148 -148
  1561. data/spec/unit/chef_fs/parallelizer.rb +477 -477
  1562. data/spec/unit/chef_fs/path_util_spec.rb +108 -108
  1563. data/spec/unit/chef_spec.rb +25 -25
  1564. data/spec/unit/client_spec.rb +596 -596
  1565. data/spec/unit/config_fetcher_spec.rb +125 -125
  1566. data/spec/unit/config_spec.rb +31 -31
  1567. data/spec/unit/cookbook/chefignore_spec.rb +49 -49
  1568. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +210 -210
  1569. data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
  1570. data/spec/unit/cookbook/gem_installer_spec.rb +85 -85
  1571. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
  1572. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
  1573. data/spec/unit/cookbook/metadata_spec.rb +892 -892
  1574. data/spec/unit/cookbook/synchronizer_spec.rb +557 -557
  1575. data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
  1576. data/spec/unit/cookbook_loader_spec.rb +297 -297
  1577. data/spec/unit/cookbook_manifest_spec.rb +226 -226
  1578. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
  1579. data/spec/unit/cookbook_spec.rb +62 -62
  1580. data/spec/unit/cookbook_uploader_spec.rb +199 -199
  1581. data/spec/unit/cookbook_version_file_specificity_spec.rb +603 -603
  1582. data/spec/unit/cookbook_version_spec.rb +250 -250
  1583. data/spec/unit/daemon_spec.rb +183 -174
  1584. data/spec/unit/data_bag_item_spec.rb +392 -392
  1585. data/spec/unit/data_bag_spec.rb +260 -260
  1586. data/spec/unit/data_collector/messages/helpers_spec.rb +193 -193
  1587. data/spec/unit/data_collector/messages_spec.rb +329 -329
  1588. data/spec/unit/data_collector/resource_report_spec.rb +145 -145
  1589. data/spec/unit/data_collector_spec.rb +741 -741
  1590. data/spec/unit/decorator/lazy_array_spec.rb +58 -58
  1591. data/spec/unit/decorator/lazy_spec.rb +39 -39
  1592. data/spec/unit/decorator_spec.rb +142 -142
  1593. data/spec/unit/deprecated_spec.rb +59 -59
  1594. data/spec/unit/deprecation_spec.rb +129 -129
  1595. data/spec/unit/digester_spec.rb +49 -49
  1596. data/spec/unit/dsl/audit_spec.rb +43 -43
  1597. data/spec/unit/dsl/data_query_spec.rb +107 -107
  1598. data/spec/unit/dsl/declare_resource_spec.rb +365 -365
  1599. data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
  1600. data/spec/unit/dsl/reboot_pending_spec.rb +100 -100
  1601. data/spec/unit/dsl/recipe_spec.rb +93 -93
  1602. data/spec/unit/dsl/registry_helper_spec.rb +52 -52
  1603. data/spec/unit/dsl/resources_spec.rb +85 -85
  1604. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
  1605. data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
  1606. data/spec/unit/environment_spec.rb +470 -470
  1607. data/spec/unit/event_dispatch/dispatcher_spec.rb +122 -122
  1608. data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
  1609. data/spec/unit/exceptions_spec.rb +132 -132
  1610. data/spec/unit/file_access_control_spec.rb +308 -308
  1611. data/spec/unit/file_cache_spec.rb +114 -114
  1612. data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
  1613. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +101 -101
  1614. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
  1615. data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
  1616. data/spec/unit/formatters/base_spec.rb +71 -71
  1617. data/spec/unit/formatters/doc_spec.rb +92 -92
  1618. data/spec/unit/formatters/error_description_spec.rb +141 -141
  1619. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
  1620. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
  1621. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
  1622. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
  1623. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
  1624. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
  1625. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
  1626. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
  1627. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
  1628. data/spec/unit/guard_interpreter_spec.rb +41 -41
  1629. data/spec/unit/handler/json_file_spec.rb +63 -63
  1630. data/spec/unit/handler_spec.rb +302 -302
  1631. data/spec/unit/http/api_versions_spec.rb +82 -82
  1632. data/spec/unit/http/authenticator_spec.rb +100 -100
  1633. data/spec/unit/http/basic_client_spec.rb +72 -72
  1634. data/spec/unit/http/http_request_spec.rb +91 -91
  1635. data/spec/unit/http/json_input_spec.rb +128 -128
  1636. data/spec/unit/http/simple_spec.rb +32 -32
  1637. data/spec/unit/http/socketless_chef_zero_client_spec.rb +174 -174
  1638. data/spec/unit/http/ssl_policies_spec.rb +169 -169
  1639. data/spec/unit/http/validate_content_length_spec.rb +207 -207
  1640. data/spec/unit/http_spec.rb +229 -229
  1641. data/spec/unit/json_compat_spec.rb +73 -73
  1642. data/spec/unit/key_spec.rb +631 -631
  1643. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
  1644. data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
  1645. data/spec/unit/knife/bootstrap_spec.rb +867 -867
  1646. data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
  1647. data/spec/unit/knife/client_create_spec.rb +186 -186
  1648. data/spec/unit/knife/client_delete_spec.rb +99 -99
  1649. data/spec/unit/knife/client_edit_spec.rb +53 -53
  1650. data/spec/unit/knife/client_list_spec.rb +34 -34
  1651. data/spec/unit/knife/client_reregister_spec.rb +62 -62
  1652. data/spec/unit/knife/client_show_spec.rb +52 -52
  1653. data/spec/unit/knife/configure_client_spec.rb +81 -81
  1654. data/spec/unit/knife/configure_spec.rb +191 -191
  1655. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
  1656. data/spec/unit/knife/cookbook_create_spec.rb +42 -42
  1657. data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
  1658. data/spec/unit/knife/cookbook_download_spec.rb +255 -255
  1659. data/spec/unit/knife/cookbook_list_spec.rb +88 -88
  1660. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
  1661. data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
  1662. data/spec/unit/knife/cookbook_show_spec.rb +254 -254
  1663. data/spec/unit/knife/cookbook_site_download_spec.rb +150 -150
  1664. data/spec/unit/knife/cookbook_site_install_spec.rb +200 -200
  1665. data/spec/unit/knife/cookbook_site_share_spec.rb +209 -209
  1666. data/spec/unit/knife/cookbook_site_unshare_spec.rb +77 -77
  1667. data/spec/unit/knife/cookbook_test_spec.rb +84 -84
  1668. data/spec/unit/knife/cookbook_upload_spec.rb +331 -331
  1669. data/spec/unit/knife/core/bootstrap_context_spec.rb +324 -324
  1670. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
  1671. data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
  1672. data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
  1673. data/spec/unit/knife/core/node_editor_spec.rb +211 -211
  1674. data/spec/unit/knife/core/object_loader_spec.rb +81 -81
  1675. data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
  1676. data/spec/unit/knife/core/ui_spec.rb +639 -639
  1677. data/spec/unit/knife/data_bag_create_spec.rb +175 -175
  1678. data/spec/unit/knife/data_bag_edit_spec.rb +127 -127
  1679. data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
  1680. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
  1681. data/spec/unit/knife/data_bag_show_spec.rb +138 -138
  1682. data/spec/unit/knife/environment_compare_spec.rb +112 -112
  1683. data/spec/unit/knife/environment_create_spec.rb +91 -91
  1684. data/spec/unit/knife/environment_delete_spec.rb +71 -71
  1685. data/spec/unit/knife/environment_edit_spec.rb +79 -79
  1686. data/spec/unit/knife/environment_from_file_spec.rb +90 -90
  1687. data/spec/unit/knife/environment_list_spec.rb +54 -54
  1688. data/spec/unit/knife/environment_show_spec.rb +52 -52
  1689. data/spec/unit/knife/index_rebuild_spec.rb +125 -125
  1690. data/spec/unit/knife/key_create_spec.rb +223 -223
  1691. data/spec/unit/knife/key_delete_spec.rb +133 -133
  1692. data/spec/unit/knife/key_edit_spec.rb +264 -264
  1693. data/spec/unit/knife/key_helper.rb +74 -74
  1694. data/spec/unit/knife/key_list_spec.rb +216 -216
  1695. data/spec/unit/knife/key_show_spec.rb +126 -126
  1696. data/spec/unit/knife/knife_help.rb +92 -92
  1697. data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
  1698. data/spec/unit/knife/node_delete_spec.rb +77 -77
  1699. data/spec/unit/knife/node_edit_spec.rb +114 -114
  1700. data/spec/unit/knife/node_environment_set_spec.rb +56 -56
  1701. data/spec/unit/knife/node_from_file_spec.rb +59 -59
  1702. data/spec/unit/knife/node_list_spec.rb +62 -62
  1703. data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
  1704. data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
  1705. data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
  1706. data/spec/unit/knife/node_show_spec.rb +65 -65
  1707. data/spec/unit/knife/osc_user_create_spec.rb +93 -93
  1708. data/spec/unit/knife/osc_user_delete_spec.rb +44 -44
  1709. data/spec/unit/knife/osc_user_edit_spec.rb +52 -52
  1710. data/spec/unit/knife/osc_user_list_spec.rb +37 -37
  1711. data/spec/unit/knife/osc_user_reregister_spec.rb +58 -58
  1712. data/spec/unit/knife/osc_user_show_spec.rb +46 -46
  1713. data/spec/unit/knife/raw_spec.rb +43 -43
  1714. data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
  1715. data/spec/unit/knife/role_create_spec.rb +80 -80
  1716. data/spec/unit/knife/role_delete_spec.rb +67 -67
  1717. data/spec/unit/knife/role_edit_spec.rb +77 -77
  1718. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
  1719. data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
  1720. data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
  1721. data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
  1722. data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
  1723. data/spec/unit/knife/role_from_file_spec.rb +69 -69
  1724. data/spec/unit/knife/role_list_spec.rb +54 -54
  1725. data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
  1726. data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
  1727. data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
  1728. data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
  1729. data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
  1730. data/spec/unit/knife/role_show_spec.rb +59 -59
  1731. data/spec/unit/knife/ssh_spec.rb +478 -478
  1732. data/spec/unit/knife/ssl_check_spec.rb +256 -256
  1733. data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
  1734. data/spec/unit/knife/status_spec.rb +111 -111
  1735. data/spec/unit/knife/tag_create_spec.rb +23 -23
  1736. data/spec/unit/knife/tag_delete_spec.rb +25 -25
  1737. data/spec/unit/knife/tag_list_spec.rb +23 -23
  1738. data/spec/unit/knife/user_create_spec.rb +214 -214
  1739. data/spec/unit/knife/user_delete_spec.rb +65 -65
  1740. data/spec/unit/knife/user_edit_spec.rb +66 -66
  1741. data/spec/unit/knife/user_list_spec.rb +36 -36
  1742. data/spec/unit/knife/user_reregister_spec.rb +74 -74
  1743. data/spec/unit/knife/user_show_spec.rb +65 -65
  1744. data/spec/unit/knife_spec.rb +585 -585
  1745. data/spec/unit/log/syslog_spec.rb +53 -53
  1746. data/spec/unit/log/winevt_spec.rb +55 -55
  1747. data/spec/unit/log_spec.rb +24 -24
  1748. data/spec/unit/lwrp_spec.rb +690 -690
  1749. data/spec/unit/mash_spec.rb +51 -51
  1750. data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
  1751. data/spec/unit/mixin/checksum_spec.rb +54 -54
  1752. data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
  1753. data/spec/unit/mixin/deep_merge_spec.rb +342 -342
  1754. data/spec/unit/mixin/deprecation_spec.rb +57 -57
  1755. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
  1756. data/spec/unit/mixin/homebrew_user_spec.rb +100 -100
  1757. data/spec/unit/mixin/lazy_module_include.rb +71 -71
  1758. data/spec/unit/mixin/params_validate_spec.rb +410 -410
  1759. data/spec/unit/mixin/path_sanity_spec.rb +92 -92
  1760. data/spec/unit/mixin/powershell_out_spec.rb +94 -94
  1761. data/spec/unit/mixin/powershell_type_coercions_spec.rb +83 -84
  1762. data/spec/unit/mixin/properties_spec.rb +97 -97
  1763. data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
  1764. data/spec/unit/mixin/securable_spec.rb +314 -314
  1765. data/spec/unit/mixin/shell_out_spec.rb +236 -236
  1766. data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
  1767. data/spec/unit/mixin/template_spec.rb +276 -276
  1768. data/spec/unit/mixin/unformatter_spec.rb +61 -61
  1769. data/spec/unit/mixin/uris_spec.rb +57 -57
  1770. data/spec/unit/mixin/user_context_spec.rb +108 -108
  1771. data/spec/unit/mixin/versioned_api_spec.rb +128 -128
  1772. data/spec/unit/mixin/which.rb +160 -160
  1773. data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
  1774. data/spec/unit/mixin/xml_escape_spec.rb +54 -54
  1775. data/spec/unit/monkey_patches/uri_spec.rb +34 -34
  1776. data/spec/unit/monologger_spec.rb +45 -45
  1777. data/spec/unit/node/attribute_spec.rb +1276 -1307
  1778. data/spec/unit/node/immutable_collections_spec.rb +317 -331
  1779. data/spec/unit/node/vivid_mash_spec.rb +353 -370
  1780. data/spec/unit/node_map_spec.rb +207 -182
  1781. data/spec/unit/node_spec.rb +1826 -1826
  1782. data/spec/unit/org_spec.rb +196 -196
  1783. data/spec/unit/platform/query_helpers_spec.rb +220 -220
  1784. data/spec/unit/policy_builder/dynamic_spec.rb +273 -273
  1785. data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
  1786. data/spec/unit/policy_builder/policyfile_spec.rb +795 -795
  1787. data/spec/unit/policy_builder_spec.rb +26 -26
  1788. data/spec/unit/property/state_spec.rb +508 -508
  1789. data/spec/unit/property/validation_spec.rb +702 -702
  1790. data/spec/unit/property_spec.rb +1207 -1207
  1791. data/spec/unit/provider/apt_preference_spec.rb +87 -87
  1792. data/spec/unit/provider/apt_repository_spec.rb +189 -189
  1793. data/spec/unit/provider/apt_update_spec.rb +114 -114
  1794. data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
  1795. data/spec/unit/provider/cookbook_file_spec.rb +58 -58
  1796. data/spec/unit/provider/cron/unix_spec.rb +139 -139
  1797. data/spec/unit/provider/cron_spec.rb +986 -986
  1798. data/spec/unit/provider/deploy/revision_spec.rb +110 -110
  1799. data/spec/unit/provider/deploy/timestamped_spec.rb +40 -40
  1800. data/spec/unit/provider/deploy_spec.rb +641 -641
  1801. data/spec/unit/provider/directory_spec.rb +300 -300
  1802. data/spec/unit/provider/dsc_resource_spec.rb +343 -343
  1803. data/spec/unit/provider/dsc_script_spec.rb +173 -173
  1804. data/spec/unit/provider/env/windows_spec.rb +103 -103
  1805. data/spec/unit/provider/env_spec.rb +310 -310
  1806. data/spec/unit/provider/erl_call_spec.rb +77 -77
  1807. data/spec/unit/provider/execute_spec.rb +250 -250
  1808. data/spec/unit/provider/file/content_spec.rb +114 -114
  1809. data/spec/unit/provider/file_spec.rb +56 -56
  1810. data/spec/unit/provider/git_spec.rb +782 -782
  1811. data/spec/unit/provider/group/dscl_spec.rb +340 -340
  1812. data/spec/unit/provider/group/gpasswd_spec.rb +116 -116
  1813. data/spec/unit/provider/group/groupadd_spec.rb +194 -194
  1814. data/spec/unit/provider/group/groupmod_spec.rb +133 -133
  1815. data/spec/unit/provider/group/pw_spec.rb +138 -138
  1816. data/spec/unit/provider/group/suse_spec.rb +90 -90
  1817. data/spec/unit/provider/group/usermod_spec.rb +115 -115
  1818. data/spec/unit/provider/group/windows_spec.rb +109 -109
  1819. data/spec/unit/provider/group_spec.rb +286 -286
  1820. data/spec/unit/provider/http_request_spec.rb +159 -159
  1821. data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
  1822. data/spec/unit/provider/ifconfig/debian_spec.rb +332 -332
  1823. data/spec/unit/provider/ifconfig/redhat_spec.rb +81 -81
  1824. data/spec/unit/provider/ifconfig_spec.rb +206 -206
  1825. data/spec/unit/provider/launchd_spec.rb +268 -268
  1826. data/spec/unit/provider/link_spec.rb +407 -407
  1827. data/spec/unit/provider/log_spec.rb +89 -89
  1828. data/spec/unit/provider/mdadm_spec.rb +140 -140
  1829. data/spec/unit/provider/mount/aix_spec.rb +269 -269
  1830. data/spec/unit/provider/mount/mount_spec.rb +474 -474
  1831. data/spec/unit/provider/mount/solaris_spec.rb +822 -822
  1832. data/spec/unit/provider/mount/windows_spec.rb +149 -149
  1833. data/spec/unit/provider/mount_spec.rb +191 -191
  1834. data/spec/unit/provider/ohai_spec.rb +84 -84
  1835. data/spec/unit/provider/osx_profile_spec.rb +255 -255
  1836. data/spec/unit/provider/package/aix_spec.rb +185 -185
  1837. data/spec/unit/provider/package/apt_spec.rb +515 -515
  1838. data/spec/unit/provider/package/cab_spec.rb +272 -272
  1839. data/spec/unit/provider/package/chocolatey_spec.rb +491 -491
  1840. data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
  1841. data/spec/unit/provider/package/dpkg_spec.rb +287 -287
  1842. data/spec/unit/provider/package/freebsd/pkg_spec.rb +274 -274
  1843. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +148 -148
  1844. data/spec/unit/provider/package/freebsd/port_spec.rb +163 -163
  1845. data/spec/unit/provider/package/homebrew_spec.rb +292 -292
  1846. data/spec/unit/provider/package/ips_spec.rb +233 -233
  1847. data/spec/unit/provider/package/macports_spec.rb +203 -203
  1848. data/spec/unit/provider/package/msu_spec.rb +283 -283
  1849. data/spec/unit/provider/package/openbsd_spec.rb +132 -132
  1850. data/spec/unit/provider/package/pacman_spec.rb +194 -194
  1851. data/spec/unit/provider/package/paludis_spec.rb +134 -134
  1852. data/spec/unit/provider/package/portage_spec.rb +315 -315
  1853. data/spec/unit/provider/package/powershell_spec.rb +337 -337
  1854. data/spec/unit/provider/package/rpm_spec.rb +429 -429
  1855. data/spec/unit/provider/package/rubygems_spec.rb +921 -921
  1856. data/spec/unit/provider/package/smartos_spec.rb +110 -110
  1857. data/spec/unit/provider/package/solaris_spec.rb +167 -167
  1858. data/spec/unit/provider/package/windows/exe_spec.rb +201 -201
  1859. data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
  1860. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
  1861. data/spec/unit/provider/package/windows_spec.rb +443 -443
  1862. data/spec/unit/provider/package/yum/yum_cache_spec.rb +27 -27
  1863. data/spec/unit/provider/package/yum_spec.rb +2294 -2294
  1864. data/spec/unit/provider/package/zypper_spec.rb +356 -356
  1865. data/spec/unit/provider/package_spec.rb +949 -949
  1866. data/spec/unit/provider/powershell_script_spec.rb +116 -116
  1867. data/spec/unit/provider/registry_key_spec.rb +407 -407
  1868. data/spec/unit/provider/remote_directory_spec.rb +236 -236
  1869. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
  1870. data/spec/unit/provider/remote_file/content_spec.rb +253 -253
  1871. data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
  1872. data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
  1873. data/spec/unit/provider/remote_file/http_spec.rb +324 -326
  1874. data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
  1875. data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
  1876. data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
  1877. data/spec/unit/provider/remote_file_spec.rb +61 -61
  1878. data/spec/unit/provider/route_spec.rb +270 -270
  1879. data/spec/unit/provider/ruby_block_spec.rb +45 -45
  1880. data/spec/unit/provider/script_spec.rb +157 -157
  1881. data/spec/unit/provider/service/aix_service_spec.rb +195 -195
  1882. data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
  1883. data/spec/unit/provider/service/arch_service_spec.rb +324 -324
  1884. data/spec/unit/provider/service/debian_service_spec.rb +369 -369
  1885. data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
  1886. data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
  1887. data/spec/unit/provider/service/init_service_spec.rb +235 -235
  1888. data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
  1889. data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
  1890. data/spec/unit/provider/service/macosx_spec.rb +338 -338
  1891. data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
  1892. data/spec/unit/provider/service/redhat_spec.rb +250 -250
  1893. data/spec/unit/provider/service/simple_service_spec.rb +169 -169
  1894. data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
  1895. data/spec/unit/provider/service/systemd_service_spec.rb +372 -372
  1896. data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
  1897. data/spec/unit/provider/service/windows_spec.rb +463 -463
  1898. data/spec/unit/provider/service_spec.rb +168 -168
  1899. data/spec/unit/provider/subversion_spec.rb +361 -361
  1900. data/spec/unit/provider/systemd_unit_spec.rb +886 -886
  1901. data/spec/unit/provider/template/content_spec.rb +169 -169
  1902. data/spec/unit/provider/template_spec.rb +89 -89
  1903. data/spec/unit/provider/user/aix_spec.rb +97 -97
  1904. data/spec/unit/provider/user/dscl_spec.rb +928 -928
  1905. data/spec/unit/provider/user/linux_spec.rb +74 -74
  1906. data/spec/unit/provider/user/pw_spec.rb +235 -235
  1907. data/spec/unit/provider/user/solaris_spec.rb +178 -178
  1908. data/spec/unit/provider/user/windows_spec.rb +185 -185
  1909. data/spec/unit/provider/user_spec.rb +478 -478
  1910. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
  1911. data/spec/unit/provider/windows_path_spec.rb +65 -65
  1912. data/spec/unit/provider/windows_task_spec.rb +717 -717
  1913. data/spec/unit/provider/yum_repository_spec.rb +35 -35
  1914. data/spec/unit/provider/zypper_repository_spec.rb +124 -124
  1915. data/spec/unit/provider_resolver_spec.rb +938 -938
  1916. data/spec/unit/provider_spec.rb +205 -205
  1917. data/spec/unit/pure_application_spec.rb +32 -32
  1918. data/spec/unit/recipe_spec.rb +589 -589
  1919. data/spec/unit/resource/apt_package_spec.rb +38 -38
  1920. data/spec/unit/resource/apt_preference_spec.rb +49 -49
  1921. data/spec/unit/resource/apt_repository_spec.rb +58 -58
  1922. data/spec/unit/resource/apt_update_spec.rb +58 -58
  1923. data/spec/unit/resource/bash_spec.rb +38 -38
  1924. data/spec/unit/resource/batch_spec.rb +49 -49
  1925. data/spec/unit/resource/breakpoint_spec.rb +64 -64
  1926. data/spec/unit/resource/cab_package_spec.rb +56 -56
  1927. data/spec/unit/resource/chef_gem_spec.rb +111 -111
  1928. data/spec/unit/resource/chocolatey_package_spec.rb +79 -79
  1929. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
  1930. data/spec/unit/resource/conditional_spec.rb +254 -254
  1931. data/spec/unit/resource/cookbook_file_spec.rb +82 -82
  1932. data/spec/unit/resource/cron_spec.rb +183 -183
  1933. data/spec/unit/resource/csh_spec.rb +38 -38
  1934. data/spec/unit/resource/deploy_revision_spec.rb +42 -42
  1935. data/spec/unit/resource/deploy_spec.rb +283 -283
  1936. data/spec/unit/resource/directory_spec.rb +79 -79
  1937. data/spec/unit/resource/dnf_package_spec.rb +99 -99
  1938. data/spec/unit/resource/dpkg_package_spec.rb +32 -32
  1939. data/spec/unit/resource/dsc_resource_spec.rb +102 -102
  1940. data/spec/unit/resource/dsc_script_spec.rb +134 -134
  1941. data/spec/unit/resource/env_spec.rb +85 -85
  1942. data/spec/unit/resource/erl_call_spec.rb +81 -81
  1943. data/spec/unit/resource/execute_spec.rb +269 -269
  1944. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
  1945. data/spec/unit/resource/file/verification_spec.rb +147 -147
  1946. data/spec/unit/resource/file_spec.rb +127 -127
  1947. data/spec/unit/resource/freebsd_package_spec.rb +87 -87
  1948. data/spec/unit/resource/gem_package_spec.rb +42 -42
  1949. data/spec/unit/resource/git_spec.rb +48 -48
  1950. data/spec/unit/resource/group_spec.rb +152 -152
  1951. data/spec/unit/resource/homebrew_package_spec.rb +50 -50
  1952. data/spec/unit/resource/http_request_spec.rb +56 -56
  1953. data/spec/unit/resource/ifconfig_spec.rb +109 -109
  1954. data/spec/unit/resource/ips_package_spec.rb +38 -38
  1955. data/spec/unit/resource/ksh_spec.rb +38 -38
  1956. data/spec/unit/resource/launchd_spec.rb +39 -39
  1957. data/spec/unit/resource/link_spec.rb +134 -134
  1958. data/spec/unit/resource/log_spec.rb +69 -69
  1959. data/spec/unit/resource/macports_package_spec.rb +32 -32
  1960. data/spec/unit/resource/mdadm_spec.rb +105 -105
  1961. data/spec/unit/resource/mount_spec.rb +213 -213
  1962. data/spec/unit/resource/msu_package_spec.rb +55 -55
  1963. data/spec/unit/resource/ohai_spec.rb +59 -59
  1964. data/spec/unit/resource/openbsd_package_spec.rb +48 -48
  1965. data/spec/unit/resource/osx_profile_spec.rb +62 -62
  1966. data/spec/unit/resource/package_spec.rb +99 -99
  1967. data/spec/unit/resource/pacman_package_spec.rb +32 -32
  1968. data/spec/unit/resource/perl_spec.rb +37 -37
  1969. data/spec/unit/resource/portage_package_spec.rb +36 -36
  1970. data/spec/unit/resource/powershell_package_spec.rb +68 -68
  1971. data/spec/unit/resource/powershell_script_spec.rb +136 -136
  1972. data/spec/unit/resource/python_spec.rb +37 -37
  1973. data/spec/unit/resource/reboot_spec.rb +50 -50
  1974. data/spec/unit/resource/registry_key_spec.rb +201 -201
  1975. data/spec/unit/resource/remote_directory_spec.rb +95 -95
  1976. data/spec/unit/resource/remote_file_spec.rb +205 -205
  1977. data/spec/unit/resource/resource_notification_spec.rb +169 -169
  1978. data/spec/unit/resource/route_spec.rb +105 -105
  1979. data/spec/unit/resource/rpm_package_spec.rb +44 -44
  1980. data/spec/unit/resource/ruby_block_spec.rb +59 -59
  1981. data/spec/unit/resource/ruby_spec.rb +36 -36
  1982. data/spec/unit/resource/scm_spec.rb +190 -190
  1983. data/spec/unit/resource/script_spec.rb +44 -44
  1984. data/spec/unit/resource/service_spec.rb +196 -196
  1985. data/spec/unit/resource/smartos_package_spec.rb +38 -38
  1986. data/spec/unit/resource/solaris_package_spec.rb +40 -40
  1987. data/spec/unit/resource/subversion_spec.rb +73 -73
  1988. data/spec/unit/resource/systemd_unit_spec.rb +129 -129
  1989. data/spec/unit/resource/template_spec.rb +205 -205
  1990. data/spec/unit/resource/timestamped_deploy_spec.rb +32 -32
  1991. data/spec/unit/resource/user_spec.rb +127 -127
  1992. data/spec/unit/resource/windows_package_spec.rb +95 -95
  1993. data/spec/unit/resource/windows_path_spec.rb +41 -41
  1994. data/spec/unit/resource/windows_service_spec.rb +49 -49
  1995. data/spec/unit/resource/windows_task_spec.rb +323 -315
  1996. data/spec/unit/resource/yum_package_spec.rb +150 -150
  1997. data/spec/unit/resource/yum_repository_spec.rb +102 -102
  1998. data/spec/unit/resource/zypper_repository_spec.rb +66 -66
  1999. data/spec/unit/resource_builder_spec.rb +1 -1
  2000. data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
  2001. data/spec/unit/resource_collection/resource_set_spec.rb +244 -244
  2002. data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
  2003. data/spec/unit/resource_collection_spec.rb +400 -400
  2004. data/spec/unit/resource_definition_spec.rb +117 -117
  2005. data/spec/unit/resource_reporter_spec.rb +782 -782
  2006. data/spec/unit/resource_resolver_spec.rb +52 -52
  2007. data/spec/unit/resource_spec.rb +1115 -1115
  2008. data/spec/unit/role_spec.rb +358 -358
  2009. data/spec/unit/run_context/child_run_context_spec.rb +133 -133
  2010. data/spec/unit/run_context/cookbook_compiler_spec.rb +224 -224
  2011. data/spec/unit/run_context_spec.rb +241 -241
  2012. data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
  2013. data/spec/unit/run_list/run_list_item_spec.rb +117 -117
  2014. data/spec/unit/run_list/versioned_recipe_list_spec.rb +197 -197
  2015. data/spec/unit/run_list_spec.rb +312 -312
  2016. data/spec/unit/run_lock_spec.rb +140 -140
  2017. data/spec/unit/run_status_spec.rb +144 -144
  2018. data/spec/unit/runner_spec.rb +398 -398
  2019. data/spec/unit/scan_access_control_spec.rb +183 -183
  2020. data/spec/unit/search/query_spec.rb +283 -283
  2021. data/spec/unit/server_api_spec.rb +124 -124
  2022. data/spec/unit/server_api_versions_spec.rb +66 -66
  2023. data/spec/unit/shell/model_wrapper_spec.rb +96 -96
  2024. data/spec/unit/shell/shell_ext_spec.rb +153 -153
  2025. data/spec/unit/shell/shell_session_spec.rb +250 -250
  2026. data/spec/unit/shell_spec.rb +162 -162
  2027. data/spec/unit/user_spec.rb +275 -275
  2028. data/spec/unit/user_v1_spec.rb +583 -583
  2029. data/spec/unit/util/backup_spec.rb +141 -141
  2030. data/spec/unit/util/diff_spec.rb +576 -576
  2031. data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
  2032. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +248 -248
  2033. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
  2034. data/spec/unit/util/dsc/resource_store.rb +78 -78
  2035. data/spec/unit/util/editor_spec.rb +152 -152
  2036. data/spec/unit/util/file_edit_spec.rb +224 -224
  2037. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
  2038. data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
  2039. data/spec/unit/util/selinux_spec.rb +157 -157
  2040. data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
  2041. data/spec/unit/util/windows/logon_session_spec.rb +284 -284
  2042. data/spec/unit/version/platform_spec.rb +60 -60
  2043. data/spec/unit/version_class_spec.rb +171 -171
  2044. data/spec/unit/version_constraint/platform_spec.rb +45 -45
  2045. data/spec/unit/version_constraint_spec.rb +179 -179
  2046. data/spec/unit/version_string_spec.rb +79 -79
  2047. data/spec/unit/win32/error_spec.rb +67 -67
  2048. data/spec/unit/win32/link_spec.rb +73 -73
  2049. data/spec/unit/win32/registry_spec.rb +394 -394
  2050. data/spec/unit/win32/security_spec.rb +66 -66
  2051. data/spec/unit/windows_service_spec.rb +116 -116
  2052. data/tasks/announce.rb +58 -58
  2053. data/tasks/bin/run_external_test +25 -25
  2054. data/tasks/cbgb.rb +84 -84
  2055. data/tasks/dependencies.rb +92 -92
  2056. data/tasks/maintainers.rb +211 -211
  2057. data/tasks/rspec.rb +90 -90
  2058. data/tasks/templates/prerelease.md.erb +26 -26
  2059. data/tasks/templates/release.md.erb +26 -26
  2060. metadata +5 -5
@@ -1,921 +1,921 @@
1
- #
2
- # Author:: David Balatero (dbalatero@gmail.com)
3
- #
4
- # Copyright:: Copyright 2009-2016, David Balatero
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
- module GemspecBackcompatCreator
21
- def gemspec(name, version)
22
- if Gem::Specification.new.method(:initialize).arity == 0
23
- Gem::Specification.new { |s| s.name = name; s.version = version }
24
- else
25
- Gem::Specification.new(name, version)
26
- end
27
- end
28
- end
29
-
30
- require "spec_helper"
31
- require "ostruct"
32
-
33
- describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
34
- include GemspecBackcompatCreator
35
-
36
- before do
37
- @gem_env = Chef::Provider::Package::Rubygems::CurrentGemEnvironment.new
38
- end
39
-
40
- it "determines the gem paths from the in memory rubygems" do
41
- expect(@gem_env.gem_paths).to eq(Gem.path)
42
- end
43
-
44
- it "determines the installed versions of gems from Gem.source_index" do
45
- gems = [gemspec("rspec-core", Gem::Version.new("1.2.9")), gemspec("rspec-core", Gem::Version.new("1.3.0"))]
46
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
47
- expect(Gem::Specification).to receive(:find_all_by_name).with("rspec-core", Gem::Dependency.new("rspec-core").requirement).and_return(gems)
48
- else
49
- expect(Gem.source_index).to receive(:search).with(Gem::Dependency.new("rspec-core", nil)).and_return(gems)
50
- end
51
- expect(@gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil))).to eq(gems)
52
- end
53
-
54
- it "determines the installed versions of gems from the source index (part2: the unmockening)" do
55
- expected = ["rspec-core", Gem::Version.new(RSpec::Core::Version::STRING)]
56
- actual = @gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil)).map { |spec| [spec.name, spec.version] }
57
- expect(actual).to include(expected)
58
- end
59
-
60
- it "yields to a block with an alternate source list set" do
61
- sources_in_block = nil
62
- normal_sources = Gem.sources
63
- begin
64
- @gem_env.with_gem_sources("http://gems.example.org") do
65
- sources_in_block = Gem.sources
66
- raise "sources should be reset even in case of an error"
67
- end
68
- rescue RuntimeError
69
- end
70
- expect(sources_in_block).to eq(%w{http://gems.example.org})
71
- expect(Gem.sources).to eq(normal_sources)
72
- end
73
-
74
- it "it doesnt alter the gem sources if none are set" do
75
- sources_in_block = nil
76
- normal_sources = Gem.sources
77
- begin
78
- @gem_env.with_gem_sources(nil) do
79
- sources_in_block = Gem.sources
80
- raise "sources should be reset even in case of an error"
81
- end
82
- rescue RuntimeError
83
- end
84
- expect(sources_in_block).to eq(normal_sources)
85
- expect(Gem.sources).to eq(normal_sources)
86
- end
87
-
88
- context "new default rubygems behavior" do
89
- before do
90
- Chef::Config[:rubygems_cache_enabled] = false
91
- end
92
-
93
- it "finds a matching gem candidate version on rubygems 2.0.0+" do
94
- dep = Gem::Dependency.new("rspec", ">= 0")
95
- dep_installer = Gem::DependencyInstaller.new
96
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
97
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
98
- expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
99
- end
100
-
101
- it "gives the candidate version as nil if none is found" do
102
- dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
103
- dep_installer = Gem::DependencyInstaller.new
104
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
105
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
106
- expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
107
- end
108
-
109
- it "finds a matching gem from a specific gemserver when explicit sources are given (to a server that doesn't respond to api requests)" do
110
- dep = Gem::Dependency.new("rspec", ">= 0")
111
- dep_installer = Gem::DependencyInstaller.new
112
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
113
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
114
- expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
115
- end
116
- end
117
-
118
- context "old rubygems caching behavior" do
119
- before do
120
- Chef::Config[:rubygems_cache_enabled] = true
121
- end
122
-
123
- it "finds a matching gem candidate version on rubygems 2.0.0+" do
124
- dep = Gem::Dependency.new("rspec", ">= 0")
125
- expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
126
- end
127
-
128
- it "gives the candidate version as nil if none is found" do
129
- dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
130
- expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
131
- end
132
-
133
- it "finds a matching gem from a specific gemserver when explicit sources are given" do
134
- dep = Gem::Dependency.new("rspec", ">= 0")
135
- expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
136
- end
137
- end
138
-
139
- it "finds a matching candidate version from a .gem file when the path to the gem is supplied" do
140
- location = CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem"
141
- expect(@gem_env.candidate_version_from_file(Gem::Dependency.new("chef-integration-test", ">= 0"), location)).to eq(Gem::Version.new("0.1.0"))
142
- expect(@gem_env.candidate_version_from_file(Gem::Dependency.new("chef-integration-test", ">= 0.2.0"), location)).to be_nil
143
- end
144
-
145
- it "installs a gem with a hash of options for the dependency installer" do
146
- dep_installer = Gem::DependencyInstaller.new
147
- expect(@gem_env).to receive(:dependency_installer).with(install_dir: "/foo/bar").and_return(dep_installer)
148
- expect(@gem_env).to receive(:with_gem_sources).with("http://gems.example.com").and_yield
149
- expect(dep_installer).to receive(:install).with(Gem::Dependency.new("rspec", ">= 0"))
150
- @gem_env.install(Gem::Dependency.new("rspec", ">= 0"), install_dir: "/foo/bar", sources: ["http://gems.example.com"])
151
- end
152
-
153
- it "builds an uninstaller for a gem with options set to avoid requiring user input" do
154
- # default options for uninstaller should be:
155
- # :ignore => true, :executables => true
156
- expect(Gem::Uninstaller).to receive(:new).with("rspec", ignore: true, executables: true)
157
- @gem_env.uninstaller("rspec")
158
- end
159
-
160
- it "uninstalls all versions of a gem" do
161
- uninstaller = double("gem uninstaller")
162
- expect(uninstaller).to receive(:uninstall)
163
- expect(@gem_env).to receive(:uninstaller).with("rspec", all: true).and_return(uninstaller)
164
- @gem_env.uninstall("rspec")
165
- end
166
-
167
- it "uninstalls a specific version of a gem" do
168
- uninstaller = double("gem uninstaller")
169
- expect(uninstaller).to receive(:uninstall)
170
- expect(@gem_env).to receive(:uninstaller).with("rspec", version: "1.2.3").and_return(uninstaller)
171
- @gem_env.uninstall("rspec", "1.2.3")
172
- end
173
-
174
- end
175
-
176
- describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do
177
- include GemspecBackcompatCreator
178
-
179
- before do
180
- Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache.clear
181
- Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache.clear
182
- @gem_env = Chef::Provider::Package::Rubygems::AlternateGemEnvironment.new("/usr/weird/bin/gem")
183
- end
184
-
185
- it "determines the gem paths from shelling out to gem env" do
186
- gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
187
- shell_out_result = OpenStruct.new(stdout: gem_env_output)
188
- expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
189
- expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
190
- end
191
-
192
- it "caches the gempaths by gem_binary" do
193
- gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
194
- shell_out_result = OpenStruct.new(stdout: gem_env_output)
195
- expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
196
- expected = ["/path/to/gems", "/another/path/to/gems"]
197
- expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
198
- expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache["/usr/weird/bin/gem"]).to eq(expected)
199
- end
200
-
201
- it "uses the cached result for gem paths when available" do
202
- expect(@gem_env).not_to receive(:shell_out!)
203
- expected = ["/path/to/gems", "/another/path/to/gems"]
204
- Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache["/usr/weird/bin/gem"] = expected
205
- expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
206
- end
207
-
208
- it "builds the gems source index from the gem paths" do
209
- allow(@gem_env).to receive(:gem_paths).and_return(["/path/to/gems", "/another/path/to/gems"])
210
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
211
- @gem_env.gem_specification
212
- expect(Gem::Specification.dirs).to eq([ "/path/to/gems/specifications", "/another/path/to/gems/specifications" ])
213
- else
214
- expect(Gem::SourceIndex).to receive(:from_gems_in).with("/path/to/gems/specifications", "/another/path/to/gems/specifications")
215
- @gem_env.gem_source_index
216
- end
217
- end
218
-
219
- it "determines the installed versions of gems from the source index" do
220
- gems = [gemspec("rspec", Gem::Version.new("1.2.9")), gemspec("rspec", Gem::Version.new("1.3.0"))]
221
- rspec_dep = Gem::Dependency.new("rspec", nil)
222
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
223
- allow(@gem_env).to receive(:gem_specification).and_return(Gem::Specification)
224
- expect(@gem_env.gem_specification).to receive(:find_all_by_name).with(rspec_dep.name, rspec_dep.requirement).and_return(gems)
225
- else
226
- allow(@gem_env).to receive(:gem_source_index).and_return(Gem.source_index)
227
- expect(@gem_env.gem_source_index).to receive(:search).with(rspec_dep).and_return(gems)
228
- end
229
- expect(@gem_env.installed_versions(Gem::Dependency.new("rspec", nil))).to eq(gems)
230
- end
231
-
232
- it "determines the installed versions of gems from the source index (part2: the unmockening)" do
233
- allow($stdout).to receive(:write)
234
- path_to_gem = if windows?
235
- `where gem`.split[1]
236
- else
237
- `which gem`.strip
238
- end
239
- skip("cant find your gem executable") if path_to_gem.empty?
240
- gem_env = Chef::Provider::Package::Rubygems::AlternateGemEnvironment.new(path_to_gem)
241
- expected = ["rspec-core", Gem::Version.new(RSpec::Core::Version::STRING)]
242
- actual = gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil)).map { |s| [s.name, s.version] }
243
- expect(actual).to include(expected)
244
- end
245
-
246
- it "detects when the target gem environment is the jruby platform" do
247
- gem_env_out = <<-JRUBY_GEM_ENV
248
- RubyGems Environment:
249
- - RUBYGEMS VERSION: 1.3.6
250
- - RUBY VERSION: 1.8.7 (2010-05-12 patchlevel 249) [java]
251
- - INSTALLATION DIRECTORY: /Users/you/.rvm/gems/jruby-1.5.0
252
- - RUBY EXECUTABLE: /Users/you/.rvm/rubies/jruby-1.5.0/bin/jruby
253
- - EXECUTABLE DIRECTORY: /Users/you/.rvm/gems/jruby-1.5.0/bin
254
- - RUBYGEMS PLATFORMS:
255
- - ruby
256
- - universal-java-1.6
257
- - GEM PATHS:
258
- - /Users/you/.rvm/gems/jruby-1.5.0
259
- - /Users/you/.rvm/gems/jruby-1.5.0@global
260
- - GEM CONFIGURATION:
261
- - :update_sources => true
262
- - :verbose => true
263
- - :benchmark => false
264
- - :backtrace => false
265
- - :bulk_threshold => 1000
266
- - "install" => "--env-shebang"
267
- - "update" => "--env-shebang"
268
- - "gem" => "--no-rdoc --no-ri"
269
- - :sources => ["https://rubygems.org/", "http://gems.github.com/"]
270
- - REMOTE SOURCES:
271
- - https://rubygems.org/
272
- - http://gems.github.com/
273
- JRUBY_GEM_ENV
274
- expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("jruby_gem_env", stdout: gem_env_out))
275
- expected = ["ruby", Gem::Platform.new("universal-java-1.6")]
276
- expect(@gem_env.gem_platforms).to eq(expected)
277
- # it should also cache the result
278
- expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"]).to eq(expected)
279
- end
280
-
281
- it "uses the cached result for gem platforms if available" do
282
- expect(@gem_env).not_to receive(:shell_out!)
283
- expected = ["ruby", Gem::Platform.new("universal-java-1.6")]
284
- Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"] = expected
285
- expect(@gem_env.gem_platforms).to eq(expected)
286
- end
287
-
288
- it "uses the current gem platforms when the target env is not jruby" do
289
- gem_env_out = <<-RBX_GEM_ENV
290
- RubyGems Environment:
291
- - RUBYGEMS VERSION: 1.3.6
292
- - RUBY VERSION: 1.8.7 (2010-05-14 patchlevel 174) [x86_64-apple-darwin10.3.0]
293
- - INSTALLATION DIRECTORY: /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514
294
- - RUBYGEMS PREFIX: /Users/ddeleo/.rvm/rubies/rbx-1.0.0-20100514
295
- - RUBY EXECUTABLE: /Users/ddeleo/.rvm/rubies/rbx-1.0.0-20100514/bin/rbx
296
- - EXECUTABLE DIRECTORY: /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514/bin
297
- - RUBYGEMS PLATFORMS:
298
- - ruby
299
- - x86_64-darwin-10
300
- - x86_64-rubinius-1.0
301
- - GEM PATHS:
302
- - /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514
303
- - /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514@global
304
- - GEM CONFIGURATION:
305
- - :update_sources => true
306
- - :verbose => true
307
- - :benchmark => false
308
- - :backtrace => false
309
- - :bulk_threshold => 1000
310
- - :sources => ["https://rubygems.org/", "http://gems.github.com/"]
311
- - "gem" => "--no-rdoc --no-ri"
312
- - REMOTE SOURCES:
313
- - https://rubygems.org/
314
- - http://gems.github.com/
315
- RBX_GEM_ENV
316
- expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("rbx_gem_env", stdout: gem_env_out))
317
- expect(@gem_env.gem_platforms).to eq(Gem.platforms)
318
- expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"]).to eq(Gem.platforms)
319
- end
320
-
321
- it "yields to a block while masquerading as a different gems platform" do
322
- original_platforms = Gem.platforms
323
- platforms_in_block = nil
324
- begin
325
- @gem_env.with_gem_platforms(["ruby", Gem::Platform.new("sparc64-java-1.7")]) do
326
- platforms_in_block = Gem.platforms
327
- raise "gem platforms should get set to the correct value even when an error occurs"
328
- end
329
- rescue RuntimeError
330
- end
331
- expect(platforms_in_block).to eq(["ruby", Gem::Platform.new("sparc64-java-1.7")])
332
- expect(Gem.platforms).to eq(original_platforms)
333
- end
334
-
335
- end
336
-
337
- describe Chef::Provider::Package::Rubygems do
338
- let(:target_version) { nil }
339
- let(:gem_name) { "rspec-core" }
340
- let(:gem_binary) { nil }
341
- let(:bindir) { "/usr/bin" }
342
- let(:options) { nil }
343
- let(:source) { nil }
344
- let(:include_default_source) { true }
345
-
346
- let(:new_resource) do
347
- new_resource = Chef::Resource::GemPackage.new(gem_name)
348
- new_resource.version(target_version)
349
- new_resource.gem_binary(gem_binary) if gem_binary
350
- new_resource.options(options) if options
351
- new_resource.source(source) if source
352
- new_resource.include_default_source(include_default_source)
353
- new_resource
354
- end
355
-
356
- let(:current_resource) { nil }
357
-
358
- let(:provider) do
359
- run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
360
- provider = Chef::Provider::Package::Rubygems.new(new_resource, run_context)
361
- if current_resource
362
- allow(provider).to receive(:load_current_resource)
363
- provider.current_resource = current_resource
364
- end
365
- provider
366
- end
367
-
368
- let(:gem_dep) { Gem::Dependency.new(gem_name, target_version) }
369
-
370
- before(:each) do
371
- # We choose detect omnibus via RbConfig::CONFIG['bindir'] in Chef::Provider::Package::Rubygems.new
372
- allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(bindir)
373
- # Rubygems uses this interally
374
- allow(RbConfig::CONFIG).to receive(:[]).with("arch").and_call_original
375
- allow(File).to receive(:executable?).and_return false
376
- allow(File).to receive(:executable?).with("#{bindir}/gem").and_return true
377
- end
378
-
379
- describe "when new_resource version is nil" do
380
- let(:target_version) { nil }
381
-
382
- it "target_version_already_installed? should return false so that we can search for candidates" do
383
- provider.load_current_resource
384
- expect(provider.target_version_already_installed?(provider.current_resource.version, new_resource.version)).to be_falsey
385
- end
386
-
387
- it "version_equals? should return false so that we can search for candidates" do
388
- provider.load_current_resource
389
- expect(provider.version_equals?(provider.current_resource.version, new_resource.version)).to be_falsey
390
- end
391
- end
392
-
393
- describe "when new_resource version is an rspec version" do
394
- let(:current_version) { RSpec::Core::Version::STRING }
395
- let(:target_version) { current_version }
396
-
397
- it "triggers a gem configuration load so a later one will not stomp its config values" do
398
- _ = provider
399
- # ugly, is there a better way?
400
- expect(Gem.instance_variable_get(:@configuration)).not_to be_nil
401
- end
402
-
403
- it "uses the CurrentGemEnvironment implementation when no gem_binary_path is provided" do
404
- expect(provider.gem_env).to be_a_kind_of(Chef::Provider::Package::Rubygems::CurrentGemEnvironment)
405
- end
406
-
407
- context "when a gem_binary_path is provided" do
408
- let(:gem_binary) { "/usr/weird/bin/gem" }
409
-
410
- it "uses the AlternateGemEnvironment implementation when a gem_binary_path is provided" do
411
- expect(provider.gem_env.gem_binary_location).to eq(gem_binary)
412
- end
413
-
414
- context "when you try to use a hash of install options" do
415
- let(:options) { { fail: :burger } }
416
-
417
- it "smites you" do
418
- expect { provider }.to raise_error(ArgumentError)
419
- end
420
- end
421
- end
422
-
423
- context "when in omnibus opscode" do
424
- let(:bindir) { "/opt/opscode/embedded/bin" }
425
-
426
- it "recognizes opscode as omnibus" do
427
- expect(provider.is_omnibus?).to be true
428
- end
429
- end
430
-
431
- context "when in omnibus chefdk" do
432
- let(:bindir) { "/opt/chefdk/embedded/bin" }
433
-
434
- it "recognizes chefdk as omnibus" do
435
- expect(provider.is_omnibus?).to be true
436
- end
437
- end
438
-
439
- context "when in omnibus chef" do
440
- let(:bindir) { "/opt/chef/embedded/bin" }
441
-
442
- it "recognizes chef as omnibus" do
443
- expect(provider.is_omnibus?).to be true
444
- end
445
-
446
- it "searches for a gem binary when running on Omnibus on Unix" do
447
- platform_mock :unix do
448
- allow(ENV).to receive(:[]).with("PATH").and_return("/usr/bin:/usr/sbin:/opt/chef/embedded/bin")
449
- allow(File).to receive(:executable?).with("/usr/bin/gem").and_return(false)
450
- allow(File).to receive(:executable?).with("/usr/sbin/gem").and_return(true)
451
- allow(File).to receive(:executable?).with("/opt/chef/embedded/bin/gem").and_return(true) # should not get here
452
- expect(provider.gem_env.gem_binary_location).to eq("/usr/sbin/gem")
453
- end
454
- end
455
-
456
- context "when on Windows" do
457
- let(:bindir) { "d:/opscode/chef/embedded/bin" }
458
-
459
- it "searches for a gem binary when running on Omnibus on Windows" do
460
- platform_mock :windows do
461
- allow(ENV).to receive(:[]).with("PATH").and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin')
462
- allow(File).to receive(:executable?).with('C:\\windows\\system32/gem').and_return(false)
463
- allow(File).to receive(:executable?).with('C:\\windows/gem').and_return(false)
464
- allow(File).to receive(:executable?).with('C:\\Ruby186\\bin/gem').and_return(true)
465
- allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
466
- allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
467
- allow(File).to receive(:executable?).with("d:/opscode/chef/embedded/bin/gem").and_return(false) # should not get here
468
- expect(provider.gem_env.gem_binary_location).to eq('C:\Ruby186\bin/gem')
469
- end
470
- end
471
- end
472
- end
473
-
474
- it "converts the new resource into a gem dependency" do
475
- expect(provider.gem_dependency).to eq(gem_dep)
476
- end
477
-
478
- context "when the new resource is not the current version" do
479
- let(:target_version) { "~> 9000.0.2" }
480
-
481
- it "converts the new resource into a gem dependency" do
482
- expect(provider.gem_dependency).to eq(gem_dep)
483
- end
484
- end
485
-
486
- describe "when determining the currently installed version" do
487
- before do
488
- provider.load_current_resource
489
- end
490
-
491
- it "sets the current version to the version specified by the new resource if that version is installed" do
492
- expect(provider.current_resource.version).to eq(current_version)
493
- end
494
-
495
- context "if the requested version is not installed" do
496
- let(:target_version) { "9000.0.2" }
497
-
498
- it "sets the current version to the highest installed version if the requested version is not installed" do
499
- expect(provider.current_resource.version).to eq(current_version)
500
- end
501
- end
502
-
503
- context "if the package is not currently installed" do
504
- let(:gem_name) { "no-such-gem-should-exist-with-this-name" }
505
-
506
- it "leaves the current version at nil" do
507
- expect(provider.current_resource.version).to be_nil
508
- end
509
- end
510
-
511
- end
512
-
513
- describe "when determining the candidate version to install" do
514
- before do
515
- provider.load_current_resource
516
- end
517
-
518
- context "when the current version is the target version" do
519
- it "does not query for available versions" do
520
- # NOTE: odd use case -- we've equality pinned a version, but are calling :upgrade
521
- expect(provider.gem_env).not_to receive(:candidate_version_from_remote)
522
- expect(provider.gem_env).not_to receive(:install)
523
- provider.run_action(:upgrade)
524
- expect(new_resource).not_to be_updated_by_last_action
525
- end
526
- end
527
-
528
- context "when the current version satisfies the target version requirement" do
529
- let(:target_version) { ">= 0" }
530
-
531
- it "does not query for available versions on install" do
532
- expect(provider.gem_env).not_to receive(:candidate_version_from_remote)
533
- expect(provider.gem_env).not_to receive(:install)
534
- provider.run_action(:install)
535
- expect(new_resource).not_to be_updated_by_last_action
536
- end
537
-
538
- it "queries for available versions on upgrade" do
539
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
540
- .and_return(Gem::Version.new("9000.0.2"))
541
- expect(provider.gem_env).to receive(:install)
542
- provider.run_action(:upgrade)
543
- expect(new_resource).to be_updated_by_last_action
544
- end
545
- end
546
-
547
- context "when the source is from the rubygems_url" do
548
- it "determines the candidate version by querying the remote gem servers" do
549
- Chef::Config[:rubygems_url] = "https://mirror1/"
550
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
551
- .with(gem_dep, "https://mirror1/")
552
- .and_return(Gem::Version.new(target_version))
553
- expect(provider.candidate_version).to eq(target_version)
554
- end
555
- end
556
-
557
- context "when the requested source is a remote server" do
558
- let(:source) { "http://mygems.example.com" }
559
-
560
- it "determines the candidate version by querying the remote gem servers" do
561
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
562
- .with(gem_dep, source, Chef::Config[:rubygems_url])
563
- .and_return(Gem::Version.new(target_version))
564
- expect(provider.candidate_version).to eq(target_version)
565
- end
566
-
567
- it "overwrites the config variable" do
568
- new_resource.include_default_source false
569
- Chef::Config[:rubygems_url] = "https://overridden"
570
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
571
- .with(gem_dep, source)
572
- .and_return(Gem::Version.new(target_version))
573
- expect(provider.candidate_version).to eq(target_version)
574
- end
575
- end
576
-
577
- context "when the requested source is an array" do
578
- let(:source) { [ "https://mirror1", "https://mirror2" ] }
579
-
580
- it "determines the candidate version by querying the remote gem servers" do
581
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
582
- .with(gem_dep, *[source, Chef::Config[:rubygems_url] ].flatten)
583
- .and_return(Gem::Version.new(target_version))
584
- expect(provider.candidate_version).to eq(target_version)
585
- end
586
-
587
- it "overwrites the config variable" do
588
- new_resource.include_default_source false
589
- Chef::Config[:rubygems_url] = "https://overridden"
590
- expect(provider.gem_env).to receive(:candidate_version_from_remote)
591
- .with(gem_dep, *source)
592
- .and_return(Gem::Version.new(target_version))
593
- expect(provider.candidate_version).to eq(target_version)
594
- end
595
- end
596
-
597
- context "when the requested source is a file" do
598
- let(:gem_name) { "chef-integration-test" }
599
- let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
600
- let(:target_version) { ">= 0" }
601
-
602
- it "parses the gem's specification" do
603
- expect(provider.candidate_version).to eq("0.1.0")
604
- end
605
- end
606
- end
607
-
608
- describe "when installing a gem" do
609
- let(:target_version) { "9000.0.2" }
610
- let(:current_version) { nil }
611
- let(:candidate_version) { "9000.0.2" }
612
- let(:current_resource) do
613
- current_resource = Chef::Resource::GemPackage.new(gem_name)
614
- current_resource.version(current_version)
615
- current_resource
616
- end
617
-
618
- let(:version) { Gem::Version.new(candidate_version) }
619
-
620
- before do
621
- expected_source = [ source ]
622
- expected_source << Chef::Config[:rubygems_url] if include_default_source
623
- allow(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, *expected_source.flatten.compact).and_return(version)
624
- end
625
-
626
- describe "in the current gem environment" do
627
- it "installs the gem via the gems api when no explicit options are used" do
628
- expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
629
- provider.run_action(:install)
630
- expect(new_resource).to be_updated_by_last_action
631
- end
632
-
633
- context "when a remote source is provided" do
634
- let(:source) { "http://gems.example.org" }
635
-
636
- it "installs the gem via the gems api" do
637
- expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [source, Chef::Config[:rubygems_url]])
638
- provider.run_action(:install)
639
- expect(new_resource).to be_updated_by_last_action
640
- end
641
- end
642
-
643
- context "when source is a path" do
644
- let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
645
-
646
- it "installs the gem from file via the gems api" do
647
- expect(provider.gem_env).to receive(:install).with(source)
648
- provider.run_action(:install)
649
- expect(new_resource).to be_updated_by_last_action
650
- end
651
- end
652
-
653
- context "when the gem name is a file path and source is nil" do
654
- let(:gem_name) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
655
-
656
- it "installs the gem from file via the gems api" do
657
- expect(new_resource.source).to eq(gem_name)
658
- expect(provider.gem_env).to receive(:install).with(gem_name)
659
- provider.run_action(:install)
660
- expect(new_resource).to be_updated_by_last_action
661
- end
662
- end
663
-
664
- # this catches 'gem_package "foo"' when "./foo" is a file in the cwd, and instead of installing './foo' it fetches the remote gem
665
- it "installs the gem via the gems api, when the package has no file separator characters in it, but a matching file exists in cwd" do
666
- allow(::File).to receive(:exist?).and_return(true)
667
- new_resource.package_name("rspec-core")
668
- expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
669
- provider.run_action(:install)
670
- expect(new_resource).to be_updated_by_last_action
671
- end
672
-
673
- context "when options are provided as a String" do
674
- let(:options) { "-i /alt/install/location" }
675
-
676
- it "installs the gem by shelling out when options are provided as a String" do
677
- expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org #{options}"
678
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
679
- provider.run_action(:install)
680
- expect(new_resource).to be_updated_by_last_action
681
- end
682
- end
683
-
684
- context "when the Chef::Config[:rubygems_url] option is provided" do
685
- let(:gem_binary) { "/foo/bar" }
686
-
687
- it "installs the gem with rubygems.org as an added source" do
688
- Chef::Config[:rubygems_url] = "https://mirror1"
689
- expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, Chef::Config[:rubygems_url]).and_return(version)
690
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1"
691
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
692
- provider.run_action(:install)
693
- expect(new_resource).to be_updated_by_last_action
694
- end
695
- end
696
-
697
- context "when another source and binary are provided" do
698
- let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
699
- let(:gem_binary) { "/foo/bar" }
700
-
701
- it "installs the gem with rubygems.org as an added source" do
702
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source} --source=https://www.rubygems.org"
703
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
704
- provider.run_action(:install)
705
- expect(new_resource).to be_updated_by_last_action
706
- end
707
-
708
- context "with include_default_source false" do
709
- let(:include_default_source) { false }
710
-
711
- it "ignores the Chef::Config setting" do
712
- Chef::Config[:rubygems_url] = "https://ignored"
713
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source}"
714
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
715
- provider.run_action(:install)
716
- expect(new_resource).to be_updated_by_last_action
717
- end
718
- end
719
- end
720
-
721
- context "when the source is an array" do
722
- let(:source) { [ "https://mirror1" , "https://mirror2" ] }
723
- let(:gem_binary) { "/foo/bar" }
724
-
725
- it "installs the gem with an array as an added source" do
726
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2 --source=https://www.rubygems.org"
727
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
728
- provider.run_action(:install)
729
- expect(new_resource).to be_updated_by_last_action
730
- end
731
-
732
- context "with include_default_source false" do
733
- let(:include_default_source) { false }
734
-
735
- it "ignores the Chef::Config setting" do
736
- Chef::Config[:rubygems_url] = "https://ignored"
737
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2"
738
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
739
- provider.run_action(:install)
740
- expect(new_resource).to be_updated_by_last_action
741
- end
742
- end
743
- end
744
-
745
- context "when we have cleared sources and an explict source is specified" do
746
- let(:gem_binary) { "/foo/bar" }
747
- let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
748
-
749
- it "installs the gem" do
750
- new_resource.clear_sources(true)
751
- expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --clear-sources --source=#{source} --source=https://www.rubygems.org"
752
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
753
- provider.run_action(:install)
754
- expect(new_resource).to be_updated_by_last_action
755
- end
756
- end
757
-
758
- context "when no version is given" do
759
- let(:target_version) { nil }
760
- let(:options) { "-i /alt/install/location" }
761
-
762
- it "installs the gem by shelling out when options are provided but no version is given" do
763
- expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{candidate_version}\" --source=https://www.rubygems.org #{options}"
764
- expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
765
- provider.run_action(:install)
766
- expect(new_resource).to be_updated_by_last_action
767
- end
768
- end
769
-
770
- context "when options are given as a Hash" do
771
- let(:options) { { install_dir: "/alt/install/location" } }
772
-
773
- it "installs the gem via the gems api when options are given as a Hash" do
774
- expect(provider.gem_env).to receive(:install).with(gem_dep, { sources: [ Chef::Config[:rubygems_url] ] }.merge(options))
775
- provider.run_action(:install)
776
- expect(new_resource).to be_updated_by_last_action
777
- end
778
- end
779
-
780
- describe "at a specific version" do
781
- let(:target_version) { "9000.0.2" }
782
-
783
- it "installs the gem via the gems api" do
784
- expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ] )
785
- provider.run_action(:install)
786
- expect(new_resource).to be_updated_by_last_action
787
- end
788
- end
789
-
790
- describe "at version specified with comparison operator" do
791
- context "if current version satisifies requested version" do
792
- let(:target_version) { ">=2.3.0" }
793
- let(:current_version) { "2.3.3" }
794
-
795
- it "skips the install" do
796
- expect(provider.gem_env).not_to receive(:install)
797
- provider.run_action(:install)
798
- end
799
-
800
- it "performs the upgrade" do
801
- expect(provider.gem_env).to receive(:install)
802
- provider.run_action(:upgrade)
803
- end
804
- end
805
-
806
- context "if the fuzzy operator is used" do
807
- let(:target_version) { "~>2.3.0" }
808
- let(:current_version) { "2.3.3" }
809
-
810
- it "it matches an existing gem" do
811
- expect(provider.gem_env).not_to receive(:install)
812
- provider.run_action(:install)
813
- end
814
-
815
- it "it upgrades an existing gem" do
816
- expect(provider.gem_env).to receive(:install)
817
- provider.run_action(:upgrade)
818
- end
819
- end
820
- end
821
- end
822
-
823
- describe "in an alternate gem environment" do
824
- let(:gem_binary) { "/usr/weird/bin/gem" }
825
-
826
- it "installs the gem by shelling out to gem install" do
827
- expect(provider).to receive(:shell_out!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org", env: nil, timeout: 900)
828
- provider.run_action(:install)
829
- expect(new_resource).to be_updated_by_last_action
830
- end
831
-
832
- context "when source is a path" do
833
- let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
834
- let(:target_version) { ">= 0" }
835
-
836
- it "installs the gem by shelling out to gem install" do
837
- expect(provider).to receive(:shell_out!).with("#{gem_binary} install #{source} -q --no-rdoc --no-ri -v \"#{target_version}\"", env: nil, timeout: 900)
838
- provider.run_action(:install)
839
- expect(new_resource).to be_updated_by_last_action
840
- end
841
- end
842
-
843
- context "when the package is a path and source is nil" do
844
- let(:gem_name) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
845
- let(:target_version) { ">= 0" }
846
-
847
- it "installs the gem from file by shelling out to gem install when the package is a path and the source is nil" do
848
- expect(new_resource.source).to eq(gem_name)
849
- expect(provider).to receive(:shell_out!).with("#{gem_binary} install #{gem_name} -q --no-rdoc --no-ri -v \"#{target_version}\"", env: nil, timeout: 900)
850
- provider.run_action(:install)
851
- expect(new_resource).to be_updated_by_last_action
852
- end
853
- end
854
- end
855
-
856
- end
857
-
858
- describe "when uninstalling a gem" do
859
- let(:gem_name) { "rspec" }
860
- let(:current_version) { "1.2.3" }
861
- let(:target_version) { nil }
862
-
863
- let(:current_resource) do
864
- current_resource = Chef::Resource::GemPackage.new(gem_name)
865
- current_resource.version(current_version)
866
- current_resource
867
- end
868
-
869
- describe "in the current gem environment" do
870
- it "uninstalls via the api when no explicit options are used" do
871
- # pre-reqs for action_remove to actually remove the package:
872
- expect(provider.new_resource.version).to be_nil
873
- expect(provider.current_resource.version).not_to be_nil
874
- # the behavior we're testing:
875
- expect(provider.gem_env).to receive(:uninstall).with("rspec", nil)
876
- provider.action_remove
877
- end
878
-
879
- context "when options are given as a Hash" do
880
- let(:options) { { install_dir: "/alt/install/location" } }
881
-
882
- it "uninstalls via the api" do
883
- # pre-reqs for action_remove to actually remove the package:
884
- expect(provider.new_resource.version).to be_nil
885
- expect(provider.current_resource.version).not_to be_nil
886
- # the behavior we're testing:
887
- expect(provider.gem_env).to receive(:uninstall).with("rspec", nil, options)
888
- provider.action_remove
889
- end
890
- end
891
-
892
- context "when options are given as a String" do
893
- let(:options) { "-i /alt/install/location" }
894
-
895
- it "uninstalls via the gem command" do
896
- expect(provider).to receive(:shell_out!).with("gem uninstall rspec -q -x -I -a #{options}", env: nil, timeout: 900)
897
- provider.action_remove
898
- end
899
- end
900
-
901
- context "when a version is provided" do
902
- let(:target_version) { "1.2.3" }
903
-
904
- it "uninstalls a specific version of a gem" do
905
- expect(provider.gem_env).to receive(:uninstall).with("rspec", "1.2.3")
906
- provider.action_remove
907
- end
908
- end
909
- end
910
-
911
- describe "in an alternate gem environment" do
912
- let(:gem_binary) { "/usr/weird/bin/gem" }
913
-
914
- it "uninstalls via the gem command" do
915
- expect(provider).to receive(:shell_out!).with("#{gem_binary} uninstall rspec -q -x -I -a", env: nil, timeout: 900)
916
- provider.action_remove
917
- end
918
- end
919
- end
920
- end
921
- end
1
+ #
2
+ # Author:: David Balatero (dbalatero@gmail.com)
3
+ #
4
+ # Copyright:: Copyright 2009-2016, David Balatero
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
+ module GemspecBackcompatCreator
21
+ def gemspec(name, version)
22
+ if Gem::Specification.new.method(:initialize).arity == 0
23
+ Gem::Specification.new { |s| s.name = name; s.version = version }
24
+ else
25
+ Gem::Specification.new(name, version)
26
+ end
27
+ end
28
+ end
29
+
30
+ require "spec_helper"
31
+ require "ostruct"
32
+
33
+ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
34
+ include GemspecBackcompatCreator
35
+
36
+ before do
37
+ @gem_env = Chef::Provider::Package::Rubygems::CurrentGemEnvironment.new
38
+ end
39
+
40
+ it "determines the gem paths from the in memory rubygems" do
41
+ expect(@gem_env.gem_paths).to eq(Gem.path)
42
+ end
43
+
44
+ it "determines the installed versions of gems from Gem.source_index" do
45
+ gems = [gemspec("rspec-core", Gem::Version.new("1.2.9")), gemspec("rspec-core", Gem::Version.new("1.3.0"))]
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
47
+ expect(Gem::Specification).to receive(:find_all_by_name).with("rspec-core", Gem::Dependency.new("rspec-core").requirement).and_return(gems)
48
+ else
49
+ expect(Gem.source_index).to receive(:search).with(Gem::Dependency.new("rspec-core", nil)).and_return(gems)
50
+ end
51
+ expect(@gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil))).to eq(gems)
52
+ end
53
+
54
+ it "determines the installed versions of gems from the source index (part2: the unmockening)" do
55
+ expected = ["rspec-core", Gem::Version.new(RSpec::Core::Version::STRING)]
56
+ actual = @gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil)).map { |spec| [spec.name, spec.version] }
57
+ expect(actual).to include(expected)
58
+ end
59
+
60
+ it "yields to a block with an alternate source list set" do
61
+ sources_in_block = nil
62
+ normal_sources = Gem.sources
63
+ begin
64
+ @gem_env.with_gem_sources("http://gems.example.org") do
65
+ sources_in_block = Gem.sources
66
+ raise "sources should be reset even in case of an error"
67
+ end
68
+ rescue RuntimeError
69
+ end
70
+ expect(sources_in_block).to eq(%w{http://gems.example.org})
71
+ expect(Gem.sources).to eq(normal_sources)
72
+ end
73
+
74
+ it "it doesnt alter the gem sources if none are set" do
75
+ sources_in_block = nil
76
+ normal_sources = Gem.sources
77
+ begin
78
+ @gem_env.with_gem_sources(nil) do
79
+ sources_in_block = Gem.sources
80
+ raise "sources should be reset even in case of an error"
81
+ end
82
+ rescue RuntimeError
83
+ end
84
+ expect(sources_in_block).to eq(normal_sources)
85
+ expect(Gem.sources).to eq(normal_sources)
86
+ end
87
+
88
+ context "new default rubygems behavior" do
89
+ before do
90
+ Chef::Config[:rubygems_cache_enabled] = false
91
+ end
92
+
93
+ it "finds a matching gem candidate version on rubygems 2.0.0+" do
94
+ dep = Gem::Dependency.new("rspec", ">= 0")
95
+ dep_installer = Gem::DependencyInstaller.new
96
+ allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
97
+ expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
98
+ expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
99
+ end
100
+
101
+ it "gives the candidate version as nil if none is found" do
102
+ dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
103
+ dep_installer = Gem::DependencyInstaller.new
104
+ allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
105
+ expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
106
+ expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
107
+ end
108
+
109
+ it "finds a matching gem from a specific gemserver when explicit sources are given (to a server that doesn't respond to api requests)" do
110
+ dep = Gem::Dependency.new("rspec", ">= 0")
111
+ dep_installer = Gem::DependencyInstaller.new
112
+ allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
113
+ expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
114
+ expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
115
+ end
116
+ end
117
+
118
+ context "old rubygems caching behavior" do
119
+ before do
120
+ Chef::Config[:rubygems_cache_enabled] = true
121
+ end
122
+
123
+ it "finds a matching gem candidate version on rubygems 2.0.0+" do
124
+ dep = Gem::Dependency.new("rspec", ">= 0")
125
+ expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
126
+ end
127
+
128
+ it "gives the candidate version as nil if none is found" do
129
+ dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
130
+ expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
131
+ end
132
+
133
+ it "finds a matching gem from a specific gemserver when explicit sources are given" do
134
+ dep = Gem::Dependency.new("rspec", ">= 0")
135
+ expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
136
+ end
137
+ end
138
+
139
+ it "finds a matching candidate version from a .gem file when the path to the gem is supplied" do
140
+ location = CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem"
141
+ expect(@gem_env.candidate_version_from_file(Gem::Dependency.new("chef-integration-test", ">= 0"), location)).to eq(Gem::Version.new("0.1.0"))
142
+ expect(@gem_env.candidate_version_from_file(Gem::Dependency.new("chef-integration-test", ">= 0.2.0"), location)).to be_nil
143
+ end
144
+
145
+ it "installs a gem with a hash of options for the dependency installer" do
146
+ dep_installer = Gem::DependencyInstaller.new
147
+ expect(@gem_env).to receive(:dependency_installer).with(install_dir: "/foo/bar").and_return(dep_installer)
148
+ expect(@gem_env).to receive(:with_gem_sources).with("http://gems.example.com").and_yield
149
+ expect(dep_installer).to receive(:install).with(Gem::Dependency.new("rspec", ">= 0"))
150
+ @gem_env.install(Gem::Dependency.new("rspec", ">= 0"), install_dir: "/foo/bar", sources: ["http://gems.example.com"])
151
+ end
152
+
153
+ it "builds an uninstaller for a gem with options set to avoid requiring user input" do
154
+ # default options for uninstaller should be:
155
+ # :ignore => true, :executables => true
156
+ expect(Gem::Uninstaller).to receive(:new).with("rspec", ignore: true, executables: true)
157
+ @gem_env.uninstaller("rspec")
158
+ end
159
+
160
+ it "uninstalls all versions of a gem" do
161
+ uninstaller = double("gem uninstaller")
162
+ expect(uninstaller).to receive(:uninstall)
163
+ expect(@gem_env).to receive(:uninstaller).with("rspec", all: true).and_return(uninstaller)
164
+ @gem_env.uninstall("rspec")
165
+ end
166
+
167
+ it "uninstalls a specific version of a gem" do
168
+ uninstaller = double("gem uninstaller")
169
+ expect(uninstaller).to receive(:uninstall)
170
+ expect(@gem_env).to receive(:uninstaller).with("rspec", version: "1.2.3").and_return(uninstaller)
171
+ @gem_env.uninstall("rspec", "1.2.3")
172
+ end
173
+
174
+ end
175
+
176
+ describe Chef::Provider::Package::Rubygems::AlternateGemEnvironment do
177
+ include GemspecBackcompatCreator
178
+
179
+ before do
180
+ Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache.clear
181
+ Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache.clear
182
+ @gem_env = Chef::Provider::Package::Rubygems::AlternateGemEnvironment.new("/usr/weird/bin/gem")
183
+ end
184
+
185
+ it "determines the gem paths from shelling out to gem env" do
186
+ gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
187
+ shell_out_result = OpenStruct.new(stdout: gem_env_output)
188
+ expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
189
+ expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
190
+ end
191
+
192
+ it "caches the gempaths by gem_binary" do
193
+ gem_env_output = ["/path/to/gems", "/another/path/to/gems"].join(File::PATH_SEPARATOR)
194
+ shell_out_result = OpenStruct.new(stdout: gem_env_output)
195
+ expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env gempath").and_return(shell_out_result)
196
+ expected = ["/path/to/gems", "/another/path/to/gems"]
197
+ expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
198
+ expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache["/usr/weird/bin/gem"]).to eq(expected)
199
+ end
200
+
201
+ it "uses the cached result for gem paths when available" do
202
+ expect(@gem_env).not_to receive(:shell_out!)
203
+ expected = ["/path/to/gems", "/another/path/to/gems"]
204
+ Chef::Provider::Package::Rubygems::AlternateGemEnvironment.gempath_cache["/usr/weird/bin/gem"] = expected
205
+ expect(@gem_env.gem_paths).to eq(["/path/to/gems", "/another/path/to/gems"])
206
+ end
207
+
208
+ it "builds the gems source index from the gem paths" do
209
+ allow(@gem_env).to receive(:gem_paths).and_return(["/path/to/gems", "/another/path/to/gems"])
210
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
211
+ @gem_env.gem_specification
212
+ expect(Gem::Specification.dirs).to eq([ "/path/to/gems/specifications", "/another/path/to/gems/specifications" ])
213
+ else
214
+ expect(Gem::SourceIndex).to receive(:from_gems_in).with("/path/to/gems/specifications", "/another/path/to/gems/specifications")
215
+ @gem_env.gem_source_index
216
+ end
217
+ end
218
+
219
+ it "determines the installed versions of gems from the source index" do
220
+ gems = [gemspec("rspec", Gem::Version.new("1.2.9")), gemspec("rspec", Gem::Version.new("1.3.0"))]
221
+ rspec_dep = Gem::Dependency.new("rspec", nil)
222
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new("1.8.0")
223
+ allow(@gem_env).to receive(:gem_specification).and_return(Gem::Specification)
224
+ expect(@gem_env.gem_specification).to receive(:find_all_by_name).with(rspec_dep.name, rspec_dep.requirement).and_return(gems)
225
+ else
226
+ allow(@gem_env).to receive(:gem_source_index).and_return(Gem.source_index)
227
+ expect(@gem_env.gem_source_index).to receive(:search).with(rspec_dep).and_return(gems)
228
+ end
229
+ expect(@gem_env.installed_versions(Gem::Dependency.new("rspec", nil))).to eq(gems)
230
+ end
231
+
232
+ it "determines the installed versions of gems from the source index (part2: the unmockening)" do
233
+ allow($stdout).to receive(:write)
234
+ path_to_gem = if windows?
235
+ `where gem`.split[1]
236
+ else
237
+ `which gem`.strip
238
+ end
239
+ skip("cant find your gem executable") if path_to_gem.empty?
240
+ gem_env = Chef::Provider::Package::Rubygems::AlternateGemEnvironment.new(path_to_gem)
241
+ expected = ["rspec-core", Gem::Version.new(RSpec::Core::Version::STRING)]
242
+ actual = gem_env.installed_versions(Gem::Dependency.new("rspec-core", nil)).map { |s| [s.name, s.version] }
243
+ expect(actual).to include(expected)
244
+ end
245
+
246
+ it "detects when the target gem environment is the jruby platform" do
247
+ gem_env_out = <<-JRUBY_GEM_ENV
248
+ RubyGems Environment:
249
+ - RUBYGEMS VERSION: 1.3.6
250
+ - RUBY VERSION: 1.8.7 (2010-05-12 patchlevel 249) [java]
251
+ - INSTALLATION DIRECTORY: /Users/you/.rvm/gems/jruby-1.5.0
252
+ - RUBY EXECUTABLE: /Users/you/.rvm/rubies/jruby-1.5.0/bin/jruby
253
+ - EXECUTABLE DIRECTORY: /Users/you/.rvm/gems/jruby-1.5.0/bin
254
+ - RUBYGEMS PLATFORMS:
255
+ - ruby
256
+ - universal-java-1.6
257
+ - GEM PATHS:
258
+ - /Users/you/.rvm/gems/jruby-1.5.0
259
+ - /Users/you/.rvm/gems/jruby-1.5.0@global
260
+ - GEM CONFIGURATION:
261
+ - :update_sources => true
262
+ - :verbose => true
263
+ - :benchmark => false
264
+ - :backtrace => false
265
+ - :bulk_threshold => 1000
266
+ - "install" => "--env-shebang"
267
+ - "update" => "--env-shebang"
268
+ - "gem" => "--no-rdoc --no-ri"
269
+ - :sources => ["https://rubygems.org/", "http://gems.github.com/"]
270
+ - REMOTE SOURCES:
271
+ - https://rubygems.org/
272
+ - http://gems.github.com/
273
+ JRUBY_GEM_ENV
274
+ expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("jruby_gem_env", stdout: gem_env_out))
275
+ expected = ["ruby", Gem::Platform.new("universal-java-1.6")]
276
+ expect(@gem_env.gem_platforms).to eq(expected)
277
+ # it should also cache the result
278
+ expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"]).to eq(expected)
279
+ end
280
+
281
+ it "uses the cached result for gem platforms if available" do
282
+ expect(@gem_env).not_to receive(:shell_out!)
283
+ expected = ["ruby", Gem::Platform.new("universal-java-1.6")]
284
+ Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"] = expected
285
+ expect(@gem_env.gem_platforms).to eq(expected)
286
+ end
287
+
288
+ it "uses the current gem platforms when the target env is not jruby" do
289
+ gem_env_out = <<-RBX_GEM_ENV
290
+ RubyGems Environment:
291
+ - RUBYGEMS VERSION: 1.3.6
292
+ - RUBY VERSION: 1.8.7 (2010-05-14 patchlevel 174) [x86_64-apple-darwin10.3.0]
293
+ - INSTALLATION DIRECTORY: /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514
294
+ - RUBYGEMS PREFIX: /Users/ddeleo/.rvm/rubies/rbx-1.0.0-20100514
295
+ - RUBY EXECUTABLE: /Users/ddeleo/.rvm/rubies/rbx-1.0.0-20100514/bin/rbx
296
+ - EXECUTABLE DIRECTORY: /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514/bin
297
+ - RUBYGEMS PLATFORMS:
298
+ - ruby
299
+ - x86_64-darwin-10
300
+ - x86_64-rubinius-1.0
301
+ - GEM PATHS:
302
+ - /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514
303
+ - /Users/ddeleo/.rvm/gems/rbx-1.0.0-20100514@global
304
+ - GEM CONFIGURATION:
305
+ - :update_sources => true
306
+ - :verbose => true
307
+ - :benchmark => false
308
+ - :backtrace => false
309
+ - :bulk_threshold => 1000
310
+ - :sources => ["https://rubygems.org/", "http://gems.github.com/"]
311
+ - "gem" => "--no-rdoc --no-ri"
312
+ - REMOTE SOURCES:
313
+ - https://rubygems.org/
314
+ - http://gems.github.com/
315
+ RBX_GEM_ENV
316
+ expect(@gem_env).to receive(:shell_out!).with("/usr/weird/bin/gem env").and_return(double("rbx_gem_env", stdout: gem_env_out))
317
+ expect(@gem_env.gem_platforms).to eq(Gem.platforms)
318
+ expect(Chef::Provider::Package::Rubygems::AlternateGemEnvironment.platform_cache["/usr/weird/bin/gem"]).to eq(Gem.platforms)
319
+ end
320
+
321
+ it "yields to a block while masquerading as a different gems platform" do
322
+ original_platforms = Gem.platforms
323
+ platforms_in_block = nil
324
+ begin
325
+ @gem_env.with_gem_platforms(["ruby", Gem::Platform.new("sparc64-java-1.7")]) do
326
+ platforms_in_block = Gem.platforms
327
+ raise "gem platforms should get set to the correct value even when an error occurs"
328
+ end
329
+ rescue RuntimeError
330
+ end
331
+ expect(platforms_in_block).to eq(["ruby", Gem::Platform.new("sparc64-java-1.7")])
332
+ expect(Gem.platforms).to eq(original_platforms)
333
+ end
334
+
335
+ end
336
+
337
+ describe Chef::Provider::Package::Rubygems do
338
+ let(:target_version) { nil }
339
+ let(:gem_name) { "rspec-core" }
340
+ let(:gem_binary) { nil }
341
+ let(:bindir) { "/usr/bin" }
342
+ let(:options) { nil }
343
+ let(:source) { nil }
344
+ let(:include_default_source) { true }
345
+
346
+ let(:new_resource) do
347
+ new_resource = Chef::Resource::GemPackage.new(gem_name)
348
+ new_resource.version(target_version)
349
+ new_resource.gem_binary(gem_binary) if gem_binary
350
+ new_resource.options(options) if options
351
+ new_resource.source(source) if source
352
+ new_resource.include_default_source(include_default_source)
353
+ new_resource
354
+ end
355
+
356
+ let(:current_resource) { nil }
357
+
358
+ let(:provider) do
359
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
360
+ provider = Chef::Provider::Package::Rubygems.new(new_resource, run_context)
361
+ if current_resource
362
+ allow(provider).to receive(:load_current_resource)
363
+ provider.current_resource = current_resource
364
+ end
365
+ provider
366
+ end
367
+
368
+ let(:gem_dep) { Gem::Dependency.new(gem_name, target_version) }
369
+
370
+ before(:each) do
371
+ # We choose detect omnibus via RbConfig::CONFIG['bindir'] in Chef::Provider::Package::Rubygems.new
372
+ allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(bindir)
373
+ # Rubygems uses this interally
374
+ allow(RbConfig::CONFIG).to receive(:[]).with("arch").and_call_original
375
+ allow(File).to receive(:executable?).and_return false
376
+ allow(File).to receive(:executable?).with("#{bindir}/gem").and_return true
377
+ end
378
+
379
+ describe "when new_resource version is nil" do
380
+ let(:target_version) { nil }
381
+
382
+ it "target_version_already_installed? should return false so that we can search for candidates" do
383
+ provider.load_current_resource
384
+ expect(provider.target_version_already_installed?(provider.current_resource.version, new_resource.version)).to be_falsey
385
+ end
386
+
387
+ it "version_equals? should return false so that we can search for candidates" do
388
+ provider.load_current_resource
389
+ expect(provider.version_equals?(provider.current_resource.version, new_resource.version)).to be_falsey
390
+ end
391
+ end
392
+
393
+ describe "when new_resource version is an rspec version" do
394
+ let(:current_version) { RSpec::Core::Version::STRING }
395
+ let(:target_version) { current_version }
396
+
397
+ it "triggers a gem configuration load so a later one will not stomp its config values" do
398
+ _ = provider
399
+ # ugly, is there a better way?
400
+ expect(Gem.instance_variable_get(:@configuration)).not_to be_nil
401
+ end
402
+
403
+ it "uses the CurrentGemEnvironment implementation when no gem_binary_path is provided" do
404
+ expect(provider.gem_env).to be_a_kind_of(Chef::Provider::Package::Rubygems::CurrentGemEnvironment)
405
+ end
406
+
407
+ context "when a gem_binary_path is provided" do
408
+ let(:gem_binary) { "/usr/weird/bin/gem" }
409
+
410
+ it "uses the AlternateGemEnvironment implementation when a gem_binary_path is provided" do
411
+ expect(provider.gem_env.gem_binary_location).to eq(gem_binary)
412
+ end
413
+
414
+ context "when you try to use a hash of install options" do
415
+ let(:options) { { fail: :burger } }
416
+
417
+ it "smites you" do
418
+ expect { provider }.to raise_error(ArgumentError)
419
+ end
420
+ end
421
+ end
422
+
423
+ context "when in omnibus opscode" do
424
+ let(:bindir) { "/opt/opscode/embedded/bin" }
425
+
426
+ it "recognizes opscode as omnibus" do
427
+ expect(provider.is_omnibus?).to be true
428
+ end
429
+ end
430
+
431
+ context "when in omnibus chefdk" do
432
+ let(:bindir) { "/opt/chefdk/embedded/bin" }
433
+
434
+ it "recognizes chefdk as omnibus" do
435
+ expect(provider.is_omnibus?).to be true
436
+ end
437
+ end
438
+
439
+ context "when in omnibus chef" do
440
+ let(:bindir) { "/opt/chef/embedded/bin" }
441
+
442
+ it "recognizes chef as omnibus" do
443
+ expect(provider.is_omnibus?).to be true
444
+ end
445
+
446
+ it "searches for a gem binary when running on Omnibus on Unix" do
447
+ platform_mock :unix do
448
+ allow(ENV).to receive(:[]).with("PATH").and_return("/usr/bin:/usr/sbin:/opt/chef/embedded/bin")
449
+ allow(File).to receive(:executable?).with("/usr/bin/gem").and_return(false)
450
+ allow(File).to receive(:executable?).with("/usr/sbin/gem").and_return(true)
451
+ allow(File).to receive(:executable?).with("/opt/chef/embedded/bin/gem").and_return(true) # should not get here
452
+ expect(provider.gem_env.gem_binary_location).to eq("/usr/sbin/gem")
453
+ end
454
+ end
455
+
456
+ context "when on Windows" do
457
+ let(:bindir) { "d:/opscode/chef/embedded/bin" }
458
+
459
+ it "searches for a gem binary when running on Omnibus on Windows" do
460
+ platform_mock :windows do
461
+ allow(ENV).to receive(:[]).with("PATH").and_return('C:\windows\system32;C:\windows;C:\Ruby186\bin')
462
+ allow(File).to receive(:executable?).with('C:\\windows\\system32/gem').and_return(false)
463
+ allow(File).to receive(:executable?).with('C:\\windows/gem').and_return(false)
464
+ allow(File).to receive(:executable?).with('C:\\Ruby186\\bin/gem').and_return(true)
465
+ allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
466
+ allow(File).to receive(:executable?).with('d:\\opscode\\chef\\bin/gem').and_return(false) # should not get here
467
+ allow(File).to receive(:executable?).with("d:/opscode/chef/embedded/bin/gem").and_return(false) # should not get here
468
+ expect(provider.gem_env.gem_binary_location).to eq('C:\Ruby186\bin/gem')
469
+ end
470
+ end
471
+ end
472
+ end
473
+
474
+ it "converts the new resource into a gem dependency" do
475
+ expect(provider.gem_dependency).to eq(gem_dep)
476
+ end
477
+
478
+ context "when the new resource is not the current version" do
479
+ let(:target_version) { "~> 9000.0.2" }
480
+
481
+ it "converts the new resource into a gem dependency" do
482
+ expect(provider.gem_dependency).to eq(gem_dep)
483
+ end
484
+ end
485
+
486
+ describe "when determining the currently installed version" do
487
+ before do
488
+ provider.load_current_resource
489
+ end
490
+
491
+ it "sets the current version to the version specified by the new resource if that version is installed" do
492
+ expect(provider.current_resource.version).to eq(current_version)
493
+ end
494
+
495
+ context "if the requested version is not installed" do
496
+ let(:target_version) { "9000.0.2" }
497
+
498
+ it "sets the current version to the highest installed version if the requested version is not installed" do
499
+ expect(provider.current_resource.version).to eq(current_version)
500
+ end
501
+ end
502
+
503
+ context "if the package is not currently installed" do
504
+ let(:gem_name) { "no-such-gem-should-exist-with-this-name" }
505
+
506
+ it "leaves the current version at nil" do
507
+ expect(provider.current_resource.version).to be_nil
508
+ end
509
+ end
510
+
511
+ end
512
+
513
+ describe "when determining the candidate version to install" do
514
+ before do
515
+ provider.load_current_resource
516
+ end
517
+
518
+ context "when the current version is the target version" do
519
+ it "does not query for available versions" do
520
+ # NOTE: odd use case -- we've equality pinned a version, but are calling :upgrade
521
+ expect(provider.gem_env).not_to receive(:candidate_version_from_remote)
522
+ expect(provider.gem_env).not_to receive(:install)
523
+ provider.run_action(:upgrade)
524
+ expect(new_resource).not_to be_updated_by_last_action
525
+ end
526
+ end
527
+
528
+ context "when the current version satisfies the target version requirement" do
529
+ let(:target_version) { ">= 0" }
530
+
531
+ it "does not query for available versions on install" do
532
+ expect(provider.gem_env).not_to receive(:candidate_version_from_remote)
533
+ expect(provider.gem_env).not_to receive(:install)
534
+ provider.run_action(:install)
535
+ expect(new_resource).not_to be_updated_by_last_action
536
+ end
537
+
538
+ it "queries for available versions on upgrade" do
539
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
540
+ .and_return(Gem::Version.new("9000.0.2"))
541
+ expect(provider.gem_env).to receive(:install)
542
+ provider.run_action(:upgrade)
543
+ expect(new_resource).to be_updated_by_last_action
544
+ end
545
+ end
546
+
547
+ context "when the source is from the rubygems_url" do
548
+ it "determines the candidate version by querying the remote gem servers" do
549
+ Chef::Config[:rubygems_url] = "https://mirror1/"
550
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
551
+ .with(gem_dep, "https://mirror1/")
552
+ .and_return(Gem::Version.new(target_version))
553
+ expect(provider.candidate_version).to eq(target_version)
554
+ end
555
+ end
556
+
557
+ context "when the requested source is a remote server" do
558
+ let(:source) { "http://mygems.example.com" }
559
+
560
+ it "determines the candidate version by querying the remote gem servers" do
561
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
562
+ .with(gem_dep, source, Chef::Config[:rubygems_url])
563
+ .and_return(Gem::Version.new(target_version))
564
+ expect(provider.candidate_version).to eq(target_version)
565
+ end
566
+
567
+ it "overwrites the config variable" do
568
+ new_resource.include_default_source false
569
+ Chef::Config[:rubygems_url] = "https://overridden"
570
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
571
+ .with(gem_dep, source)
572
+ .and_return(Gem::Version.new(target_version))
573
+ expect(provider.candidate_version).to eq(target_version)
574
+ end
575
+ end
576
+
577
+ context "when the requested source is an array" do
578
+ let(:source) { [ "https://mirror1", "https://mirror2" ] }
579
+
580
+ it "determines the candidate version by querying the remote gem servers" do
581
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
582
+ .with(gem_dep, *[source, Chef::Config[:rubygems_url] ].flatten)
583
+ .and_return(Gem::Version.new(target_version))
584
+ expect(provider.candidate_version).to eq(target_version)
585
+ end
586
+
587
+ it "overwrites the config variable" do
588
+ new_resource.include_default_source false
589
+ Chef::Config[:rubygems_url] = "https://overridden"
590
+ expect(provider.gem_env).to receive(:candidate_version_from_remote)
591
+ .with(gem_dep, *source)
592
+ .and_return(Gem::Version.new(target_version))
593
+ expect(provider.candidate_version).to eq(target_version)
594
+ end
595
+ end
596
+
597
+ context "when the requested source is a file" do
598
+ let(:gem_name) { "chef-integration-test" }
599
+ let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
600
+ let(:target_version) { ">= 0" }
601
+
602
+ it "parses the gem's specification" do
603
+ expect(provider.candidate_version).to eq("0.1.0")
604
+ end
605
+ end
606
+ end
607
+
608
+ describe "when installing a gem" do
609
+ let(:target_version) { "9000.0.2" }
610
+ let(:current_version) { nil }
611
+ let(:candidate_version) { "9000.0.2" }
612
+ let(:current_resource) do
613
+ current_resource = Chef::Resource::GemPackage.new(gem_name)
614
+ current_resource.version(current_version)
615
+ current_resource
616
+ end
617
+
618
+ let(:version) { Gem::Version.new(candidate_version) }
619
+
620
+ before do
621
+ expected_source = [ source ]
622
+ expected_source << Chef::Config[:rubygems_url] if include_default_source
623
+ allow(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, *expected_source.flatten.compact).and_return(version)
624
+ end
625
+
626
+ describe "in the current gem environment" do
627
+ it "installs the gem via the gems api when no explicit options are used" do
628
+ expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
629
+ provider.run_action(:install)
630
+ expect(new_resource).to be_updated_by_last_action
631
+ end
632
+
633
+ context "when a remote source is provided" do
634
+ let(:source) { "http://gems.example.org" }
635
+
636
+ it "installs the gem via the gems api" do
637
+ expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [source, Chef::Config[:rubygems_url]])
638
+ provider.run_action(:install)
639
+ expect(new_resource).to be_updated_by_last_action
640
+ end
641
+ end
642
+
643
+ context "when source is a path" do
644
+ let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
645
+
646
+ it "installs the gem from file via the gems api" do
647
+ expect(provider.gem_env).to receive(:install).with(source)
648
+ provider.run_action(:install)
649
+ expect(new_resource).to be_updated_by_last_action
650
+ end
651
+ end
652
+
653
+ context "when the gem name is a file path and source is nil" do
654
+ let(:gem_name) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
655
+
656
+ it "installs the gem from file via the gems api" do
657
+ expect(new_resource.source).to eq(gem_name)
658
+ expect(provider.gem_env).to receive(:install).with(gem_name)
659
+ provider.run_action(:install)
660
+ expect(new_resource).to be_updated_by_last_action
661
+ end
662
+ end
663
+
664
+ # this catches 'gem_package "foo"' when "./foo" is a file in the cwd, and instead of installing './foo' it fetches the remote gem
665
+ it "installs the gem via the gems api, when the package has no file separator characters in it, but a matching file exists in cwd" do
666
+ allow(::File).to receive(:exist?).and_return(true)
667
+ new_resource.package_name("rspec-core")
668
+ expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ])
669
+ provider.run_action(:install)
670
+ expect(new_resource).to be_updated_by_last_action
671
+ end
672
+
673
+ context "when options are provided as a String" do
674
+ let(:options) { "-i /alt/install/location" }
675
+
676
+ it "installs the gem by shelling out when options are provided as a String" do
677
+ expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org #{options}"
678
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
679
+ provider.run_action(:install)
680
+ expect(new_resource).to be_updated_by_last_action
681
+ end
682
+ end
683
+
684
+ context "when the Chef::Config[:rubygems_url] option is provided" do
685
+ let(:gem_binary) { "/foo/bar" }
686
+
687
+ it "installs the gem with rubygems.org as an added source" do
688
+ Chef::Config[:rubygems_url] = "https://mirror1"
689
+ expect(provider.gem_env).to receive(:candidate_version_from_remote).with(gem_dep, Chef::Config[:rubygems_url]).and_return(version)
690
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1"
691
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
692
+ provider.run_action(:install)
693
+ expect(new_resource).to be_updated_by_last_action
694
+ end
695
+ end
696
+
697
+ context "when another source and binary are provided" do
698
+ let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
699
+ let(:gem_binary) { "/foo/bar" }
700
+
701
+ it "installs the gem with rubygems.org as an added source" do
702
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source} --source=https://www.rubygems.org"
703
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
704
+ provider.run_action(:install)
705
+ expect(new_resource).to be_updated_by_last_action
706
+ end
707
+
708
+ context "with include_default_source false" do
709
+ let(:include_default_source) { false }
710
+
711
+ it "ignores the Chef::Config setting" do
712
+ Chef::Config[:rubygems_url] = "https://ignored"
713
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=#{source}"
714
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
715
+ provider.run_action(:install)
716
+ expect(new_resource).to be_updated_by_last_action
717
+ end
718
+ end
719
+ end
720
+
721
+ context "when the source is an array" do
722
+ let(:source) { [ "https://mirror1" , "https://mirror2" ] }
723
+ let(:gem_binary) { "/foo/bar" }
724
+
725
+ it "installs the gem with an array as an added source" do
726
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2 --source=https://www.rubygems.org"
727
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
728
+ provider.run_action(:install)
729
+ expect(new_resource).to be_updated_by_last_action
730
+ end
731
+
732
+ context "with include_default_source false" do
733
+ let(:include_default_source) { false }
734
+
735
+ it "ignores the Chef::Config setting" do
736
+ Chef::Config[:rubygems_url] = "https://ignored"
737
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://mirror1 --source=https://mirror2"
738
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
739
+ provider.run_action(:install)
740
+ expect(new_resource).to be_updated_by_last_action
741
+ end
742
+ end
743
+ end
744
+
745
+ context "when we have cleared sources and an explict source is specified" do
746
+ let(:gem_binary) { "/foo/bar" }
747
+ let(:source) { "http://mirror.ops.rhcloud.com/mirror/ruby" }
748
+
749
+ it "installs the gem" do
750
+ new_resource.clear_sources(true)
751
+ expected = "#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --clear-sources --source=#{source} --source=https://www.rubygems.org"
752
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
753
+ provider.run_action(:install)
754
+ expect(new_resource).to be_updated_by_last_action
755
+ end
756
+ end
757
+
758
+ context "when no version is given" do
759
+ let(:target_version) { nil }
760
+ let(:options) { "-i /alt/install/location" }
761
+
762
+ it "installs the gem by shelling out when options are provided but no version is given" do
763
+ expected = "gem install rspec-core -q --no-rdoc --no-ri -v \"#{candidate_version}\" --source=https://www.rubygems.org #{options}"
764
+ expect(provider).to receive(:shell_out!).with(expected, env: nil, timeout: 900)
765
+ provider.run_action(:install)
766
+ expect(new_resource).to be_updated_by_last_action
767
+ end
768
+ end
769
+
770
+ context "when options are given as a Hash" do
771
+ let(:options) { { install_dir: "/alt/install/location" } }
772
+
773
+ it "installs the gem via the gems api when options are given as a Hash" do
774
+ expect(provider.gem_env).to receive(:install).with(gem_dep, { sources: [ Chef::Config[:rubygems_url] ] }.merge(options))
775
+ provider.run_action(:install)
776
+ expect(new_resource).to be_updated_by_last_action
777
+ end
778
+ end
779
+
780
+ describe "at a specific version" do
781
+ let(:target_version) { "9000.0.2" }
782
+
783
+ it "installs the gem via the gems api" do
784
+ expect(provider.gem_env).to receive(:install).with(gem_dep, sources: [ Chef::Config[:rubygems_url] ] )
785
+ provider.run_action(:install)
786
+ expect(new_resource).to be_updated_by_last_action
787
+ end
788
+ end
789
+
790
+ describe "at version specified with comparison operator" do
791
+ context "if current version satisifies requested version" do
792
+ let(:target_version) { ">=2.3.0" }
793
+ let(:current_version) { "2.3.3" }
794
+
795
+ it "skips the install" do
796
+ expect(provider.gem_env).not_to receive(:install)
797
+ provider.run_action(:install)
798
+ end
799
+
800
+ it "performs the upgrade" do
801
+ expect(provider.gem_env).to receive(:install)
802
+ provider.run_action(:upgrade)
803
+ end
804
+ end
805
+
806
+ context "if the fuzzy operator is used" do
807
+ let(:target_version) { "~>2.3.0" }
808
+ let(:current_version) { "2.3.3" }
809
+
810
+ it "it matches an existing gem" do
811
+ expect(provider.gem_env).not_to receive(:install)
812
+ provider.run_action(:install)
813
+ end
814
+
815
+ it "it upgrades an existing gem" do
816
+ expect(provider.gem_env).to receive(:install)
817
+ provider.run_action(:upgrade)
818
+ end
819
+ end
820
+ end
821
+ end
822
+
823
+ describe "in an alternate gem environment" do
824
+ let(:gem_binary) { "/usr/weird/bin/gem" }
825
+
826
+ it "installs the gem by shelling out to gem install" do
827
+ expect(provider).to receive(:shell_out!).with("#{gem_binary} install rspec-core -q --no-rdoc --no-ri -v \"#{target_version}\" --source=https://www.rubygems.org", env: nil, timeout: 900)
828
+ provider.run_action(:install)
829
+ expect(new_resource).to be_updated_by_last_action
830
+ end
831
+
832
+ context "when source is a path" do
833
+ let(:source) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
834
+ let(:target_version) { ">= 0" }
835
+
836
+ it "installs the gem by shelling out to gem install" do
837
+ expect(provider).to receive(:shell_out!).with("#{gem_binary} install #{source} -q --no-rdoc --no-ri -v \"#{target_version}\"", env: nil, timeout: 900)
838
+ provider.run_action(:install)
839
+ expect(new_resource).to be_updated_by_last_action
840
+ end
841
+ end
842
+
843
+ context "when the package is a path and source is nil" do
844
+ let(:gem_name) { CHEF_SPEC_DATA + "/gems/chef-integration-test-0.1.0.gem" }
845
+ let(:target_version) { ">= 0" }
846
+
847
+ it "installs the gem from file by shelling out to gem install when the package is a path and the source is nil" do
848
+ expect(new_resource.source).to eq(gem_name)
849
+ expect(provider).to receive(:shell_out!).with("#{gem_binary} install #{gem_name} -q --no-rdoc --no-ri -v \"#{target_version}\"", env: nil, timeout: 900)
850
+ provider.run_action(:install)
851
+ expect(new_resource).to be_updated_by_last_action
852
+ end
853
+ end
854
+ end
855
+
856
+ end
857
+
858
+ describe "when uninstalling a gem" do
859
+ let(:gem_name) { "rspec" }
860
+ let(:current_version) { "1.2.3" }
861
+ let(:target_version) { nil }
862
+
863
+ let(:current_resource) do
864
+ current_resource = Chef::Resource::GemPackage.new(gem_name)
865
+ current_resource.version(current_version)
866
+ current_resource
867
+ end
868
+
869
+ describe "in the current gem environment" do
870
+ it "uninstalls via the api when no explicit options are used" do
871
+ # pre-reqs for action_remove to actually remove the package:
872
+ expect(provider.new_resource.version).to be_nil
873
+ expect(provider.current_resource.version).not_to be_nil
874
+ # the behavior we're testing:
875
+ expect(provider.gem_env).to receive(:uninstall).with("rspec", nil)
876
+ provider.action_remove
877
+ end
878
+
879
+ context "when options are given as a Hash" do
880
+ let(:options) { { install_dir: "/alt/install/location" } }
881
+
882
+ it "uninstalls via the api" do
883
+ # pre-reqs for action_remove to actually remove the package:
884
+ expect(provider.new_resource.version).to be_nil
885
+ expect(provider.current_resource.version).not_to be_nil
886
+ # the behavior we're testing:
887
+ expect(provider.gem_env).to receive(:uninstall).with("rspec", nil, options)
888
+ provider.action_remove
889
+ end
890
+ end
891
+
892
+ context "when options are given as a String" do
893
+ let(:options) { "-i /alt/install/location" }
894
+
895
+ it "uninstalls via the gem command" do
896
+ expect(provider).to receive(:shell_out!).with("gem uninstall rspec -q -x -I -a #{options}", env: nil, timeout: 900)
897
+ provider.action_remove
898
+ end
899
+ end
900
+
901
+ context "when a version is provided" do
902
+ let(:target_version) { "1.2.3" }
903
+
904
+ it "uninstalls a specific version of a gem" do
905
+ expect(provider.gem_env).to receive(:uninstall).with("rspec", "1.2.3")
906
+ provider.action_remove
907
+ end
908
+ end
909
+ end
910
+
911
+ describe "in an alternate gem environment" do
912
+ let(:gem_binary) { "/usr/weird/bin/gem" }
913
+
914
+ it "uninstalls via the gem command" do
915
+ expect(provider).to receive(:shell_out!).with("#{gem_binary} uninstall rspec -q -x -I -a", env: nil, timeout: 900)
916
+ provider.action_remove
917
+ end
918
+ end
919
+ end
920
+ end
921
+ end