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,111 +1,111 @@
1
- #
2
- # Author:: John Keiser (<jkeiser@chef.io>)
3
- # Copyright:: Copyright 2013-2016, Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- require "support/shared/integration/integration_helper"
19
- require "chef/mixin/shell_out"
20
-
21
- describe "notifying_block" do
22
- include IntegrationSupport
23
- include Chef::Mixin::ShellOut
24
-
25
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
26
- let(:chef_client) { "ruby '#{chef_dir}/chef-client' --minimal-ohai" }
27
-
28
- when_the_repository "notifying_block test one" do
29
- before do
30
- directory "cookbooks/x" do
31
- file "recipes/default.rb", <<-EOM
32
- notifying_block do
33
- log "gamma" do
34
- action :nothing
35
- end
36
- log "alpha" do
37
- notifies :write, "log[gamma]", :delayed
38
- end
39
- log "beta" do
40
- notifies :write, "log[gamma]", :delayed
41
- end
42
- end
43
- log "delta"
44
- EOM
45
- end
46
- file "config/client.rb", <<-EOM
47
- local_mode true
48
- cookbook_path "#{path_to('cookbooks')}"
49
- log_level :warn
50
- EOM
51
- end
52
-
53
- # implicitly tests -
54
- # 1. notifying block opens up a subcontext
55
- # 2. delayed notifications are de-dup'd in the subcontext
56
- # 3. delayed notifications (to resources inside the subcontext) are run at the end of the subcontext
57
- it "should run alpha, beta, gamma, and delta in that order" do
58
- result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", :cwd => chef_dir)
59
- expect(result.stdout).to match(/\* log\[alpha\] action write\s+\* log\[beta\] action write\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
60
- result.error!
61
- end
62
- end
63
-
64
- when_the_repository "notifying_block test two" do
65
- before do
66
- directory "cookbooks/x" do
67
- file "resources/nb_test.rb", <<-EOM
68
- default_action :run
69
- provides :nb_test
70
- resource_name :nb_test
71
-
72
- action :run do
73
- notifying_block do
74
- log "foo" do
75
- notifies :write, 'log[bar]', :delayed
76
- end
77
- end
78
- end
79
- EOM
80
- file "recipes/default.rb", <<-EOM
81
- log "bar" do
82
- action :nothing
83
- end
84
- log "baz" do
85
- action :nothing
86
- end
87
-
88
- nb_test "testing" do
89
- notifies :write, 'log[baz]', :delayed
90
- end
91
-
92
- log "quux"
93
- EOM
94
- end
95
- file "config/client.rb", <<-EOM
96
- local_mode true
97
- cookbook_path "#{path_to('cookbooks')}"
98
- log_level :warn
99
- EOM
100
- end
101
-
102
- # implicitly tests -
103
- # 1. notifying block will correctly update wrapping new_resource updated_by_last_action status
104
- # 2. delayed notifications from a subcontext inside a resource will notify resources in their outer run_context
105
- it "should run foo, quux, bar, and baz in that order" do
106
- result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", :cwd => chef_dir)
107
- expect(result.stdout).to match(/\* log\[foo\] action write\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
108
- result.error!
109
- end
110
- end
111
- end
1
+ #
2
+ # Author:: John Keiser (<jkeiser@chef.io>)
3
+ # Copyright:: Copyright 2013-2016, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require "support/shared/integration/integration_helper"
19
+ require "chef/mixin/shell_out"
20
+
21
+ describe "notifying_block" do
22
+ include IntegrationSupport
23
+ include Chef::Mixin::ShellOut
24
+
25
+ let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
26
+ let(:chef_client) { "ruby '#{chef_dir}/chef-client' --minimal-ohai" }
27
+
28
+ when_the_repository "notifying_block test one" do
29
+ before do
30
+ directory "cookbooks/x" do
31
+ file "recipes/default.rb", <<-EOM
32
+ notifying_block do
33
+ log "gamma" do
34
+ action :nothing
35
+ end
36
+ log "alpha" do
37
+ notifies :write, "log[gamma]", :delayed
38
+ end
39
+ log "beta" do
40
+ notifies :write, "log[gamma]", :delayed
41
+ end
42
+ end
43
+ log "delta"
44
+ EOM
45
+ end
46
+ file "config/client.rb", <<-EOM
47
+ local_mode true
48
+ cookbook_path "#{path_to('cookbooks')}"
49
+ log_level :warn
50
+ EOM
51
+ end
52
+
53
+ # implicitly tests -
54
+ # 1. notifying block opens up a subcontext
55
+ # 2. delayed notifications are de-dup'd in the subcontext
56
+ # 3. delayed notifications (to resources inside the subcontext) are run at the end of the subcontext
57
+ it "should run alpha, beta, gamma, and delta in that order" do
58
+ result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", :cwd => chef_dir)
59
+ expect(result.stdout).to match(/\* log\[alpha\] action write\s+\* log\[beta\] action write\s+\* log\[gamma\] action write\s+Converging 1 resources\s+\* log\[delta\] action write/)
60
+ result.error!
61
+ end
62
+ end
63
+
64
+ when_the_repository "notifying_block test two" do
65
+ before do
66
+ directory "cookbooks/x" do
67
+ file "resources/nb_test.rb", <<-EOM
68
+ default_action :run
69
+ provides :nb_test
70
+ resource_name :nb_test
71
+
72
+ action :run do
73
+ notifying_block do
74
+ log "foo" do
75
+ notifies :write, 'log[bar]', :delayed
76
+ end
77
+ end
78
+ end
79
+ EOM
80
+ file "recipes/default.rb", <<-EOM
81
+ log "bar" do
82
+ action :nothing
83
+ end
84
+ log "baz" do
85
+ action :nothing
86
+ end
87
+
88
+ nb_test "testing" do
89
+ notifies :write, 'log[baz]', :delayed
90
+ end
91
+
92
+ log "quux"
93
+ EOM
94
+ end
95
+ file "config/client.rb", <<-EOM
96
+ local_mode true
97
+ cookbook_path "#{path_to('cookbooks')}"
98
+ log_level :warn
99
+ EOM
100
+ end
101
+
102
+ # implicitly tests -
103
+ # 1. notifying block will correctly update wrapping new_resource updated_by_last_action status
104
+ # 2. delayed notifications from a subcontext inside a resource will notify resources in their outer run_context
105
+ it "should run foo, quux, bar, and baz in that order" do
106
+ result = shell_out("#{chef_client} -c \"#{path_to('config/client.rb')}\" --no-color -F doc -o 'x::default'", :cwd => chef_dir)
107
+ expect(result.stdout).to match(/\* log\[foo\] action write\s+\* log\[quux\] action write\s+\* log\[bar\] action write\s+\* log\[baz\] action write/)
108
+ result.error!
109
+ end
110
+ end
111
+ end
@@ -1,37 +1,37 @@
1
- require "support/shared/integration/integration_helper"
2
-
3
- describe "Recipe DSL methods" do
4
- include IntegrationSupport
5
-
6
- context "With resource class providing 'provider_thingy'" do
7
- before :context do
8
- class Chef::Resource::ProviderThingy < Chef::Resource
9
- resource_name :provider_thingy
10
- default_action :create
11
- def to_s
12
- "provider_thingy resource class"
13
- end
14
- end
15
- end
16
- context "And class Chef::Provider::ProviderThingy with no provides" do
17
- before :context do
18
- class Chef::Provider::ProviderThingy < Chef::Provider
19
- def load_current_resource
20
- end
21
-
22
- def action_create
23
- Chef::Log.warn("hello from #{self.class.name}")
24
- end
25
- end
26
- end
27
-
28
- it "provider_thingy 'blah' runs the provider and warns" do
29
- recipe = converge do
30
- provider_thingy("blah") {}
31
- end
32
- expect(recipe.logged_warnings).to match /hello from Chef::Provider::ProviderThingy/
33
- expect(recipe.logged_warnings).to match /you must use 'provides' to provide DSL/i
34
- end
35
- end
36
- end
37
- end
1
+ require "support/shared/integration/integration_helper"
2
+
3
+ describe "Recipe DSL methods" do
4
+ include IntegrationSupport
5
+
6
+ context "With resource class providing 'provider_thingy'" do
7
+ before :context do
8
+ class Chef::Resource::ProviderThingy < Chef::Resource
9
+ resource_name :provider_thingy
10
+ default_action :create
11
+ def to_s
12
+ "provider_thingy resource class"
13
+ end
14
+ end
15
+ end
16
+ context "And class Chef::Provider::ProviderThingy with no provides" do
17
+ before :context do
18
+ class Chef::Provider::ProviderThingy < Chef::Provider
19
+ def load_current_resource
20
+ end
21
+
22
+ def action_create
23
+ Chef::Log.warn("hello from #{self.class.name}")
24
+ end
25
+ end
26
+ end
27
+
28
+ it "provider_thingy 'blah' runs the provider and warns" do
29
+ recipe = converge do
30
+ provider_thingy("blah") {}
31
+ end
32
+ expect(recipe.logged_warnings).to match /hello from Chef::Provider::ProviderThingy/
33
+ expect(recipe.logged_warnings).to match /you must use 'provides' to provide DSL/i
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,1373 +1,1373 @@
1
- require "support/shared/integration/integration_helper"
2
-
3
- describe "Recipe DSL methods" do
4
- include IntegrationSupport
5
-
6
- module Namer
7
- extend self
8
- attr_accessor :current_index
9
- end
10
-
11
- before(:all) { Namer.current_index = 1 }
12
- before { Namer.current_index += 1 }
13
-
14
- context "with resource 'base_thingy' declared as BaseThingy" do
15
- before(:each) do
16
-
17
- class BaseThingy < Chef::Resource
18
- resource_name "base_thingy"
19
- default_action :create
20
-
21
- class<<self
22
- attr_accessor :created_name
23
- attr_accessor :created_resource
24
- attr_accessor :created_provider
25
- end
26
-
27
- def provider
28
- Provider
29
- end
30
- class Provider < Chef::Provider
31
- def load_current_resource
32
- end
33
-
34
- def action_create
35
- BaseThingy.created_name = new_resource.name
36
- BaseThingy.created_resource = new_resource.class
37
- BaseThingy.created_provider = self.class
38
- end
39
- end
40
- end
41
-
42
- # Modules to put stuff in
43
- module RecipeDSLSpecNamespace; end
44
- module RecipeDSLSpecNamespace::Bar; end
45
-
46
- end
47
-
48
- before :each do
49
- BaseThingy.created_resource = nil
50
- BaseThingy.created_provider = nil
51
- end
52
-
53
- it "creates base_thingy when you call base_thingy in a recipe" do
54
- recipe = converge do
55
- base_thingy("blah") {}
56
- end
57
- expect(recipe.logged_warnings).to eq ""
58
- expect(BaseThingy.created_name).to eq "blah"
59
- expect(BaseThingy.created_resource).to eq BaseThingy
60
- end
61
-
62
- it "errors when you call base_thingy do ... end in a recipe" do
63
- expect_converge do
64
- base_thingy { ; }
65
- end.to raise_error(Chef::Exceptions::ValidationFailed)
66
- end
67
-
68
- context "nameless resources" do
69
- before(:each) do
70
- class NamelessThingy < BaseThingy
71
- resource_name :nameless_thingy
72
- provides :nameless_thingy
73
-
74
- property :name, String, default: ""
75
- end
76
- end
77
-
78
- it "does not error when not given a name" do
79
- recipe = converge do
80
- nameless_thingy {}
81
- end
82
- expect(recipe.logged_warnings).to eq ""
83
- expect(BaseThingy.created_name).to eq ""
84
- expect(BaseThingy.created_resource).to eq NamelessThingy
85
- end
86
- end
87
-
88
- context "Deprecated automatic resource DSL" do
89
- before do
90
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
91
- end
92
-
93
- context "with a resource named RecipeDSLSpecNamespace::Bar::BarThingy" do
94
- before(:each) do
95
-
96
- class RecipeDSLSpecNamespace::Bar::BarThingy < BaseThingy
97
- end
98
-
99
- end
100
-
101
- it "bar_thingy does not work" do
102
- expect_converge do
103
- bar_thingy("blah") {}
104
- end.to raise_error(NoMethodError)
105
- end
106
- end
107
-
108
- context "with a resource named Chef::Resource::NoNameThingy with resource_name nil" do
109
- before(:each) do
110
-
111
- class Chef::Resource::NoNameThingy < BaseThingy
112
- resource_name nil
113
- end
114
-
115
- end
116
-
117
- it "no_name_thingy does not work" do
118
- expect_converge do
119
- no_name_thingy("blah") {}
120
- end.to raise_error(NoMethodError)
121
- end
122
- end
123
-
124
- context "with a resource named AnotherNoNameThingy with resource_name :another_thingy_name" do
125
- before(:each) do
126
-
127
- class AnotherNoNameThingy < BaseThingy
128
- resource_name :another_thingy_name
129
- end
130
-
131
- end
132
-
133
- it "another_no_name_thingy does not work" do
134
- expect_converge do
135
- another_no_name_thingy("blah") {}
136
- end.to raise_error(NoMethodError)
137
- end
138
-
139
- it "another_thingy_name works" do
140
- recipe = converge do
141
- another_thingy_name("blah") {}
142
- end
143
- expect(recipe.logged_warnings).to eq ""
144
- expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy)
145
- end
146
- end
147
-
148
- context "with a resource named AnotherNoNameThingy2 with resource_name :another_thingy_name2; resource_name :another_thingy_name3" do
149
- before(:each) do
150
-
151
- class AnotherNoNameThingy2 < BaseThingy
152
- resource_name :another_thingy_name2
153
- resource_name :another_thingy_name3
154
- end
155
-
156
- end
157
-
158
- it "another_no_name_thingy does not work" do
159
- expect_converge do
160
- another_no_name_thingy2("blah") {}
161
- end.to raise_error(NoMethodError)
162
- end
163
-
164
- it "another_thingy_name2 does not work" do
165
- expect_converge do
166
- another_thingy_name2("blah") {}
167
- end.to raise_error(NoMethodError)
168
- end
169
-
170
- it "yet_another_thingy_name3 works" do
171
- recipe = converge do
172
- another_thingy_name3("blah") {}
173
- end
174
- expect(recipe.logged_warnings).to eq ""
175
- expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy2)
176
- end
177
- end
178
-
179
- context "provides overriding resource_name" do
180
- context "with a resource named AnotherNoNameThingy3 with provides :another_no_name_thingy3, os: 'blarghle'" do
181
- before(:each) do
182
-
183
- class AnotherNoNameThingy3 < BaseThingy
184
- resource_name :another_no_name_thingy_3
185
- provides :another_no_name_thingy3, os: "blarghle"
186
- end
187
-
188
- end
189
-
190
- it "and os = linux, another_no_name_thingy3 does not work" do
191
- expect_converge do
192
- # TODO this is an ugly way to test, make Cheffish expose node attrs
193
- run_context.node.automatic[:os] = "linux"
194
- another_no_name_thingy3("blah") {}
195
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
196
- end
197
-
198
- it "and os = blarghle, another_no_name_thingy3 works" do
199
- recipe = converge do
200
- # TODO this is an ugly way to test, make Cheffish expose node attrs
201
- run_context.node.automatic[:os] = "blarghle"
202
- another_no_name_thingy3("blah") {}
203
- end
204
- expect(recipe.logged_warnings).to eq ""
205
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy3)
206
- end
207
- end
208
-
209
- context "with a resource named AnotherNoNameThingy4 with two provides" do
210
- before(:each) do
211
-
212
- class AnotherNoNameThingy4 < BaseThingy
213
- resource_name :another_no_name_thingy_4
214
- provides :another_no_name_thingy4, os: "blarghle"
215
- provides :another_no_name_thingy4, platform_family: "foo"
216
- end
217
-
218
- end
219
-
220
- it "and os = linux, another_no_name_thingy4 does not work" do
221
- expect_converge do
222
- # TODO this is an ugly way to test, make Cheffish expose node attrs
223
- run_context.node.automatic[:os] = "linux"
224
- another_no_name_thingy4("blah") {}
225
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
226
- end
227
-
228
- it "and os = blarghle, another_no_name_thingy4 works" do
229
- recipe = converge do
230
- # TODO this is an ugly way to test, make Cheffish expose node attrs
231
- run_context.node.automatic[:os] = "blarghle"
232
- another_no_name_thingy4("blah") {}
233
- end
234
- expect(recipe.logged_warnings).to eq ""
235
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
236
- end
237
-
238
- it "and platform_family = foo, another_no_name_thingy4 works" do
239
- recipe = converge do
240
- # TODO this is an ugly way to test, make Cheffish expose node attrs
241
- run_context.node.automatic[:platform_family] = "foo"
242
- another_no_name_thingy4("blah") {}
243
- end
244
- expect(recipe.logged_warnings).to eq ""
245
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
246
- end
247
- end
248
-
249
- context "with a resource named AnotherNoNameThingy5, a different resource_name, and a provides with the original resource_name" do
250
- before(:each) do
251
-
252
- class AnotherNoNameThingy5 < BaseThingy
253
- resource_name :another_thingy_name_for_another_no_name_thingy5
254
- provides :another_no_name_thingy5, os: "blarghle"
255
- end
256
-
257
- end
258
-
259
- it "and os = linux, another_no_name_thingy5 does not work" do
260
- expect_converge do
261
- # this is an ugly way to test, make Cheffish expose node attrs
262
- run_context.node.automatic[:os] = "linux"
263
- another_no_name_thingy5("blah") {}
264
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
265
- end
266
-
267
- it "and os = blarghle, another_no_name_thingy5 works" do
268
- recipe = converge do
269
- # this is an ugly way to test, make Cheffish expose node attrs
270
- run_context.node.automatic[:os] = "blarghle"
271
- another_no_name_thingy5("blah") {}
272
- end
273
- expect(recipe.logged_warnings).to eq ""
274
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
275
- end
276
-
277
- it "the new resource name can be used in a recipe" do
278
- recipe = converge do
279
- another_thingy_name_for_another_no_name_thingy5("blah") {}
280
- end
281
- expect(recipe.logged_warnings).to eq ""
282
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
283
- end
284
- end
285
-
286
- context "with a resource named AnotherNoNameThingy6, a provides with the original resource name, and a different resource_name" do
287
- before(:each) do
288
-
289
- class AnotherNoNameThingy6 < BaseThingy
290
- provides :another_no_name_thingy6, os: "blarghle"
291
- resource_name :another_thingy_name_for_another_no_name_thingy6
292
- end
293
-
294
- end
295
-
296
- it "and os = linux, another_no_name_thingy6 does not work" do
297
- expect_converge do
298
- # this is an ugly way to test, make Cheffish expose node attrs
299
- run_context.node.automatic[:os] = "linux"
300
- another_no_name_thingy6("blah") {}
301
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
302
- end
303
-
304
- it "and os = blarghle, another_no_name_thingy6 works" do
305
- recipe = converge do
306
- # this is an ugly way to test, make Cheffish expose node attrs
307
- run_context.node.automatic[:os] = "blarghle"
308
- another_no_name_thingy6("blah") {}
309
- end
310
- expect(recipe.logged_warnings).to eq ""
311
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
312
- end
313
-
314
- it "the new resource name can be used in a recipe" do
315
- recipe = converge do
316
- another_thingy_name_for_another_no_name_thingy6("blah") {}
317
- end
318
- expect(recipe.logged_warnings).to eq ""
319
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
320
- end
321
- end
322
-
323
- context "with a resource named AnotherNoNameThingy7, a new resource_name, and provides with that new resource name" do
324
- before(:each) do
325
-
326
- class AnotherNoNameThingy7 < BaseThingy
327
- resource_name :another_thingy_name_for_another_no_name_thingy7
328
- provides :another_thingy_name_for_another_no_name_thingy7, os: "blarghle"
329
- end
330
-
331
- end
332
-
333
- it "and os = linux, another_thingy_name_for_another_no_name_thingy7 does not work" do
334
- expect_converge do
335
- # this is an ugly way to test, make Cheffish expose node attrs
336
- run_context.node.automatic[:os] = "linux"
337
- another_thingy_name_for_another_no_name_thingy7("blah") {}
338
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
339
- end
340
-
341
- it "and os = blarghle, another_thingy_name_for_another_no_name_thingy7 works" do
342
- recipe = converge do
343
- # this is an ugly way to test, make Cheffish expose node attrs
344
- run_context.node.automatic[:os] = "blarghle"
345
- another_thingy_name_for_another_no_name_thingy7("blah") {}
346
- end
347
- expect(recipe.logged_warnings).to eq ""
348
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy7)
349
- end
350
-
351
- it "the old resource name does not work" do
352
- expect_converge do
353
- # this is an ugly way to test, make Cheffish expose node attrs
354
- run_context.node.automatic[:os] = "linux"
355
- another_no_name_thingy_7("blah") {}
356
- end.to raise_error(NoMethodError)
357
- end
358
- end
359
-
360
- # opposite order from the previous test (provides, then resource_name)
361
- context "with a resource named AnotherNoNameThingy8, a provides with a new resource name, and resource_name with that new resource name" do
362
- before(:each) do
363
-
364
- class AnotherNoNameThingy8 < BaseThingy
365
- provides :another_thingy_name_for_another_no_name_thingy8, os: "blarghle"
366
- resource_name :another_thingy_name_for_another_no_name_thingy8
367
- end
368
-
369
- end
370
-
371
- it "and os = linux, another_thingy_name_for_another_no_name_thingy8 does not work" do
372
- expect_converge do
373
- # this is an ugly way to test, make Cheffish expose node attrs
374
- run_context.node.automatic[:os] = "linux"
375
- another_thingy_name_for_another_no_name_thingy8("blah") {}
376
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
377
- end
378
-
379
- it "and os = blarghle, another_thingy_name_for_another_no_name_thingy8 works" do
380
- recipe = converge do
381
- # this is an ugly way to test, make Cheffish expose node attrs
382
- run_context.node.automatic[:os] = "blarghle"
383
- another_thingy_name_for_another_no_name_thingy8("blah") {}
384
- end
385
- expect(recipe.logged_warnings).to eq ""
386
- expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy8)
387
- end
388
-
389
- it "the old resource name does not work" do
390
- expect_converge do
391
- # this is an ugly way to test, make Cheffish expose node attrs
392
- run_context.node.automatic[:os] = "linux"
393
- another_thingy_name8("blah") {}
394
- end.to raise_error(NoMethodError)
395
- end
396
- end
397
- end
398
- end
399
-
400
- context "provides" do
401
- context "when MySupplier provides :hemlock" do
402
- before(:each) do
403
-
404
- class RecipeDSLSpecNamespace::MySupplier < BaseThingy
405
- resource_name :hemlock
406
- end
407
-
408
- end
409
-
410
- it "my_supplier does not work in a recipe" do
411
- expect_converge do
412
- my_supplier("blah") {}
413
- end.to raise_error(NoMethodError)
414
- end
415
-
416
- it "hemlock works in a recipe" do
417
- expect_recipe do
418
- hemlock("blah") {}
419
- end.to emit_no_warnings_or_errors
420
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::MySupplier
421
- end
422
- end
423
-
424
- context "when Thingy3 has resource_name :thingy3" do
425
- before(:each) do
426
-
427
- class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
428
- resource_name :thingy3
429
- end
430
-
431
- end
432
-
433
- it "thingy3 works in a recipe" do
434
- expect_recipe do
435
- thingy3("blah") {}
436
- end.to emit_no_warnings_or_errors
437
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
438
- end
439
-
440
- context "and Thingy4 has resource_name :thingy3" do
441
- before(:each) do
442
-
443
- class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
444
- resource_name :thingy3
445
- end
446
-
447
- end
448
-
449
- it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
450
- recipe = converge do
451
- thingy3("blah") {}
452
- end
453
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
454
- end
455
-
456
- it "thingy4 does not work in a recipe" do
457
- expect_converge do
458
- thingy4("blah") {}
459
- end.to raise_error(NoMethodError)
460
- end
461
-
462
- it "resource_matching_short_name returns Thingy4" do
463
- expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
464
- end
465
- end
466
- end
467
-
468
- context "when Thingy5 has resource_name :thingy5 and provides :thingy5reverse, :thingy5_2 and :thingy5_2reverse" do
469
- before(:each) do
470
-
471
- class RecipeDSLSpecNamespace::Thingy5 < BaseThingy
472
- resource_name :thingy5
473
- provides :thingy5reverse
474
- provides :thingy5_2
475
- provides :thingy5_2reverse
476
- end
477
-
478
- end
479
-
480
- it "thingy5 works in a recipe" do
481
- expect_recipe do
482
- thingy5("blah") {}
483
- end.to emit_no_warnings_or_errors
484
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
485
- end
486
-
487
- context "and Thingy6 provides :thingy5" do
488
- before(:each) do
489
-
490
- class RecipeDSLSpecNamespace::Thingy6 < BaseThingy
491
- resource_name :thingy6
492
- provides :thingy5
493
- end
494
-
495
- end
496
-
497
- it "thingy6 works in a recipe and yields Thingy6" do
498
- recipe = converge do
499
- thingy6("blah") {}
500
- end
501
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
502
- end
503
-
504
- it "thingy5 works in a recipe and yields Foo::Thingy5 (the alphabetical one)" do
505
- recipe = converge do
506
- thingy5("blah") {}
507
- end
508
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
509
- end
510
-
511
- it "resource_matching_short_name returns Thingy5" do
512
- expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy5
513
- end
514
-
515
- context "and AThingy5 provides :thingy5reverse" do
516
- before(:each) do
517
-
518
- class RecipeDSLSpecNamespace::AThingy5 < BaseThingy
519
- resource_name :thingy5reverse
520
- end
521
-
522
- end
523
-
524
- it "thingy5reverse works in a recipe and yields AThingy5 (the alphabetical one)" do
525
- recipe = converge do
526
- thingy5reverse("blah") {}
527
- end
528
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::AThingy5
529
- end
530
- end
531
-
532
- context "and ZRecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
533
- before(:each) do
534
-
535
- module ZRecipeDSLSpecNamespace
536
- class Thingy5 < BaseThingy
537
- resource_name :thingy5_2
538
- end
539
- end
540
-
541
- end
542
-
543
- it "thingy5_2 works in a recipe and yields the RecipeDSLSpaceNamespace one (the alphabetical one)" do
544
- recipe = converge do
545
- thingy5_2("blah") {}
546
- end
547
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
548
- end
549
- end
550
-
551
- context "and ARecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
552
- before(:each) do
553
-
554
- module ARecipeDSLSpecNamespace
555
- class Thingy5 < BaseThingy
556
- resource_name :thingy5_2reverse
557
- end
558
- end
559
-
560
- end
561
-
562
- it "thingy5_2reverse works in a recipe and yields the ARecipeDSLSpaceNamespace one (the alphabetical one)" do
563
- recipe = converge do
564
- thingy5_2reverse("blah") {}
565
- end
566
- expect(BaseThingy.created_resource).to eq ARecipeDSLSpecNamespace::Thingy5
567
- end
568
- end
569
- end
570
-
571
- context "when Thingy3 has resource_name :thingy3" do
572
- before(:each) do
573
-
574
- class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
575
- resource_name :thingy3
576
- end
577
-
578
- end
579
-
580
- it "thingy3 works in a recipe" do
581
- expect_recipe do
582
- thingy3("blah") {}
583
- end.to emit_no_warnings_or_errors
584
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
585
- end
586
-
587
- context "and Thingy4 has resource_name :thingy3" do
588
- before(:each) do
589
-
590
- class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
591
- resource_name :thingy3
592
- end
593
-
594
- end
595
-
596
- it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
597
- recipe = converge do
598
- thingy3("blah") {}
599
- end
600
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
601
- end
602
-
603
- it "thingy4 does not work in a recipe" do
604
- expect_converge do
605
- thingy4("blah") {}
606
- end.to raise_error(NoMethodError)
607
- end
608
-
609
- it "resource_matching_short_name returns Thingy4" do
610
- expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
611
- end
612
- end
613
-
614
- context "and Thingy4 has resource_name :thingy3" do
615
- before(:each) do
616
-
617
- class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
618
- resource_name :thingy3
619
- end
620
-
621
- end
622
-
623
- it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
624
- recipe = converge do
625
- thingy3("blah") {}
626
- end
627
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
628
- end
629
-
630
- it "thingy4 does not work in a recipe" do
631
- expect_converge do
632
- thingy4("blah") {}
633
- end.to raise_error(NoMethodError)
634
- end
635
-
636
- it "resource_matching_short_name returns Thingy4" do
637
- expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
638
- end
639
- end
640
- end
641
-
642
- end
643
-
644
- context "when Thingy7 provides :thingy8" do
645
- before(:each) do
646
-
647
- class RecipeDSLSpecNamespace::Thingy7 < BaseThingy
648
- resource_name :thingy7
649
- provides :thingy8
650
- end
651
-
652
- end
653
-
654
- context "and Thingy8 has resource_name :thingy8" do
655
- before(:each) do
656
-
657
- class RecipeDSLSpecNamespace::Thingy8 < BaseThingy
658
- resource_name :thingy8
659
- end
660
-
661
- end
662
-
663
- it "thingy7 works in a recipe and yields Thingy7" do
664
- recipe = converge do
665
- thingy7("blah") {}
666
- end
667
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
668
- end
669
-
670
- it "thingy8 works in a recipe and yields Thingy7 (alphabetical)" do
671
- recipe = converge do
672
- thingy8("blah") {}
673
- end
674
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
675
- end
676
-
677
- it "resource_matching_short_name returns Thingy8" do
678
- expect(Chef::Resource.resource_matching_short_name(:thingy8)).to eq RecipeDSLSpecNamespace::Thingy8
679
- end
680
- end
681
- end
682
-
683
- context "when Thingy12 provides :thingy12, :twizzle and :twizzle2" do
684
- before(:each) do
685
-
686
- class RecipeDSLSpecNamespace::Thingy12 < BaseThingy
687
- resource_name :thingy12
688
- provides :twizzle
689
- provides :twizzle2
690
- end
691
-
692
- end
693
-
694
- it "thingy12 works in a recipe and yields Thingy12" do
695
- expect_recipe do
696
- thingy12("blah") {}
697
- end.to emit_no_warnings_or_errors
698
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
699
- end
700
-
701
- it "twizzle works in a recipe and yields Thingy12" do
702
- expect_recipe do
703
- twizzle("blah") {}
704
- end.to emit_no_warnings_or_errors
705
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
706
- end
707
-
708
- it "twizzle2 works in a recipe and yields Thingy12" do
709
- expect_recipe do
710
- twizzle2("blah") {}
711
- end.to emit_no_warnings_or_errors
712
- expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
713
- end
714
- end
715
-
716
- context "with platform-specific resources 'my_super_thingy_foo' and 'my_super_thingy_bar'" do
717
- before(:each) do
718
- class MySuperThingyFoo < BaseThingy
719
- resource_name :my_super_thingy_foo
720
- provides :my_super_thingy, platform: "foo"
721
- end
722
-
723
- class MySuperThingyBar < BaseThingy
724
- resource_name :my_super_thingy_bar
725
- provides :my_super_thingy, platform: "bar"
726
- end
727
- end
728
-
729
- it "A run with platform 'foo' uses MySuperThingyFoo" do
730
- r = Cheffish::ChefRun.new(chef_config)
731
- r.client.run_context.node.automatic["platform"] = "foo"
732
- r.compile_recipe do
733
- my_super_thingy("blah") {}
734
- end
735
- r.converge
736
- expect(r).to emit_no_warnings_or_errors
737
- expect(BaseThingy.created_resource).to eq MySuperThingyFoo
738
- end
739
-
740
- it "A run with platform 'bar' uses MySuperThingyBar" do
741
- r = Cheffish::ChefRun.new(chef_config)
742
- r.client.run_context.node.automatic["platform"] = "bar"
743
- r.compile_recipe do
744
- my_super_thingy("blah") {}
745
- end
746
- r.converge
747
- expect(r).to emit_no_warnings_or_errors
748
- expect(BaseThingy.created_resource).to eq MySuperThingyBar
749
- end
750
-
751
- it "A run with platform 'x' reports that my_super_thingy is not supported" do
752
- r = Cheffish::ChefRun.new(chef_config)
753
- r.client.run_context.node.automatic["platform"] = "x"
754
- expect do
755
- r.compile_recipe do
756
- my_super_thingy("blah") {}
757
- end
758
- end.to raise_error(Chef::Exceptions::NoSuchResourceType)
759
- end
760
- end
761
-
762
- context "when Thingy10 provides :thingy10" do
763
- before(:each) do
764
- class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
765
- resource_name :thingy10
766
- end
767
- end
768
-
769
- it "declaring a resource providing the same :thingy10 with override: true does not produce a warning" do
770
- expect(Chef::Log).not_to receive(:warn)
771
- class RecipeDSLSpecNamespace::Thingy10AlternateProvider < BaseThingy
772
- provides :thingy10, override: true
773
- end
774
- end
775
- end
776
-
777
- context "when Thingy11 provides :thingy11" do
778
- before(:each) do
779
- class RecipeDSLSpecNamespace::Thingy11 < BaseThingy
780
- resource_name :thingy10
781
- end
782
- end
783
-
784
- it "declaring a resource providing the same :thingy11 with os: 'linux' does not produce a warning" do
785
- expect(Chef::Log).not_to receive(:warn)
786
- class RecipeDSLSpecNamespace::Thingy11AlternateProvider < BaseThingy
787
- provides :thingy11, os: "linux"
788
- end
789
- end
790
- end
791
- end
792
-
793
- context "with a resource named 'B' with resource name :two_classes_one_dsl" do
794
- let(:two_classes_one_dsl) { :"two_classes_one_dsl#{Namer.current_index}" }
795
- let(:resource_class) do
796
- result = Class.new(BaseThingy) do
797
- def self.name
798
- "B"
799
- end
800
-
801
- def self.to_s; name; end
802
-
803
- def self.inspect; name.inspect; end
804
- end
805
- result.resource_name two_classes_one_dsl
806
- result
807
- end
808
- before { resource_class } # pull on it so it gets defined before the recipe runs
809
-
810
- context "and another resource named 'A' with resource_name :two_classes_one_dsl" do
811
- let(:resource_class_a) do
812
- result = Class.new(BaseThingy) do
813
- def self.name
814
- "A"
815
- end
816
-
817
- def self.to_s; name; end
818
-
819
- def self.inspect; name.inspect; end
820
- end
821
- result.resource_name two_classes_one_dsl
822
- result
823
- end
824
- before { resource_class_a } # pull on it so it gets defined before the recipe runs
825
-
826
- it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
827
- temp_two_classes_one_dsl = two_classes_one_dsl
828
- recipe = converge do
829
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
830
- end
831
- expect(recipe.logged_warnings).to eq ""
832
- expect(BaseThingy.created_resource).to eq resource_class_a
833
- end
834
-
835
- it "resource_matching_short_name returns B" do
836
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_a
837
- end
838
- end
839
-
840
- context "and another resource named 'Z' with resource_name :two_classes_one_dsl" do
841
- let(:resource_class_z) do
842
- result = Class.new(BaseThingy) do
843
- def self.name
844
- "Z"
845
- end
846
-
847
- def self.to_s; name; end
848
-
849
- def self.inspect; name.inspect; end
850
- end
851
- result.resource_name two_classes_one_dsl
852
- result
853
- end
854
- before { resource_class_z } # pull on it so it gets defined before the recipe runs
855
-
856
- it "two_classes_one_dsl resolves to B (alphabetically earliest)" do
857
- temp_two_classes_one_dsl = two_classes_one_dsl
858
- recipe = converge do
859
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
860
- end
861
- expect(recipe.logged_warnings).to eq ""
862
- expect(BaseThingy.created_resource).to eq resource_class
863
- end
864
-
865
- it "resource_matching_short_name returns B" do
866
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
867
- end
868
-
869
- context "and a priority array [ Z, B ]" do
870
- before do
871
- Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z, resource_class ])
872
- end
873
-
874
- it "two_classes_one_dsl resolves to Z (respects the priority array)" do
875
- temp_two_classes_one_dsl = two_classes_one_dsl
876
- recipe = converge do
877
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
878
- end
879
- expect(recipe.logged_warnings).to eq ""
880
- expect(BaseThingy.created_resource).to eq resource_class_z
881
- end
882
-
883
- it "resource_matching_short_name returns B" do
884
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
885
- end
886
-
887
- context "when Z provides(:two_classes_one_dsl) { false }" do
888
- before do
889
- resource_class_z.provides(two_classes_one_dsl) { false }
890
- end
891
-
892
- it "two_classes_one_dsl resolves to B (picks the next thing in the priority array)" do
893
- temp_two_classes_one_dsl = two_classes_one_dsl
894
- recipe = converge do
895
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
896
- end
897
- expect(recipe.logged_warnings).to eq ""
898
- expect(BaseThingy.created_resource).to eq resource_class
899
- end
900
-
901
- it "resource_matching_short_name returns B" do
902
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
903
- end
904
- end
905
- end
906
-
907
- context "and priority arrays [ B ] and [ Z ]" do
908
- before do
909
- Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class ])
910
- Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
911
- end
912
-
913
- it "two_classes_one_dsl resolves to Z (respects the most recent priority array)" do
914
- temp_two_classes_one_dsl = two_classes_one_dsl
915
- recipe = converge do
916
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
917
- end
918
- expect(recipe.logged_warnings).to eq ""
919
- expect(BaseThingy.created_resource).to eq resource_class_z
920
- end
921
-
922
- it "resource_matching_short_name returns B" do
923
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
924
- end
925
-
926
- context "when Z provides(:two_classes_one_dsl) { false }" do
927
- before do
928
- resource_class_z.provides(two_classes_one_dsl) { false }
929
- end
930
-
931
- it "two_classes_one_dsl resolves to B (picks the first match from the other priority array)" do
932
- temp_two_classes_one_dsl = two_classes_one_dsl
933
- recipe = converge do
934
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
935
- end
936
- expect(recipe.logged_warnings).to eq ""
937
- expect(BaseThingy.created_resource).to eq resource_class
938
- end
939
-
940
- it "resource_matching_short_name returns B" do
941
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
942
- end
943
- end
944
- end
945
-
946
- context "and a priority array [ Z ]" do
947
- before do
948
- Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
949
- end
950
-
951
- context "when Z provides(:two_classes_one_dsl) { false }" do
952
- before do
953
- resource_class_z.provides(two_classes_one_dsl) { false }
954
- end
955
-
956
- it "two_classes_one_dsl resolves to B (picks the first match outside the priority array)" do
957
- temp_two_classes_one_dsl = two_classes_one_dsl
958
- recipe = converge do
959
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
960
- end
961
- expect(recipe.logged_warnings).to eq ""
962
- expect(BaseThingy.created_resource).to eq resource_class
963
- end
964
-
965
- it "resource_matching_short_name returns B" do
966
- expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
967
- end
968
- end
969
- end
970
-
971
- end
972
-
973
- context "and a provider named 'B' which provides :two_classes_one_dsl" do
974
- before do
975
- resource_class.send(:define_method, :provider) { nil }
976
- end
977
-
978
- let(:provider_class) do
979
- result = Class.new(BaseThingy::Provider) do
980
- def self.name
981
- "B"
982
- end
983
-
984
- def self.to_s; name; end
985
-
986
- def self.inspect; name.inspect; end
987
- end
988
- result.provides two_classes_one_dsl
989
- result
990
- end
991
- before { provider_class } # pull on it so it gets defined before the recipe runs
992
-
993
- context "and another provider named 'A'" do
994
- let(:provider_class_a) do
995
- result = Class.new(BaseThingy::Provider) do
996
- def self.name
997
- "A"
998
- end
999
-
1000
- def self.to_s; name; end
1001
-
1002
- def self.inspect; name.inspect; end
1003
- end
1004
- result
1005
- end
1006
- context "which provides :two_classes_one_dsl" do
1007
- before { provider_class_a.provides two_classes_one_dsl }
1008
-
1009
- it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
1010
- temp_two_classes_one_dsl = two_classes_one_dsl
1011
- recipe = converge do
1012
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1013
- end
1014
- expect(recipe.logged_warnings).to eq ""
1015
- expect(BaseThingy.created_provider).to eq provider_class_a
1016
- end
1017
- end
1018
- context "which provides(:two_classes_one_dsl) { false }" do
1019
- before { provider_class_a.provides(two_classes_one_dsl) { false } }
1020
-
1021
- it "two_classes_one_dsl resolves to B (since A declined)" do
1022
- temp_two_classes_one_dsl = two_classes_one_dsl
1023
- recipe = converge do
1024
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1025
- end
1026
- expect(recipe.logged_warnings).to eq ""
1027
- expect(BaseThingy.created_provider).to eq provider_class
1028
- end
1029
- end
1030
- end
1031
-
1032
- context "and another provider named 'Z'" do
1033
- let(:provider_class_z) do
1034
- result = Class.new(BaseThingy::Provider) do
1035
- def self.name
1036
- "Z"
1037
- end
1038
-
1039
- def self.to_s; name; end
1040
-
1041
- def self.inspect; name.inspect; end
1042
- end
1043
- result
1044
- end
1045
- before { provider_class_z } # pull on it so it gets defined before the recipe runs
1046
-
1047
- context "which provides :two_classes_one_dsl" do
1048
- before { provider_class_z.provides two_classes_one_dsl }
1049
-
1050
- it "two_classes_one_dsl resolves to B (alphabetically earliest)" do
1051
- temp_two_classes_one_dsl = two_classes_one_dsl
1052
- recipe = converge do
1053
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1054
- end
1055
- expect(recipe.logged_warnings).to eq ""
1056
- expect(BaseThingy.created_provider).to eq provider_class
1057
- end
1058
-
1059
- context "with a priority array [ Z, B ]" do
1060
- before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
1061
-
1062
- it "two_classes_one_dsl resolves to Z (respects the priority map)" do
1063
- temp_two_classes_one_dsl = two_classes_one_dsl
1064
- recipe = converge do
1065
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1066
- end
1067
- expect(recipe.logged_warnings).to eq ""
1068
- expect(BaseThingy.created_provider).to eq provider_class_z
1069
- end
1070
- end
1071
- end
1072
-
1073
- context "which provides(:two_classes_one_dsl) { false }" do
1074
- before { provider_class_z.provides(two_classes_one_dsl) { false } }
1075
-
1076
- context "with a priority array [ Z, B ]" do
1077
- before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
1078
-
1079
- it "two_classes_one_dsl resolves to B (the next one in the priority map)" do
1080
- temp_two_classes_one_dsl = two_classes_one_dsl
1081
- recipe = converge do
1082
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1083
- end
1084
- expect(recipe.logged_warnings).to eq ""
1085
- expect(BaseThingy.created_provider).to eq provider_class
1086
- end
1087
- end
1088
-
1089
- context "with priority arrays [ B ] and [ Z ]" do
1090
- before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z ] }
1091
- before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class ] }
1092
-
1093
- it "two_classes_one_dsl resolves to B (the one in the next priority map)" do
1094
- temp_two_classes_one_dsl = two_classes_one_dsl
1095
- recipe = converge do
1096
- instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1097
- end
1098
- expect(recipe.logged_warnings).to eq ""
1099
- expect(BaseThingy.created_provider).to eq provider_class
1100
- end
1101
- end
1102
- end
1103
- end
1104
- end
1105
-
1106
- context "and another resource Blarghle with provides :two_classes_one_dsl, os: 'blarghle'" do
1107
- let(:resource_class_blarghle) do
1108
- result = Class.new(BaseThingy) do
1109
- def self.name
1110
- "Blarghle"
1111
- end
1112
-
1113
- def self.to_s; name; end
1114
-
1115
- def self.inspect; name.inspect; end
1116
- end
1117
- result.resource_name two_classes_one_dsl
1118
- result.provides two_classes_one_dsl, os: "blarghle"
1119
- result
1120
- end
1121
- before { resource_class_blarghle } # pull on it so it gets defined before the recipe runs
1122
-
1123
- it "on os = blarghle, two_classes_one_dsl resolves to Blarghle" do
1124
- temp_two_classes_one_dsl = two_classes_one_dsl
1125
- recipe = converge do
1126
- # this is an ugly way to test, make Cheffish expose node attrs
1127
- run_context.node.automatic[:os] = "blarghle"
1128
- instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
1129
- end
1130
- expect(recipe.logged_warnings).to eq ""
1131
- expect(BaseThingy.created_resource).to eq resource_class_blarghle
1132
- end
1133
-
1134
- it "on os = linux, two_classes_one_dsl resolves to B" do
1135
- temp_two_classes_one_dsl = two_classes_one_dsl
1136
- recipe = converge do
1137
- # this is an ugly way to test, make Cheffish expose node attrs
1138
- run_context.node.automatic[:os] = "linux"
1139
- instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
1140
- end
1141
- expect(recipe.logged_warnings).to eq ""
1142
- expect(BaseThingy.created_resource).to eq resource_class
1143
- end
1144
- end
1145
- end
1146
-
1147
- context "with a resource MyResource" do
1148
- let(:resource_class) do
1149
- Class.new(BaseThingy) do
1150
- def self.called_provides
1151
- @called_provides
1152
- end
1153
-
1154
- def to_s
1155
- "MyResource"
1156
- end
1157
- end end
1158
- let(:my_resource) { :"my_resource#{Namer.current_index}" }
1159
- let(:blarghle_blarghle_little_star) { :"blarghle_blarghle_little_star#{Namer.current_index}" }
1160
-
1161
- context "with resource_name :my_resource" do
1162
- before do
1163
- resource_class.resource_name my_resource
1164
- end
1165
-
1166
- context "with provides? returning true to my_resource" do
1167
- before do
1168
- temp_my_resource = my_resource
1169
- resource_class.define_singleton_method(:provides?) do |node, resource_name|
1170
- @called_provides = true
1171
- resource_name == temp_my_resource
1172
- end
1173
- end
1174
-
1175
- it "my_resource returns the resource and calls provides?, but does not emit a warning" do
1176
- dsl_name = my_resource
1177
- recipe = converge do
1178
- instance_eval("#{dsl_name} 'foo'")
1179
- end
1180
- expect(recipe.logged_warnings).to eq ""
1181
- expect(BaseThingy.created_resource).to eq resource_class
1182
- expect(resource_class.called_provides).to be_truthy
1183
- end
1184
- end
1185
-
1186
- context "and a provider" do
1187
- let(:provider_class) do
1188
- Class.new(BaseThingy::Provider) do
1189
- def self.name
1190
- "MyProvider"
1191
- end
1192
-
1193
- def self.to_s; name; end
1194
-
1195
- def self.inspect; name.inspect; end
1196
-
1197
- def self.called_provides
1198
- @called_provides
1199
- end
1200
- end
1201
- end
1202
-
1203
- before do
1204
- resource_class.send(:define_method, :provider) { nil }
1205
- end
1206
-
1207
- context "that provides :my_resource" do
1208
- before do
1209
- provider_class.provides my_resource
1210
- end
1211
-
1212
- context "with supports? returning true" do
1213
- before do
1214
- provider_class.define_singleton_method(:supports?) { |resource, action| true }
1215
- end
1216
-
1217
- it "my_resource runs the provider and does not emit a warning" do
1218
- temp_my_resource = my_resource
1219
- recipe = converge do
1220
- instance_eval("#{temp_my_resource} 'foo'")
1221
- end
1222
- expect(recipe.logged_warnings).to eq ""
1223
- expect(BaseThingy.created_provider).to eq provider_class
1224
- end
1225
-
1226
- context "and another provider supporting :my_resource with supports? false" do
1227
- let(:provider_class2) do
1228
- Class.new(BaseThingy::Provider) do
1229
- def self.name
1230
- "MyProvider2"
1231
- end
1232
-
1233
- def self.to_s; name; end
1234
-
1235
- def self.inspect; name.inspect; end
1236
-
1237
- def self.called_provides
1238
- @called_provides
1239
- end
1240
- provides my_resource
1241
- def self.supports?(resource, action)
1242
- false
1243
- end
1244
- end
1245
- end
1246
-
1247
- it "my_resource runs the first provider" do
1248
- temp_my_resource = my_resource
1249
- recipe = converge do
1250
- instance_eval("#{temp_my_resource} 'foo'")
1251
- end
1252
- expect(recipe.logged_warnings).to eq ""
1253
- expect(BaseThingy.created_provider).to eq provider_class
1254
- end
1255
- end
1256
- end
1257
-
1258
- context "with supports? returning false" do
1259
- before do
1260
- provider_class.define_singleton_method(:supports?) { |resource, action| false }
1261
- end
1262
-
1263
- # TODO no warning? ick
1264
- it "my_resource runs the provider anyway" do
1265
- temp_my_resource = my_resource
1266
- recipe = converge do
1267
- instance_eval("#{temp_my_resource} 'foo'")
1268
- end
1269
- expect(recipe.logged_warnings).to eq ""
1270
- expect(BaseThingy.created_provider).to eq provider_class
1271
- end
1272
-
1273
- context "and another provider supporting :my_resource with supports? true" do
1274
- let(:provider_class2) do
1275
- temp_my_resource = my_resource
1276
- Class.new(BaseThingy::Provider) do
1277
- def self.name
1278
- "MyProvider2"
1279
- end
1280
-
1281
- def self.to_s; name; end
1282
-
1283
- def self.inspect; name.inspect; end
1284
-
1285
- def self.called_provides
1286
- @called_provides
1287
- end
1288
- provides temp_my_resource
1289
- def self.supports?(resource, action)
1290
- true
1291
- end
1292
- end
1293
- end
1294
- before { provider_class2 } # make sure the provider class shows up
1295
-
1296
- it "my_resource runs the other provider" do
1297
- temp_my_resource = my_resource
1298
- recipe = converge do
1299
- instance_eval("#{temp_my_resource} 'foo'")
1300
- end
1301
- expect(recipe.logged_warnings).to eq ""
1302
- expect(BaseThingy.created_provider).to eq provider_class2
1303
- end
1304
- end
1305
- end
1306
- end
1307
- end
1308
- end
1309
- end
1310
-
1311
- context "with UTF-8 provides" do
1312
- before(:each) do
1313
- class UTF8Thingy < BaseThingy
1314
- resource_name :Straße
1315
- provides :Straße
1316
- end
1317
- end
1318
-
1319
- it "utf-8 dsl names work" do
1320
- recipe = converge do
1321
- Straße("blah") {}
1322
- end
1323
- expect(recipe.logged_warnings).to eq ""
1324
- expect(BaseThingy.created_resource).to eq(UTF8Thingy)
1325
- end
1326
- end
1327
- end
1328
-
1329
- before(:all) { Namer.current_index = 0 }
1330
- before { Namer.current_index += 1 }
1331
-
1332
- context "with an LWRP that declares actions" do
1333
- let(:resource_class) do
1334
- Class.new(Chef::Resource::LWRPBase) do
1335
- provides :"recipe_dsl_spec#{Namer.current_index}"
1336
- actions :create
1337
- end
1338
- end
1339
- let(:resource) do
1340
- resource_class.new("blah", run_context)
1341
- end
1342
- it "The actions are part of actions along with :nothing" do
1343
- expect(resource_class.actions).to eq [ :nothing, :create ]
1344
- end
1345
- it "The actions are part of allowed_actions along with :nothing" do
1346
- expect(resource.allowed_actions).to eq [ :nothing, :create ]
1347
- end
1348
-
1349
- context "and a subclass that declares more actions" do
1350
- let(:subresource_class) do
1351
- Class.new(Chef::Resource::LWRPBase) do
1352
- provides :"recipe_dsl_spec_sub#{Namer.current_index}"
1353
- actions :delete
1354
- end
1355
- end
1356
- let(:subresource) do
1357
- subresource_class.new("subblah", run_context)
1358
- end
1359
-
1360
- it "The parent class actions are not part of actions" do
1361
- expect(subresource_class.actions).to eq [ :nothing, :delete ]
1362
- end
1363
- it "The parent class actions are not part of allowed_actions" do
1364
- expect(subresource.allowed_actions).to eq [ :nothing, :delete ]
1365
- end
1366
- it "The parent class actions do not change" do
1367
- expect(resource_class.actions).to eq [ :nothing, :create ]
1368
- expect(resource.allowed_actions).to eq [ :nothing, :create ]
1369
- end
1370
- end
1371
- end
1372
-
1373
- end
1
+ require "support/shared/integration/integration_helper"
2
+
3
+ describe "Recipe DSL methods" do
4
+ include IntegrationSupport
5
+
6
+ module Namer
7
+ extend self
8
+ attr_accessor :current_index
9
+ end
10
+
11
+ before(:all) { Namer.current_index = 1 }
12
+ before { Namer.current_index += 1 }
13
+
14
+ context "with resource 'base_thingy' declared as BaseThingy" do
15
+ before(:each) do
16
+
17
+ class BaseThingy < Chef::Resource
18
+ resource_name "base_thingy"
19
+ default_action :create
20
+
21
+ class<<self
22
+ attr_accessor :created_name
23
+ attr_accessor :created_resource
24
+ attr_accessor :created_provider
25
+ end
26
+
27
+ def provider
28
+ Provider
29
+ end
30
+ class Provider < Chef::Provider
31
+ def load_current_resource
32
+ end
33
+
34
+ def action_create
35
+ BaseThingy.created_name = new_resource.name
36
+ BaseThingy.created_resource = new_resource.class
37
+ BaseThingy.created_provider = self.class
38
+ end
39
+ end
40
+ end
41
+
42
+ # Modules to put stuff in
43
+ module RecipeDSLSpecNamespace; end
44
+ module RecipeDSLSpecNamespace::Bar; end
45
+
46
+ end
47
+
48
+ before :each do
49
+ BaseThingy.created_resource = nil
50
+ BaseThingy.created_provider = nil
51
+ end
52
+
53
+ it "creates base_thingy when you call base_thingy in a recipe" do
54
+ recipe = converge do
55
+ base_thingy("blah") {}
56
+ end
57
+ expect(recipe.logged_warnings).to eq ""
58
+ expect(BaseThingy.created_name).to eq "blah"
59
+ expect(BaseThingy.created_resource).to eq BaseThingy
60
+ end
61
+
62
+ it "errors when you call base_thingy do ... end in a recipe" do
63
+ expect_converge do
64
+ base_thingy { ; }
65
+ end.to raise_error(Chef::Exceptions::ValidationFailed)
66
+ end
67
+
68
+ context "nameless resources" do
69
+ before(:each) do
70
+ class NamelessThingy < BaseThingy
71
+ resource_name :nameless_thingy
72
+ provides :nameless_thingy
73
+
74
+ property :name, String, default: ""
75
+ end
76
+ end
77
+
78
+ it "does not error when not given a name" do
79
+ recipe = converge do
80
+ nameless_thingy {}
81
+ end
82
+ expect(recipe.logged_warnings).to eq ""
83
+ expect(BaseThingy.created_name).to eq ""
84
+ expect(BaseThingy.created_resource).to eq NamelessThingy
85
+ end
86
+ end
87
+
88
+ context "Deprecated automatic resource DSL" do
89
+ before do
90
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
91
+ end
92
+
93
+ context "with a resource named RecipeDSLSpecNamespace::Bar::BarThingy" do
94
+ before(:each) do
95
+
96
+ class RecipeDSLSpecNamespace::Bar::BarThingy < BaseThingy
97
+ end
98
+
99
+ end
100
+
101
+ it "bar_thingy does not work" do
102
+ expect_converge do
103
+ bar_thingy("blah") {}
104
+ end.to raise_error(NoMethodError)
105
+ end
106
+ end
107
+
108
+ context "with a resource named Chef::Resource::NoNameThingy with resource_name nil" do
109
+ before(:each) do
110
+
111
+ class Chef::Resource::NoNameThingy < BaseThingy
112
+ resource_name nil
113
+ end
114
+
115
+ end
116
+
117
+ it "no_name_thingy does not work" do
118
+ expect_converge do
119
+ no_name_thingy("blah") {}
120
+ end.to raise_error(NoMethodError)
121
+ end
122
+ end
123
+
124
+ context "with a resource named AnotherNoNameThingy with resource_name :another_thingy_name" do
125
+ before(:each) do
126
+
127
+ class AnotherNoNameThingy < BaseThingy
128
+ resource_name :another_thingy_name
129
+ end
130
+
131
+ end
132
+
133
+ it "another_no_name_thingy does not work" do
134
+ expect_converge do
135
+ another_no_name_thingy("blah") {}
136
+ end.to raise_error(NoMethodError)
137
+ end
138
+
139
+ it "another_thingy_name works" do
140
+ recipe = converge do
141
+ another_thingy_name("blah") {}
142
+ end
143
+ expect(recipe.logged_warnings).to eq ""
144
+ expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy)
145
+ end
146
+ end
147
+
148
+ context "with a resource named AnotherNoNameThingy2 with resource_name :another_thingy_name2; resource_name :another_thingy_name3" do
149
+ before(:each) do
150
+
151
+ class AnotherNoNameThingy2 < BaseThingy
152
+ resource_name :another_thingy_name2
153
+ resource_name :another_thingy_name3
154
+ end
155
+
156
+ end
157
+
158
+ it "another_no_name_thingy does not work" do
159
+ expect_converge do
160
+ another_no_name_thingy2("blah") {}
161
+ end.to raise_error(NoMethodError)
162
+ end
163
+
164
+ it "another_thingy_name2 does not work" do
165
+ expect_converge do
166
+ another_thingy_name2("blah") {}
167
+ end.to raise_error(NoMethodError)
168
+ end
169
+
170
+ it "yet_another_thingy_name3 works" do
171
+ recipe = converge do
172
+ another_thingy_name3("blah") {}
173
+ end
174
+ expect(recipe.logged_warnings).to eq ""
175
+ expect(BaseThingy.created_resource).to eq(AnotherNoNameThingy2)
176
+ end
177
+ end
178
+
179
+ context "provides overriding resource_name" do
180
+ context "with a resource named AnotherNoNameThingy3 with provides :another_no_name_thingy3, os: 'blarghle'" do
181
+ before(:each) do
182
+
183
+ class AnotherNoNameThingy3 < BaseThingy
184
+ resource_name :another_no_name_thingy_3
185
+ provides :another_no_name_thingy3, os: "blarghle"
186
+ end
187
+
188
+ end
189
+
190
+ it "and os = linux, another_no_name_thingy3 does not work" do
191
+ expect_converge do
192
+ # TODO this is an ugly way to test, make Cheffish expose node attrs
193
+ run_context.node.automatic[:os] = "linux"
194
+ another_no_name_thingy3("blah") {}
195
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
196
+ end
197
+
198
+ it "and os = blarghle, another_no_name_thingy3 works" do
199
+ recipe = converge do
200
+ # TODO this is an ugly way to test, make Cheffish expose node attrs
201
+ run_context.node.automatic[:os] = "blarghle"
202
+ another_no_name_thingy3("blah") {}
203
+ end
204
+ expect(recipe.logged_warnings).to eq ""
205
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy3)
206
+ end
207
+ end
208
+
209
+ context "with a resource named AnotherNoNameThingy4 with two provides" do
210
+ before(:each) do
211
+
212
+ class AnotherNoNameThingy4 < BaseThingy
213
+ resource_name :another_no_name_thingy_4
214
+ provides :another_no_name_thingy4, os: "blarghle"
215
+ provides :another_no_name_thingy4, platform_family: "foo"
216
+ end
217
+
218
+ end
219
+
220
+ it "and os = linux, another_no_name_thingy4 does not work" do
221
+ expect_converge do
222
+ # TODO this is an ugly way to test, make Cheffish expose node attrs
223
+ run_context.node.automatic[:os] = "linux"
224
+ another_no_name_thingy4("blah") {}
225
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
226
+ end
227
+
228
+ it "and os = blarghle, another_no_name_thingy4 works" do
229
+ recipe = converge do
230
+ # TODO this is an ugly way to test, make Cheffish expose node attrs
231
+ run_context.node.automatic[:os] = "blarghle"
232
+ another_no_name_thingy4("blah") {}
233
+ end
234
+ expect(recipe.logged_warnings).to eq ""
235
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
236
+ end
237
+
238
+ it "and platform_family = foo, another_no_name_thingy4 works" do
239
+ recipe = converge do
240
+ # TODO this is an ugly way to test, make Cheffish expose node attrs
241
+ run_context.node.automatic[:platform_family] = "foo"
242
+ another_no_name_thingy4("blah") {}
243
+ end
244
+ expect(recipe.logged_warnings).to eq ""
245
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy4)
246
+ end
247
+ end
248
+
249
+ context "with a resource named AnotherNoNameThingy5, a different resource_name, and a provides with the original resource_name" do
250
+ before(:each) do
251
+
252
+ class AnotherNoNameThingy5 < BaseThingy
253
+ resource_name :another_thingy_name_for_another_no_name_thingy5
254
+ provides :another_no_name_thingy5, os: "blarghle"
255
+ end
256
+
257
+ end
258
+
259
+ it "and os = linux, another_no_name_thingy5 does not work" do
260
+ expect_converge do
261
+ # this is an ugly way to test, make Cheffish expose node attrs
262
+ run_context.node.automatic[:os] = "linux"
263
+ another_no_name_thingy5("blah") {}
264
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
265
+ end
266
+
267
+ it "and os = blarghle, another_no_name_thingy5 works" do
268
+ recipe = converge do
269
+ # this is an ugly way to test, make Cheffish expose node attrs
270
+ run_context.node.automatic[:os] = "blarghle"
271
+ another_no_name_thingy5("blah") {}
272
+ end
273
+ expect(recipe.logged_warnings).to eq ""
274
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
275
+ end
276
+
277
+ it "the new resource name can be used in a recipe" do
278
+ recipe = converge do
279
+ another_thingy_name_for_another_no_name_thingy5("blah") {}
280
+ end
281
+ expect(recipe.logged_warnings).to eq ""
282
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy5)
283
+ end
284
+ end
285
+
286
+ context "with a resource named AnotherNoNameThingy6, a provides with the original resource name, and a different resource_name" do
287
+ before(:each) do
288
+
289
+ class AnotherNoNameThingy6 < BaseThingy
290
+ provides :another_no_name_thingy6, os: "blarghle"
291
+ resource_name :another_thingy_name_for_another_no_name_thingy6
292
+ end
293
+
294
+ end
295
+
296
+ it "and os = linux, another_no_name_thingy6 does not work" do
297
+ expect_converge do
298
+ # this is an ugly way to test, make Cheffish expose node attrs
299
+ run_context.node.automatic[:os] = "linux"
300
+ another_no_name_thingy6("blah") {}
301
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
302
+ end
303
+
304
+ it "and os = blarghle, another_no_name_thingy6 works" do
305
+ recipe = converge do
306
+ # this is an ugly way to test, make Cheffish expose node attrs
307
+ run_context.node.automatic[:os] = "blarghle"
308
+ another_no_name_thingy6("blah") {}
309
+ end
310
+ expect(recipe.logged_warnings).to eq ""
311
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
312
+ end
313
+
314
+ it "the new resource name can be used in a recipe" do
315
+ recipe = converge do
316
+ another_thingy_name_for_another_no_name_thingy6("blah") {}
317
+ end
318
+ expect(recipe.logged_warnings).to eq ""
319
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy6)
320
+ end
321
+ end
322
+
323
+ context "with a resource named AnotherNoNameThingy7, a new resource_name, and provides with that new resource name" do
324
+ before(:each) do
325
+
326
+ class AnotherNoNameThingy7 < BaseThingy
327
+ resource_name :another_thingy_name_for_another_no_name_thingy7
328
+ provides :another_thingy_name_for_another_no_name_thingy7, os: "blarghle"
329
+ end
330
+
331
+ end
332
+
333
+ it "and os = linux, another_thingy_name_for_another_no_name_thingy7 does not work" do
334
+ expect_converge do
335
+ # this is an ugly way to test, make Cheffish expose node attrs
336
+ run_context.node.automatic[:os] = "linux"
337
+ another_thingy_name_for_another_no_name_thingy7("blah") {}
338
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
339
+ end
340
+
341
+ it "and os = blarghle, another_thingy_name_for_another_no_name_thingy7 works" do
342
+ recipe = converge do
343
+ # this is an ugly way to test, make Cheffish expose node attrs
344
+ run_context.node.automatic[:os] = "blarghle"
345
+ another_thingy_name_for_another_no_name_thingy7("blah") {}
346
+ end
347
+ expect(recipe.logged_warnings).to eq ""
348
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy7)
349
+ end
350
+
351
+ it "the old resource name does not work" do
352
+ expect_converge do
353
+ # this is an ugly way to test, make Cheffish expose node attrs
354
+ run_context.node.automatic[:os] = "linux"
355
+ another_no_name_thingy_7("blah") {}
356
+ end.to raise_error(NoMethodError)
357
+ end
358
+ end
359
+
360
+ # opposite order from the previous test (provides, then resource_name)
361
+ context "with a resource named AnotherNoNameThingy8, a provides with a new resource name, and resource_name with that new resource name" do
362
+ before(:each) do
363
+
364
+ class AnotherNoNameThingy8 < BaseThingy
365
+ provides :another_thingy_name_for_another_no_name_thingy8, os: "blarghle"
366
+ resource_name :another_thingy_name_for_another_no_name_thingy8
367
+ end
368
+
369
+ end
370
+
371
+ it "and os = linux, another_thingy_name_for_another_no_name_thingy8 does not work" do
372
+ expect_converge do
373
+ # this is an ugly way to test, make Cheffish expose node attrs
374
+ run_context.node.automatic[:os] = "linux"
375
+ another_thingy_name_for_another_no_name_thingy8("blah") {}
376
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
377
+ end
378
+
379
+ it "and os = blarghle, another_thingy_name_for_another_no_name_thingy8 works" do
380
+ recipe = converge do
381
+ # this is an ugly way to test, make Cheffish expose node attrs
382
+ run_context.node.automatic[:os] = "blarghle"
383
+ another_thingy_name_for_another_no_name_thingy8("blah") {}
384
+ end
385
+ expect(recipe.logged_warnings).to eq ""
386
+ expect(BaseThingy.created_resource).to eq (AnotherNoNameThingy8)
387
+ end
388
+
389
+ it "the old resource name does not work" do
390
+ expect_converge do
391
+ # this is an ugly way to test, make Cheffish expose node attrs
392
+ run_context.node.automatic[:os] = "linux"
393
+ another_thingy_name8("blah") {}
394
+ end.to raise_error(NoMethodError)
395
+ end
396
+ end
397
+ end
398
+ end
399
+
400
+ context "provides" do
401
+ context "when MySupplier provides :hemlock" do
402
+ before(:each) do
403
+
404
+ class RecipeDSLSpecNamespace::MySupplier < BaseThingy
405
+ resource_name :hemlock
406
+ end
407
+
408
+ end
409
+
410
+ it "my_supplier does not work in a recipe" do
411
+ expect_converge do
412
+ my_supplier("blah") {}
413
+ end.to raise_error(NoMethodError)
414
+ end
415
+
416
+ it "hemlock works in a recipe" do
417
+ expect_recipe do
418
+ hemlock("blah") {}
419
+ end.to emit_no_warnings_or_errors
420
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::MySupplier
421
+ end
422
+ end
423
+
424
+ context "when Thingy3 has resource_name :thingy3" do
425
+ before(:each) do
426
+
427
+ class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
428
+ resource_name :thingy3
429
+ end
430
+
431
+ end
432
+
433
+ it "thingy3 works in a recipe" do
434
+ expect_recipe do
435
+ thingy3("blah") {}
436
+ end.to emit_no_warnings_or_errors
437
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
438
+ end
439
+
440
+ context "and Thingy4 has resource_name :thingy3" do
441
+ before(:each) do
442
+
443
+ class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
444
+ resource_name :thingy3
445
+ end
446
+
447
+ end
448
+
449
+ it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
450
+ recipe = converge do
451
+ thingy3("blah") {}
452
+ end
453
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
454
+ end
455
+
456
+ it "thingy4 does not work in a recipe" do
457
+ expect_converge do
458
+ thingy4("blah") {}
459
+ end.to raise_error(NoMethodError)
460
+ end
461
+
462
+ it "resource_matching_short_name returns Thingy4" do
463
+ expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
464
+ end
465
+ end
466
+ end
467
+
468
+ context "when Thingy5 has resource_name :thingy5 and provides :thingy5reverse, :thingy5_2 and :thingy5_2reverse" do
469
+ before(:each) do
470
+
471
+ class RecipeDSLSpecNamespace::Thingy5 < BaseThingy
472
+ resource_name :thingy5
473
+ provides :thingy5reverse
474
+ provides :thingy5_2
475
+ provides :thingy5_2reverse
476
+ end
477
+
478
+ end
479
+
480
+ it "thingy5 works in a recipe" do
481
+ expect_recipe do
482
+ thingy5("blah") {}
483
+ end.to emit_no_warnings_or_errors
484
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
485
+ end
486
+
487
+ context "and Thingy6 provides :thingy5" do
488
+ before(:each) do
489
+
490
+ class RecipeDSLSpecNamespace::Thingy6 < BaseThingy
491
+ resource_name :thingy6
492
+ provides :thingy5
493
+ end
494
+
495
+ end
496
+
497
+ it "thingy6 works in a recipe and yields Thingy6" do
498
+ recipe = converge do
499
+ thingy6("blah") {}
500
+ end
501
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy6
502
+ end
503
+
504
+ it "thingy5 works in a recipe and yields Foo::Thingy5 (the alphabetical one)" do
505
+ recipe = converge do
506
+ thingy5("blah") {}
507
+ end
508
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
509
+ end
510
+
511
+ it "resource_matching_short_name returns Thingy5" do
512
+ expect(Chef::Resource.resource_matching_short_name(:thingy5)).to eq RecipeDSLSpecNamespace::Thingy5
513
+ end
514
+
515
+ context "and AThingy5 provides :thingy5reverse" do
516
+ before(:each) do
517
+
518
+ class RecipeDSLSpecNamespace::AThingy5 < BaseThingy
519
+ resource_name :thingy5reverse
520
+ end
521
+
522
+ end
523
+
524
+ it "thingy5reverse works in a recipe and yields AThingy5 (the alphabetical one)" do
525
+ recipe = converge do
526
+ thingy5reverse("blah") {}
527
+ end
528
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::AThingy5
529
+ end
530
+ end
531
+
532
+ context "and ZRecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
533
+ before(:each) do
534
+
535
+ module ZRecipeDSLSpecNamespace
536
+ class Thingy5 < BaseThingy
537
+ resource_name :thingy5_2
538
+ end
539
+ end
540
+
541
+ end
542
+
543
+ it "thingy5_2 works in a recipe and yields the RecipeDSLSpaceNamespace one (the alphabetical one)" do
544
+ recipe = converge do
545
+ thingy5_2("blah") {}
546
+ end
547
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy5
548
+ end
549
+ end
550
+
551
+ context "and ARecipeDSLSpecNamespace::Thingy5 provides :thingy5_2" do
552
+ before(:each) do
553
+
554
+ module ARecipeDSLSpecNamespace
555
+ class Thingy5 < BaseThingy
556
+ resource_name :thingy5_2reverse
557
+ end
558
+ end
559
+
560
+ end
561
+
562
+ it "thingy5_2reverse works in a recipe and yields the ARecipeDSLSpaceNamespace one (the alphabetical one)" do
563
+ recipe = converge do
564
+ thingy5_2reverse("blah") {}
565
+ end
566
+ expect(BaseThingy.created_resource).to eq ARecipeDSLSpecNamespace::Thingy5
567
+ end
568
+ end
569
+ end
570
+
571
+ context "when Thingy3 has resource_name :thingy3" do
572
+ before(:each) do
573
+
574
+ class RecipeDSLSpecNamespace::Thingy3 < BaseThingy
575
+ resource_name :thingy3
576
+ end
577
+
578
+ end
579
+
580
+ it "thingy3 works in a recipe" do
581
+ expect_recipe do
582
+ thingy3("blah") {}
583
+ end.to emit_no_warnings_or_errors
584
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
585
+ end
586
+
587
+ context "and Thingy4 has resource_name :thingy3" do
588
+ before(:each) do
589
+
590
+ class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
591
+ resource_name :thingy3
592
+ end
593
+
594
+ end
595
+
596
+ it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
597
+ recipe = converge do
598
+ thingy3("blah") {}
599
+ end
600
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
601
+ end
602
+
603
+ it "thingy4 does not work in a recipe" do
604
+ expect_converge do
605
+ thingy4("blah") {}
606
+ end.to raise_error(NoMethodError)
607
+ end
608
+
609
+ it "resource_matching_short_name returns Thingy4" do
610
+ expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
611
+ end
612
+ end
613
+
614
+ context "and Thingy4 has resource_name :thingy3" do
615
+ before(:each) do
616
+
617
+ class RecipeDSLSpecNamespace::Thingy4 < BaseThingy
618
+ resource_name :thingy3
619
+ end
620
+
621
+ end
622
+
623
+ it "thingy3 works in a recipe and yields Thingy3 (the alphabetical one)" do
624
+ recipe = converge do
625
+ thingy3("blah") {}
626
+ end
627
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy3
628
+ end
629
+
630
+ it "thingy4 does not work in a recipe" do
631
+ expect_converge do
632
+ thingy4("blah") {}
633
+ end.to raise_error(NoMethodError)
634
+ end
635
+
636
+ it "resource_matching_short_name returns Thingy4" do
637
+ expect(Chef::Resource.resource_matching_short_name(:thingy3)).to eq RecipeDSLSpecNamespace::Thingy3
638
+ end
639
+ end
640
+ end
641
+
642
+ end
643
+
644
+ context "when Thingy7 provides :thingy8" do
645
+ before(:each) do
646
+
647
+ class RecipeDSLSpecNamespace::Thingy7 < BaseThingy
648
+ resource_name :thingy7
649
+ provides :thingy8
650
+ end
651
+
652
+ end
653
+
654
+ context "and Thingy8 has resource_name :thingy8" do
655
+ before(:each) do
656
+
657
+ class RecipeDSLSpecNamespace::Thingy8 < BaseThingy
658
+ resource_name :thingy8
659
+ end
660
+
661
+ end
662
+
663
+ it "thingy7 works in a recipe and yields Thingy7" do
664
+ recipe = converge do
665
+ thingy7("blah") {}
666
+ end
667
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
668
+ end
669
+
670
+ it "thingy8 works in a recipe and yields Thingy7 (alphabetical)" do
671
+ recipe = converge do
672
+ thingy8("blah") {}
673
+ end
674
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy7
675
+ end
676
+
677
+ it "resource_matching_short_name returns Thingy8" do
678
+ expect(Chef::Resource.resource_matching_short_name(:thingy8)).to eq RecipeDSLSpecNamespace::Thingy8
679
+ end
680
+ end
681
+ end
682
+
683
+ context "when Thingy12 provides :thingy12, :twizzle and :twizzle2" do
684
+ before(:each) do
685
+
686
+ class RecipeDSLSpecNamespace::Thingy12 < BaseThingy
687
+ resource_name :thingy12
688
+ provides :twizzle
689
+ provides :twizzle2
690
+ end
691
+
692
+ end
693
+
694
+ it "thingy12 works in a recipe and yields Thingy12" do
695
+ expect_recipe do
696
+ thingy12("blah") {}
697
+ end.to emit_no_warnings_or_errors
698
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
699
+ end
700
+
701
+ it "twizzle works in a recipe and yields Thingy12" do
702
+ expect_recipe do
703
+ twizzle("blah") {}
704
+ end.to emit_no_warnings_or_errors
705
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
706
+ end
707
+
708
+ it "twizzle2 works in a recipe and yields Thingy12" do
709
+ expect_recipe do
710
+ twizzle2("blah") {}
711
+ end.to emit_no_warnings_or_errors
712
+ expect(BaseThingy.created_resource).to eq RecipeDSLSpecNamespace::Thingy12
713
+ end
714
+ end
715
+
716
+ context "with platform-specific resources 'my_super_thingy_foo' and 'my_super_thingy_bar'" do
717
+ before(:each) do
718
+ class MySuperThingyFoo < BaseThingy
719
+ resource_name :my_super_thingy_foo
720
+ provides :my_super_thingy, platform: "foo"
721
+ end
722
+
723
+ class MySuperThingyBar < BaseThingy
724
+ resource_name :my_super_thingy_bar
725
+ provides :my_super_thingy, platform: "bar"
726
+ end
727
+ end
728
+
729
+ it "A run with platform 'foo' uses MySuperThingyFoo" do
730
+ r = Cheffish::ChefRun.new(chef_config)
731
+ r.client.run_context.node.automatic["platform"] = "foo"
732
+ r.compile_recipe do
733
+ my_super_thingy("blah") {}
734
+ end
735
+ r.converge
736
+ expect(r).to emit_no_warnings_or_errors
737
+ expect(BaseThingy.created_resource).to eq MySuperThingyFoo
738
+ end
739
+
740
+ it "A run with platform 'bar' uses MySuperThingyBar" do
741
+ r = Cheffish::ChefRun.new(chef_config)
742
+ r.client.run_context.node.automatic["platform"] = "bar"
743
+ r.compile_recipe do
744
+ my_super_thingy("blah") {}
745
+ end
746
+ r.converge
747
+ expect(r).to emit_no_warnings_or_errors
748
+ expect(BaseThingy.created_resource).to eq MySuperThingyBar
749
+ end
750
+
751
+ it "A run with platform 'x' reports that my_super_thingy is not supported" do
752
+ r = Cheffish::ChefRun.new(chef_config)
753
+ r.client.run_context.node.automatic["platform"] = "x"
754
+ expect do
755
+ r.compile_recipe do
756
+ my_super_thingy("blah") {}
757
+ end
758
+ end.to raise_error(Chef::Exceptions::NoSuchResourceType)
759
+ end
760
+ end
761
+
762
+ context "when Thingy10 provides :thingy10" do
763
+ before(:each) do
764
+ class RecipeDSLSpecNamespace::Thingy10 < BaseThingy
765
+ resource_name :thingy10
766
+ end
767
+ end
768
+
769
+ it "declaring a resource providing the same :thingy10 with override: true does not produce a warning" do
770
+ expect(Chef::Log).not_to receive(:warn)
771
+ class RecipeDSLSpecNamespace::Thingy10AlternateProvider < BaseThingy
772
+ provides :thingy10, override: true
773
+ end
774
+ end
775
+ end
776
+
777
+ context "when Thingy11 provides :thingy11" do
778
+ before(:each) do
779
+ class RecipeDSLSpecNamespace::Thingy11 < BaseThingy
780
+ resource_name :thingy10
781
+ end
782
+ end
783
+
784
+ it "declaring a resource providing the same :thingy11 with os: 'linux' does not produce a warning" do
785
+ expect(Chef::Log).not_to receive(:warn)
786
+ class RecipeDSLSpecNamespace::Thingy11AlternateProvider < BaseThingy
787
+ provides :thingy11, os: "linux"
788
+ end
789
+ end
790
+ end
791
+ end
792
+
793
+ context "with a resource named 'B' with resource name :two_classes_one_dsl" do
794
+ let(:two_classes_one_dsl) { :"two_classes_one_dsl#{Namer.current_index}" }
795
+ let(:resource_class) do
796
+ result = Class.new(BaseThingy) do
797
+ def self.name
798
+ "B"
799
+ end
800
+
801
+ def self.to_s; name; end
802
+
803
+ def self.inspect; name.inspect; end
804
+ end
805
+ result.resource_name two_classes_one_dsl
806
+ result
807
+ end
808
+ before { resource_class } # pull on it so it gets defined before the recipe runs
809
+
810
+ context "and another resource named 'A' with resource_name :two_classes_one_dsl" do
811
+ let(:resource_class_a) do
812
+ result = Class.new(BaseThingy) do
813
+ def self.name
814
+ "A"
815
+ end
816
+
817
+ def self.to_s; name; end
818
+
819
+ def self.inspect; name.inspect; end
820
+ end
821
+ result.resource_name two_classes_one_dsl
822
+ result
823
+ end
824
+ before { resource_class_a } # pull on it so it gets defined before the recipe runs
825
+
826
+ it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
827
+ temp_two_classes_one_dsl = two_classes_one_dsl
828
+ recipe = converge do
829
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
830
+ end
831
+ expect(recipe.logged_warnings).to eq ""
832
+ expect(BaseThingy.created_resource).to eq resource_class_a
833
+ end
834
+
835
+ it "resource_matching_short_name returns B" do
836
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class_a
837
+ end
838
+ end
839
+
840
+ context "and another resource named 'Z' with resource_name :two_classes_one_dsl" do
841
+ let(:resource_class_z) do
842
+ result = Class.new(BaseThingy) do
843
+ def self.name
844
+ "Z"
845
+ end
846
+
847
+ def self.to_s; name; end
848
+
849
+ def self.inspect; name.inspect; end
850
+ end
851
+ result.resource_name two_classes_one_dsl
852
+ result
853
+ end
854
+ before { resource_class_z } # pull on it so it gets defined before the recipe runs
855
+
856
+ it "two_classes_one_dsl resolves to B (alphabetically earliest)" do
857
+ temp_two_classes_one_dsl = two_classes_one_dsl
858
+ recipe = converge do
859
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
860
+ end
861
+ expect(recipe.logged_warnings).to eq ""
862
+ expect(BaseThingy.created_resource).to eq resource_class
863
+ end
864
+
865
+ it "resource_matching_short_name returns B" do
866
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
867
+ end
868
+
869
+ context "and a priority array [ Z, B ]" do
870
+ before do
871
+ Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z, resource_class ])
872
+ end
873
+
874
+ it "two_classes_one_dsl resolves to Z (respects the priority array)" do
875
+ temp_two_classes_one_dsl = two_classes_one_dsl
876
+ recipe = converge do
877
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
878
+ end
879
+ expect(recipe.logged_warnings).to eq ""
880
+ expect(BaseThingy.created_resource).to eq resource_class_z
881
+ end
882
+
883
+ it "resource_matching_short_name returns B" do
884
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
885
+ end
886
+
887
+ context "when Z provides(:two_classes_one_dsl) { false }" do
888
+ before do
889
+ resource_class_z.provides(two_classes_one_dsl) { false }
890
+ end
891
+
892
+ it "two_classes_one_dsl resolves to B (picks the next thing in the priority array)" do
893
+ temp_two_classes_one_dsl = two_classes_one_dsl
894
+ recipe = converge do
895
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
896
+ end
897
+ expect(recipe.logged_warnings).to eq ""
898
+ expect(BaseThingy.created_resource).to eq resource_class
899
+ end
900
+
901
+ it "resource_matching_short_name returns B" do
902
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
903
+ end
904
+ end
905
+ end
906
+
907
+ context "and priority arrays [ B ] and [ Z ]" do
908
+ before do
909
+ Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class ])
910
+ Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
911
+ end
912
+
913
+ it "two_classes_one_dsl resolves to Z (respects the most recent priority array)" do
914
+ temp_two_classes_one_dsl = two_classes_one_dsl
915
+ recipe = converge do
916
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
917
+ end
918
+ expect(recipe.logged_warnings).to eq ""
919
+ expect(BaseThingy.created_resource).to eq resource_class_z
920
+ end
921
+
922
+ it "resource_matching_short_name returns B" do
923
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
924
+ end
925
+
926
+ context "when Z provides(:two_classes_one_dsl) { false }" do
927
+ before do
928
+ resource_class_z.provides(two_classes_one_dsl) { false }
929
+ end
930
+
931
+ it "two_classes_one_dsl resolves to B (picks the first match from the other priority array)" do
932
+ temp_two_classes_one_dsl = two_classes_one_dsl
933
+ recipe = converge do
934
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
935
+ end
936
+ expect(recipe.logged_warnings).to eq ""
937
+ expect(BaseThingy.created_resource).to eq resource_class
938
+ end
939
+
940
+ it "resource_matching_short_name returns B" do
941
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
942
+ end
943
+ end
944
+ end
945
+
946
+ context "and a priority array [ Z ]" do
947
+ before do
948
+ Chef.set_resource_priority_array(two_classes_one_dsl, [ resource_class_z ])
949
+ end
950
+
951
+ context "when Z provides(:two_classes_one_dsl) { false }" do
952
+ before do
953
+ resource_class_z.provides(two_classes_one_dsl) { false }
954
+ end
955
+
956
+ it "two_classes_one_dsl resolves to B (picks the first match outside the priority array)" do
957
+ temp_two_classes_one_dsl = two_classes_one_dsl
958
+ recipe = converge do
959
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
960
+ end
961
+ expect(recipe.logged_warnings).to eq ""
962
+ expect(BaseThingy.created_resource).to eq resource_class
963
+ end
964
+
965
+ it "resource_matching_short_name returns B" do
966
+ expect(Chef::Resource.resource_matching_short_name(two_classes_one_dsl)).to eq resource_class
967
+ end
968
+ end
969
+ end
970
+
971
+ end
972
+
973
+ context "and a provider named 'B' which provides :two_classes_one_dsl" do
974
+ before do
975
+ resource_class.send(:define_method, :provider) { nil }
976
+ end
977
+
978
+ let(:provider_class) do
979
+ result = Class.new(BaseThingy::Provider) do
980
+ def self.name
981
+ "B"
982
+ end
983
+
984
+ def self.to_s; name; end
985
+
986
+ def self.inspect; name.inspect; end
987
+ end
988
+ result.provides two_classes_one_dsl
989
+ result
990
+ end
991
+ before { provider_class } # pull on it so it gets defined before the recipe runs
992
+
993
+ context "and another provider named 'A'" do
994
+ let(:provider_class_a) do
995
+ result = Class.new(BaseThingy::Provider) do
996
+ def self.name
997
+ "A"
998
+ end
999
+
1000
+ def self.to_s; name; end
1001
+
1002
+ def self.inspect; name.inspect; end
1003
+ end
1004
+ result
1005
+ end
1006
+ context "which provides :two_classes_one_dsl" do
1007
+ before { provider_class_a.provides two_classes_one_dsl }
1008
+
1009
+ it "two_classes_one_dsl resolves to A (alphabetically earliest)" do
1010
+ temp_two_classes_one_dsl = two_classes_one_dsl
1011
+ recipe = converge do
1012
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1013
+ end
1014
+ expect(recipe.logged_warnings).to eq ""
1015
+ expect(BaseThingy.created_provider).to eq provider_class_a
1016
+ end
1017
+ end
1018
+ context "which provides(:two_classes_one_dsl) { false }" do
1019
+ before { provider_class_a.provides(two_classes_one_dsl) { false } }
1020
+
1021
+ it "two_classes_one_dsl resolves to B (since A declined)" do
1022
+ temp_two_classes_one_dsl = two_classes_one_dsl
1023
+ recipe = converge do
1024
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1025
+ end
1026
+ expect(recipe.logged_warnings).to eq ""
1027
+ expect(BaseThingy.created_provider).to eq provider_class
1028
+ end
1029
+ end
1030
+ end
1031
+
1032
+ context "and another provider named 'Z'" do
1033
+ let(:provider_class_z) do
1034
+ result = Class.new(BaseThingy::Provider) do
1035
+ def self.name
1036
+ "Z"
1037
+ end
1038
+
1039
+ def self.to_s; name; end
1040
+
1041
+ def self.inspect; name.inspect; end
1042
+ end
1043
+ result
1044
+ end
1045
+ before { provider_class_z } # pull on it so it gets defined before the recipe runs
1046
+
1047
+ context "which provides :two_classes_one_dsl" do
1048
+ before { provider_class_z.provides two_classes_one_dsl }
1049
+
1050
+ it "two_classes_one_dsl resolves to B (alphabetically earliest)" do
1051
+ temp_two_classes_one_dsl = two_classes_one_dsl
1052
+ recipe = converge do
1053
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1054
+ end
1055
+ expect(recipe.logged_warnings).to eq ""
1056
+ expect(BaseThingy.created_provider).to eq provider_class
1057
+ end
1058
+
1059
+ context "with a priority array [ Z, B ]" do
1060
+ before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
1061
+
1062
+ it "two_classes_one_dsl resolves to Z (respects the priority map)" do
1063
+ temp_two_classes_one_dsl = two_classes_one_dsl
1064
+ recipe = converge do
1065
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1066
+ end
1067
+ expect(recipe.logged_warnings).to eq ""
1068
+ expect(BaseThingy.created_provider).to eq provider_class_z
1069
+ end
1070
+ end
1071
+ end
1072
+
1073
+ context "which provides(:two_classes_one_dsl) { false }" do
1074
+ before { provider_class_z.provides(two_classes_one_dsl) { false } }
1075
+
1076
+ context "with a priority array [ Z, B ]" do
1077
+ before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z, provider_class ] }
1078
+
1079
+ it "two_classes_one_dsl resolves to B (the next one in the priority map)" do
1080
+ temp_two_classes_one_dsl = two_classes_one_dsl
1081
+ recipe = converge do
1082
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1083
+ end
1084
+ expect(recipe.logged_warnings).to eq ""
1085
+ expect(BaseThingy.created_provider).to eq provider_class
1086
+ end
1087
+ end
1088
+
1089
+ context "with priority arrays [ B ] and [ Z ]" do
1090
+ before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class_z ] }
1091
+ before { Chef.set_provider_priority_array two_classes_one_dsl, [ provider_class ] }
1092
+
1093
+ it "two_classes_one_dsl resolves to B (the one in the next priority map)" do
1094
+ temp_two_classes_one_dsl = two_classes_one_dsl
1095
+ recipe = converge do
1096
+ instance_eval("#{temp_two_classes_one_dsl} 'blah'")
1097
+ end
1098
+ expect(recipe.logged_warnings).to eq ""
1099
+ expect(BaseThingy.created_provider).to eq provider_class
1100
+ end
1101
+ end
1102
+ end
1103
+ end
1104
+ end
1105
+
1106
+ context "and another resource Blarghle with provides :two_classes_one_dsl, os: 'blarghle'" do
1107
+ let(:resource_class_blarghle) do
1108
+ result = Class.new(BaseThingy) do
1109
+ def self.name
1110
+ "Blarghle"
1111
+ end
1112
+
1113
+ def self.to_s; name; end
1114
+
1115
+ def self.inspect; name.inspect; end
1116
+ end
1117
+ result.resource_name two_classes_one_dsl
1118
+ result.provides two_classes_one_dsl, os: "blarghle"
1119
+ result
1120
+ end
1121
+ before { resource_class_blarghle } # pull on it so it gets defined before the recipe runs
1122
+
1123
+ it "on os = blarghle, two_classes_one_dsl resolves to Blarghle" do
1124
+ temp_two_classes_one_dsl = two_classes_one_dsl
1125
+ recipe = converge do
1126
+ # this is an ugly way to test, make Cheffish expose node attrs
1127
+ run_context.node.automatic[:os] = "blarghle"
1128
+ instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
1129
+ end
1130
+ expect(recipe.logged_warnings).to eq ""
1131
+ expect(BaseThingy.created_resource).to eq resource_class_blarghle
1132
+ end
1133
+
1134
+ it "on os = linux, two_classes_one_dsl resolves to B" do
1135
+ temp_two_classes_one_dsl = two_classes_one_dsl
1136
+ recipe = converge do
1137
+ # this is an ugly way to test, make Cheffish expose node attrs
1138
+ run_context.node.automatic[:os] = "linux"
1139
+ instance_eval("#{temp_two_classes_one_dsl} 'blah' do; end")
1140
+ end
1141
+ expect(recipe.logged_warnings).to eq ""
1142
+ expect(BaseThingy.created_resource).to eq resource_class
1143
+ end
1144
+ end
1145
+ end
1146
+
1147
+ context "with a resource MyResource" do
1148
+ let(:resource_class) do
1149
+ Class.new(BaseThingy) do
1150
+ def self.called_provides
1151
+ @called_provides
1152
+ end
1153
+
1154
+ def to_s
1155
+ "MyResource"
1156
+ end
1157
+ end end
1158
+ let(:my_resource) { :"my_resource#{Namer.current_index}" }
1159
+ let(:blarghle_blarghle_little_star) { :"blarghle_blarghle_little_star#{Namer.current_index}" }
1160
+
1161
+ context "with resource_name :my_resource" do
1162
+ before do
1163
+ resource_class.resource_name my_resource
1164
+ end
1165
+
1166
+ context "with provides? returning true to my_resource" do
1167
+ before do
1168
+ temp_my_resource = my_resource
1169
+ resource_class.define_singleton_method(:provides?) do |node, resource_name|
1170
+ @called_provides = true
1171
+ resource_name == temp_my_resource
1172
+ end
1173
+ end
1174
+
1175
+ it "my_resource returns the resource and calls provides?, but does not emit a warning" do
1176
+ dsl_name = my_resource
1177
+ recipe = converge do
1178
+ instance_eval("#{dsl_name} 'foo'")
1179
+ end
1180
+ expect(recipe.logged_warnings).to eq ""
1181
+ expect(BaseThingy.created_resource).to eq resource_class
1182
+ expect(resource_class.called_provides).to be_truthy
1183
+ end
1184
+ end
1185
+
1186
+ context "and a provider" do
1187
+ let(:provider_class) do
1188
+ Class.new(BaseThingy::Provider) do
1189
+ def self.name
1190
+ "MyProvider"
1191
+ end
1192
+
1193
+ def self.to_s; name; end
1194
+
1195
+ def self.inspect; name.inspect; end
1196
+
1197
+ def self.called_provides
1198
+ @called_provides
1199
+ end
1200
+ end
1201
+ end
1202
+
1203
+ before do
1204
+ resource_class.send(:define_method, :provider) { nil }
1205
+ end
1206
+
1207
+ context "that provides :my_resource" do
1208
+ before do
1209
+ provider_class.provides my_resource
1210
+ end
1211
+
1212
+ context "with supports? returning true" do
1213
+ before do
1214
+ provider_class.define_singleton_method(:supports?) { |resource, action| true }
1215
+ end
1216
+
1217
+ it "my_resource runs the provider and does not emit a warning" do
1218
+ temp_my_resource = my_resource
1219
+ recipe = converge do
1220
+ instance_eval("#{temp_my_resource} 'foo'")
1221
+ end
1222
+ expect(recipe.logged_warnings).to eq ""
1223
+ expect(BaseThingy.created_provider).to eq provider_class
1224
+ end
1225
+
1226
+ context "and another provider supporting :my_resource with supports? false" do
1227
+ let(:provider_class2) do
1228
+ Class.new(BaseThingy::Provider) do
1229
+ def self.name
1230
+ "MyProvider2"
1231
+ end
1232
+
1233
+ def self.to_s; name; end
1234
+
1235
+ def self.inspect; name.inspect; end
1236
+
1237
+ def self.called_provides
1238
+ @called_provides
1239
+ end
1240
+ provides my_resource
1241
+ def self.supports?(resource, action)
1242
+ false
1243
+ end
1244
+ end
1245
+ end
1246
+
1247
+ it "my_resource runs the first provider" do
1248
+ temp_my_resource = my_resource
1249
+ recipe = converge do
1250
+ instance_eval("#{temp_my_resource} 'foo'")
1251
+ end
1252
+ expect(recipe.logged_warnings).to eq ""
1253
+ expect(BaseThingy.created_provider).to eq provider_class
1254
+ end
1255
+ end
1256
+ end
1257
+
1258
+ context "with supports? returning false" do
1259
+ before do
1260
+ provider_class.define_singleton_method(:supports?) { |resource, action| false }
1261
+ end
1262
+
1263
+ # TODO no warning? ick
1264
+ it "my_resource runs the provider anyway" do
1265
+ temp_my_resource = my_resource
1266
+ recipe = converge do
1267
+ instance_eval("#{temp_my_resource} 'foo'")
1268
+ end
1269
+ expect(recipe.logged_warnings).to eq ""
1270
+ expect(BaseThingy.created_provider).to eq provider_class
1271
+ end
1272
+
1273
+ context "and another provider supporting :my_resource with supports? true" do
1274
+ let(:provider_class2) do
1275
+ temp_my_resource = my_resource
1276
+ Class.new(BaseThingy::Provider) do
1277
+ def self.name
1278
+ "MyProvider2"
1279
+ end
1280
+
1281
+ def self.to_s; name; end
1282
+
1283
+ def self.inspect; name.inspect; end
1284
+
1285
+ def self.called_provides
1286
+ @called_provides
1287
+ end
1288
+ provides temp_my_resource
1289
+ def self.supports?(resource, action)
1290
+ true
1291
+ end
1292
+ end
1293
+ end
1294
+ before { provider_class2 } # make sure the provider class shows up
1295
+
1296
+ it "my_resource runs the other provider" do
1297
+ temp_my_resource = my_resource
1298
+ recipe = converge do
1299
+ instance_eval("#{temp_my_resource} 'foo'")
1300
+ end
1301
+ expect(recipe.logged_warnings).to eq ""
1302
+ expect(BaseThingy.created_provider).to eq provider_class2
1303
+ end
1304
+ end
1305
+ end
1306
+ end
1307
+ end
1308
+ end
1309
+ end
1310
+
1311
+ context "with UTF-8 provides" do
1312
+ before(:each) do
1313
+ class UTF8Thingy < BaseThingy
1314
+ resource_name :Straße
1315
+ provides :Straße
1316
+ end
1317
+ end
1318
+
1319
+ it "utf-8 dsl names work" do
1320
+ recipe = converge do
1321
+ Straße("blah") {}
1322
+ end
1323
+ expect(recipe.logged_warnings).to eq ""
1324
+ expect(BaseThingy.created_resource).to eq(UTF8Thingy)
1325
+ end
1326
+ end
1327
+ end
1328
+
1329
+ before(:all) { Namer.current_index = 0 }
1330
+ before { Namer.current_index += 1 }
1331
+
1332
+ context "with an LWRP that declares actions" do
1333
+ let(:resource_class) do
1334
+ Class.new(Chef::Resource::LWRPBase) do
1335
+ provides :"recipe_dsl_spec#{Namer.current_index}"
1336
+ actions :create
1337
+ end
1338
+ end
1339
+ let(:resource) do
1340
+ resource_class.new("blah", run_context)
1341
+ end
1342
+ it "The actions are part of actions along with :nothing" do
1343
+ expect(resource_class.actions).to eq [ :nothing, :create ]
1344
+ end
1345
+ it "The actions are part of allowed_actions along with :nothing" do
1346
+ expect(resource.allowed_actions).to eq [ :nothing, :create ]
1347
+ end
1348
+
1349
+ context "and a subclass that declares more actions" do
1350
+ let(:subresource_class) do
1351
+ Class.new(Chef::Resource::LWRPBase) do
1352
+ provides :"recipe_dsl_spec_sub#{Namer.current_index}"
1353
+ actions :delete
1354
+ end
1355
+ end
1356
+ let(:subresource) do
1357
+ subresource_class.new("subblah", run_context)
1358
+ end
1359
+
1360
+ it "The parent class actions are not part of actions" do
1361
+ expect(subresource_class.actions).to eq [ :nothing, :delete ]
1362
+ end
1363
+ it "The parent class actions are not part of allowed_actions" do
1364
+ expect(subresource.allowed_actions).to eq [ :nothing, :delete ]
1365
+ end
1366
+ it "The parent class actions do not change" do
1367
+ expect(resource_class.actions).to eq [ :nothing, :create ]
1368
+ expect(resource.allowed_actions).to eq [ :nothing, :create ]
1369
+ end
1370
+ end
1371
+ end
1372
+
1373
+ end