chefspec 7.2.1 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (342) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +21 -13
  3. data/CHANGELOG.md +4 -0
  4. data/Gemfile +14 -10
  5. data/README.md +322 -1025
  6. data/README_old.md +1291 -0
  7. data/Rakefile +8 -3
  8. data/examples/apt_package/spec/install_spec.rb +1 -1
  9. data/examples/apt_package/spec/lock_spec.rb +1 -1
  10. data/examples/apt_package/spec/purge_spec.rb +1 -1
  11. data/examples/apt_package/spec/reconfig_spec.rb +1 -1
  12. data/examples/apt_package/spec/remove_spec.rb +1 -1
  13. data/examples/apt_package/spec/unlock_spec.rb +1 -1
  14. data/examples/apt_package/spec/upgrade_spec.rb +1 -1
  15. data/examples/apt_repository/spec/add_spec.rb +1 -1
  16. data/examples/apt_repository/spec/remove_spec.rb +1 -1
  17. data/examples/apt_update/spec/periodic_spec.rb +1 -1
  18. data/examples/apt_update/spec/update_spec.rb +1 -1
  19. data/examples/attributes/spec/default_spec.rb +1 -1
  20. data/examples/batch/spec/run_spec.rb +1 -1
  21. data/examples/cab_package/spec/install_spec.rb +1 -1
  22. data/examples/cab_package/spec/remove_spec.rb +1 -1
  23. data/examples/cached/spec/default_spec.rb +1 -1
  24. data/examples/chef_gem/spec/install_spec.rb +1 -1
  25. data/examples/chef_gem/spec/purge_spec.rb +1 -1
  26. data/examples/chef_gem/spec/reconfig_spec.rb +1 -1
  27. data/examples/chef_gem/spec/remove_spec.rb +1 -1
  28. data/examples/chef_gem/spec/upgrade_spec.rb +1 -1
  29. data/examples/chocolatey_package/spec/install_spec.rb +1 -1
  30. data/examples/chocolatey_package/spec/remove_spec.rb +1 -1
  31. data/examples/chocolatey_package/spec/upgrade_spec.rb +1 -1
  32. data/examples/compile_time/spec/default_spec.rb +1 -1
  33. data/examples/cookbook_file/spec/create_if_missing_spec.rb +1 -1
  34. data/examples/cookbook_file/spec/create_spec.rb +1 -1
  35. data/examples/cookbook_file/spec/delete_spec.rb +1 -1
  36. data/examples/cookbook_file/spec/touch_spec.rb +1 -1
  37. data/examples/core/recipes/default.rb +1 -0
  38. data/examples/core/spec/default_spec.rb +7 -0
  39. data/examples/core/spec/non_recipe_spec.rb +5 -0
  40. data/examples/cron/spec/create_spec.rb +1 -1
  41. data/examples/cron/spec/delete_spec.rb +1 -1
  42. data/examples/custom_matcher/spec/install_spec.rb +1 -1
  43. data/examples/custom_matcher/spec/remove_spec.rb +1 -1
  44. data/examples/custom_resource/spec/default_spec.rb +1 -1
  45. data/examples/custom_resource_block/resources/default.rb +3 -0
  46. data/examples/custom_resource_block/spec/default_spec.rb +10 -0
  47. data/examples/directory/spec/create_spec.rb +1 -1
  48. data/examples/directory/spec/delete_spec.rb +1 -1
  49. data/examples/dnf_package/spec/install_spec.rb +1 -1
  50. data/examples/dnf_package/spec/purge_spec.rb +1 -1
  51. data/examples/dnf_package/spec/remove_spec.rb +1 -1
  52. data/examples/dnf_package/spec/upgrade_spec.rb +1 -1
  53. data/examples/do_nothing/spec/default_spec.rb +1 -1
  54. data/examples/dpkg_package/spec/install_spec.rb +1 -1
  55. data/examples/dpkg_package/spec/purge_spec.rb +1 -1
  56. data/examples/dpkg_package/spec/remove_spec.rb +1 -1
  57. data/examples/dsc_resource/spec/run_spec.rb +1 -1
  58. data/examples/dsc_script/spec/run_spec.rb +1 -1
  59. data/examples/env/spec/create_spec.rb +1 -1
  60. data/examples/env/spec/delete_spec.rb +1 -1
  61. data/examples/env/spec/modify_spec.rb +1 -1
  62. data/examples/execute/spec/run_spec.rb +1 -1
  63. data/examples/expect_exception/spec/compile_error_spec.rb +1 -1
  64. data/examples/expect_exception/spec/converge_error_spec.rb +1 -1
  65. data/examples/expect_exception/spec/no_error_spec.rb +1 -1
  66. data/examples/file/spec/create_if_missing_spec.rb +1 -1
  67. data/examples/file/spec/create_spec.rb +1 -1
  68. data/examples/file/spec/delete_spec.rb +1 -1
  69. data/examples/file/spec/touch_spec.rb +1 -1
  70. data/examples/freebsd_package/spec/install_spec.rb +1 -1
  71. data/examples/freebsd_package/spec/remove_spec.rb +1 -1
  72. data/examples/gem_package/spec/install_spec.rb +1 -1
  73. data/examples/gem_package/spec/purge_spec.rb +1 -1
  74. data/examples/gem_package/spec/reconfig_spec.rb +1 -1
  75. data/examples/gem_package/spec/remove_spec.rb +1 -1
  76. data/examples/gem_package/spec/upgrade_spec.rb +1 -1
  77. data/examples/git/spec/checkout_spec.rb +1 -1
  78. data/examples/git/spec/export_spec.rb +1 -1
  79. data/examples/git/spec/sync_spec.rb +1 -1
  80. data/examples/group/spec/create_spec.rb +1 -1
  81. data/examples/group/spec/manage_spec.rb +1 -1
  82. data/examples/group/spec/modify_spec.rb +1 -1
  83. data/examples/group/spec/remove_spec.rb +1 -1
  84. data/examples/guards/spec/default_spec.rb +1 -1
  85. data/examples/heavy_provider_light_resource/spec/provider_service_spec.rb +1 -1
  86. data/examples/homebrew_package/spec/install_spec.rb +1 -1
  87. data/examples/homebrew_package/spec/purge_spec.rb +1 -1
  88. data/examples/homebrew_package/spec/remove_spec.rb +1 -1
  89. data/examples/homebrew_package/spec/upgrade_spec.rb +1 -1
  90. data/examples/http_request/spec/delete_spec.rb +1 -1
  91. data/examples/http_request/spec/get_spec.rb +1 -1
  92. data/examples/http_request/spec/head_spec.rb +1 -1
  93. data/examples/http_request/spec/options_spec.rb +1 -1
  94. data/examples/http_request/spec/post_spec.rb +1 -1
  95. data/examples/http_request/spec/put_spec.rb +1 -1
  96. data/examples/ifconfig/spec/add_spec.rb +1 -1
  97. data/examples/ifconfig/spec/delete_spec.rb +1 -1
  98. data/examples/ifconfig/spec/disable_spec.rb +1 -1
  99. data/examples/ifconfig/spec/enable_spec.rb +1 -1
  100. data/examples/include_recipe/spec/default_spec.rb +1 -1
  101. data/examples/ips_package/spec/install_spec.rb +1 -1
  102. data/examples/ips_package/spec/remove_spec.rb +1 -1
  103. data/examples/ips_package/spec/upgrade_spec.rb +1 -1
  104. data/examples/launchd/spec/create_if_missing_spec.rb +1 -1
  105. data/examples/launchd/spec/create_spec.rb +1 -1
  106. data/examples/launchd/spec/delete_spec.rb +1 -1
  107. data/examples/launchd/spec/disable_spec.rb +1 -1
  108. data/examples/launchd/spec/enable_spec.rb +1 -1
  109. data/examples/library_patch/libraries/default.rb +5 -0
  110. data/examples/library_patch/recipes/default.rb +1 -0
  111. data/examples/library_patch/spec/default_spec.rb +14 -0
  112. data/examples/link/spec/create_spec.rb +1 -1
  113. data/examples/link/spec/delete_spec.rb +1 -1
  114. data/examples/link/spec/link_to_spec.rb +1 -1
  115. data/examples/log/spec/write_spec.rb +1 -1
  116. data/examples/macports_package/spec/install_spec.rb +1 -1
  117. data/examples/macports_package/spec/purge_spec.rb +1 -1
  118. data/examples/macports_package/spec/remove_spec.rb +1 -1
  119. data/examples/macports_package/spec/upgrade_spec.rb +1 -1
  120. data/examples/mdadm/spec/assemble_spec.rb +1 -1
  121. data/examples/mdadm/spec/create_spec.rb +1 -1
  122. data/examples/mdadm/spec/stop_spec.rb +1 -1
  123. data/examples/mount/spec/disable_spec.rb +1 -1
  124. data/examples/mount/spec/enable_spec.rb +1 -1
  125. data/examples/mount/spec/mount_spec.rb +1 -1
  126. data/examples/mount/spec/remount_spec.rb +1 -1
  127. data/examples/mount/spec/umount_spec.rb +1 -1
  128. data/examples/msu_package/spec/install_spec.rb +1 -1
  129. data/examples/msu_package/spec/remove_spec.rb +1 -1
  130. data/examples/multiple_actions/spec/default_spec.rb +1 -1
  131. data/examples/multiple_actions/spec/reversed_spec.rb +1 -1
  132. data/examples/multiple_actions/spec/sequential_spec.rb +1 -1
  133. data/examples/multiple_run_action/spec/default_spec.rb +1 -1
  134. data/examples/nothing_matcher/spec/default_spec.rb +1 -1
  135. data/examples/notifications/spec/before_spec.rb +1 -1
  136. data/examples/notifications/spec/chained_spec.rb +1 -1
  137. data/examples/notifications/spec/default_spec.rb +1 -1
  138. data/examples/notifications/spec/delayed_spec.rb +1 -1
  139. data/examples/notifications/spec/immediately_spec.rb +1 -1
  140. data/examples/ohai/spec/reload_spec.rb +1 -1
  141. data/examples/osx_profile/spec/install_spec.rb +1 -1
  142. data/examples/osx_profile/spec/remove_spec.rb +1 -1
  143. data/examples/package/spec/install_spec.rb +1 -1
  144. data/examples/package/spec/lock_spec.rb +1 -1
  145. data/examples/package/spec/purge_spec.rb +1 -1
  146. data/examples/package/spec/reconfig_spec.rb +1 -1
  147. data/examples/package/spec/remove_spec.rb +1 -1
  148. data/examples/package/spec/unlock_spec.rb +1 -1
  149. data/examples/package/spec/upgrade_spec.rb +1 -1
  150. data/examples/pacman_package/spec/install_spec.rb +1 -1
  151. data/examples/pacman_package/spec/purge_spec.rb +1 -1
  152. data/examples/pacman_package/spec/remove_spec.rb +1 -1
  153. data/examples/pacman_package/spec/upgrade_spec.rb +1 -1
  154. data/examples/paludis_package/spec/install_spec.rb +1 -1
  155. data/examples/paludis_package/spec/purge_spec.rb +1 -1
  156. data/examples/paludis_package/spec/remove_spec.rb +1 -1
  157. data/examples/paludis_package/spec/upgrade_spec.rb +1 -1
  158. data/examples/portage_package/spec/install_spec.rb +1 -1
  159. data/examples/portage_package/spec/purge_spec.rb +1 -1
  160. data/examples/portage_package/spec/remove_spec.rb +1 -1
  161. data/examples/portage_package/spec/upgrade_spec.rb +1 -1
  162. data/examples/powershell_script/spec/run_spec.rb +1 -1
  163. data/examples/reboot/spec/cancel_spec.rb +1 -1
  164. data/examples/reboot/spec/now_spec.rb +1 -1
  165. data/examples/reboot/spec/request_spec.rb +1 -1
  166. data/examples/recipe_block/metadata.rb +1 -0
  167. data/examples/recipe_block/spec/recipe_block_spec.rb +34 -0
  168. data/examples/recipe_block/templates/apache2.conf.erb +1 -0
  169. data/examples/registry_key/spec/create_if_missing_spec.rb +1 -1
  170. data/examples/registry_key/spec/create_spec.rb +1 -1
  171. data/examples/registry_key/spec/delete_key_spec.rb +1 -1
  172. data/examples/registry_key/spec/delete_spec.rb +1 -1
  173. data/examples/remote_directory/spec/create_if_missing_spec.rb +1 -1
  174. data/examples/remote_directory/spec/create_spec.rb +1 -1
  175. data/examples/remote_directory/spec/delete_spec.rb +1 -1
  176. data/examples/remote_file/spec/create_if_missing_spec.rb +1 -1
  177. data/examples/remote_file/spec/create_spec.rb +1 -1
  178. data/examples/remote_file/spec/delete_spec.rb +1 -1
  179. data/examples/remote_file/spec/touch_spec.rb +1 -1
  180. data/examples/render_file/spec/default_spec.rb +12 -1
  181. data/examples/render_file/spec/template_helpers_spec.rb +1 -1
  182. data/examples/roles/spec/default_spec.rb +1 -1
  183. data/examples/route/spec/add_spec.rb +1 -1
  184. data/examples/route/spec/delete_spec.rb +1 -1
  185. data/examples/rpm_package/spec/install_spec.rb +1 -1
  186. data/examples/rpm_package/spec/remove_spec.rb +1 -1
  187. data/examples/rpm_package/spec/upgrade_spec.rb +1 -1
  188. data/examples/ruby_block/spec/create_spec.rb +1 -1
  189. data/examples/ruby_block/spec/run_spec.rb +1 -1
  190. data/examples/runner/recipes/default.rb +1 -0
  191. data/examples/runner/spec/default_spec.rb +11 -0
  192. data/examples/script/spec/run_bash_spec.rb +1 -1
  193. data/examples/script/spec/run_csh_spec.rb +1 -1
  194. data/examples/script/spec/run_ksh_spec.rb +1 -1
  195. data/examples/script/spec/run_perl_spec.rb +1 -1
  196. data/examples/script/spec/run_python_spec.rb +1 -1
  197. data/examples/script/spec/run_ruby_spec.rb +1 -1
  198. data/examples/script/spec/run_script_spec.rb +1 -1
  199. data/examples/server/spec/client_spec.rb +1 -1
  200. data/examples/server/spec/data_bag_spec.rb +1 -1
  201. data/examples/server/spec/environment_spec.rb +1 -1
  202. data/examples/server/spec/exotic_port_spec.rb +1 -1
  203. data/examples/server/spec/node_spec.rb +4 -4
  204. data/examples/server/spec/render_with_cached_spec.rb +1 -1
  205. data/examples/server/spec/role_spec.rb +1 -1
  206. data/examples/server/spec/search_spec.rb +1 -1
  207. data/examples/service/spec/disable_spec.rb +1 -1
  208. data/examples/service/spec/enable_spec.rb +1 -1
  209. data/examples/service/spec/reload_spec.rb +1 -1
  210. data/examples/service/spec/restart_spec.rb +1 -1
  211. data/examples/service/spec/start_spec.rb +1 -1
  212. data/examples/service/spec/stop_spec.rb +1 -1
  213. data/examples/smartos_package/spec/install_spec.rb +1 -1
  214. data/examples/smartos_package/spec/remove_spec.rb +1 -1
  215. data/examples/smartos_package/spec/upgrade_spec.rb +1 -1
  216. data/examples/solaris_package/spec/install_spec.rb +1 -1
  217. data/examples/solaris_package/spec/remove_spec.rb +1 -1
  218. data/examples/solaris_package/spec/upgrade_spec.rb +1 -1
  219. data/examples/spec_attributes/attributes/default.rb +1 -0
  220. data/examples/spec_attributes/recipes/default.rb +5 -0
  221. data/examples/spec_attributes/spec/default_spec.rb +54 -0
  222. data/examples/spec_platform/recipes/default.rb +3 -0
  223. data/examples/spec_platform/spec/default_spec.rb +36 -0
  224. data/examples/spec_step_into/recipes/default.rb +3 -0
  225. data/examples/spec_step_into/resources/one.rb +3 -0
  226. data/examples/spec_step_into/resources/two.rb +3 -0
  227. data/examples/spec_step_into/spec/default_spec.rb +50 -0
  228. data/examples/state_attrs/spec/default_spec.rb +1 -1
  229. data/examples/step_into/spec/default_spec.rb +2 -2
  230. data/examples/stub_command/spec/default_spec.rb +1 -1
  231. data/examples/stub_data_bag/spec/default_spec.rb +1 -1
  232. data/examples/stub_data_bag_item/spec/default_spec.rb +1 -1
  233. data/examples/stub_node/spec/default_spec.rb +1 -1
  234. data/examples/stub_search/spec/block_spec.rb +1 -1
  235. data/examples/stub_search/spec/default_spec.rb +1 -1
  236. data/examples/stubs_for/resources/default.rb +20 -0
  237. data/examples/stubs_for/resources/old.rb +26 -0
  238. data/examples/stubs_for/spec/default_spec.rb +240 -0
  239. data/examples/subscribes/spec/before_spec.rb +1 -1
  240. data/examples/subscribes/spec/chained_spec.rb +1 -1
  241. data/examples/subscribes/spec/default_spec.rb +1 -1
  242. data/examples/subscribes/spec/delayed_spec.rb +1 -1
  243. data/examples/subscribes/spec/immediately_spec.rb +1 -1
  244. data/examples/subversion/spec/checkout_spec.rb +1 -1
  245. data/examples/subversion/spec/export_spec.rb +1 -1
  246. data/examples/subversion/spec/force_export_spec.rb +1 -1
  247. data/examples/subversion/spec/sync_spec.rb +1 -1
  248. data/examples/systemd_unit/spec/create_spec.rb +1 -1
  249. data/examples/systemd_unit/spec/delete_spec.rb +1 -1
  250. data/examples/systemd_unit/spec/disable_spec.rb +1 -1
  251. data/examples/systemd_unit/spec/enable_spec.rb +1 -1
  252. data/examples/systemd_unit/spec/mask_spec.rb +1 -1
  253. data/examples/systemd_unit/spec/reload_or_restart_spec.rb +1 -1
  254. data/examples/systemd_unit/spec/reload_or_try_restart_spec.rb +1 -1
  255. data/examples/systemd_unit/spec/restart_spec.rb +1 -1
  256. data/examples/systemd_unit/spec/start_spec.rb +1 -1
  257. data/examples/systemd_unit/spec/stop_spec.rb +1 -1
  258. data/examples/systemd_unit/spec/try_restart_spec.rb +1 -1
  259. data/examples/systemd_unit/spec/unmask_spec.rb +1 -1
  260. data/examples/template/spec/create_if_missing_spec.rb +1 -1
  261. data/examples/template/spec/create_spec.rb +1 -1
  262. data/examples/template/spec/delete_spec.rb +1 -1
  263. data/examples/template/spec/touch_spec.rb +1 -1
  264. data/examples/use_inline_resources/spec/default_spec.rb +1 -1
  265. data/examples/user/spec/create_spec.rb +1 -1
  266. data/examples/user/spec/lock_spec.rb +1 -1
  267. data/examples/user/spec/manage_spec.rb +1 -1
  268. data/examples/user/spec/modify_spec.rb +1 -1
  269. data/examples/user/spec/remove_spec.rb +1 -1
  270. data/examples/user/spec/unlock_spec.rb +1 -1
  271. data/examples/windows_package/spec/install_spec.rb +1 -1
  272. data/examples/windows_package/spec/remove_spec.rb +1 -1
  273. data/examples/windows_service/spec/configure_startup_spec.rb +1 -1
  274. data/examples/windows_service/spec/disable_spec.rb +1 -1
  275. data/examples/windows_service/spec/enable_spec.rb +1 -1
  276. data/examples/windows_service/spec/reload_spec.rb +1 -1
  277. data/examples/windows_service/spec/restart_spec.rb +1 -1
  278. data/examples/windows_service/spec/start_spec.rb +1 -1
  279. data/examples/windows_service/spec/stop_spec.rb +1 -1
  280. data/examples/yum_package/spec/install_spec.rb +1 -1
  281. data/examples/yum_package/spec/lock_spec.rb +1 -1
  282. data/examples/yum_package/spec/purge_spec.rb +1 -1
  283. data/examples/yum_package/spec/remove_spec.rb +1 -1
  284. data/examples/yum_package/spec/unlock_spec.rb +1 -1
  285. data/examples/yum_package/spec/upgrade_spec.rb +1 -1
  286. data/examples/yum_repository/spec/add_spec.rb +1 -1
  287. data/examples/yum_repository/spec/create_spec.rb +1 -1
  288. data/examples/yum_repository/spec/delete_spec.rb +1 -1
  289. data/examples/yum_repository/spec/makecache_spec.rb +1 -1
  290. data/examples/yum_repository/spec/remove_spec.rb +1 -1
  291. data/examples/zypper_package/spec/install_spec.rb +1 -1
  292. data/examples/zypper_package/spec/lock_spec.rb +1 -1
  293. data/examples/zypper_package/spec/purge_spec.rb +1 -1
  294. data/examples/zypper_package/spec/remove_spec.rb +1 -1
  295. data/examples/zypper_package/spec/unlock_spec.rb +1 -1
  296. data/examples/zypper_package/spec/upgrade_spec.rb +1 -1
  297. data/lib/chefspec.rb +1 -1
  298. data/lib/chefspec/api.rb +33 -14
  299. data/lib/chefspec/api/core.rb +195 -0
  300. data/lib/chefspec/api/described.rb +55 -0
  301. data/lib/chefspec/api/do_nothing.rb +24 -19
  302. data/lib/chefspec/api/include_recipe.rb +26 -21
  303. data/lib/chefspec/api/link.rb +26 -21
  304. data/lib/chefspec/api/notifications.rb +38 -33
  305. data/lib/chefspec/api/reboot.rb +11 -6
  306. data/lib/chefspec/api/render_file.rb +35 -30
  307. data/lib/chefspec/api/state_attrs.rb +28 -23
  308. data/lib/chefspec/api/stubs.rb +183 -0
  309. data/lib/chefspec/api/stubs_for.rb +134 -0
  310. data/lib/chefspec/api/subscriptions.rb +35 -30
  311. data/lib/chefspec/api/user.rb +222 -217
  312. data/lib/chefspec/berkshelf.rb +1 -1
  313. data/lib/chefspec/deprecations.rb +2 -11
  314. data/lib/chefspec/errors.rb +1 -0
  315. data/lib/chefspec/extensions.rb +4 -1
  316. data/lib/chefspec/extensions/chef/client.rb +3 -4
  317. data/lib/chefspec/extensions/chef/conditional.rb +3 -2
  318. data/lib/chefspec/extensions/chef/cookbook/gem_installer.rb +25 -28
  319. data/lib/chefspec/extensions/chef/cookbook_loader.rb +13 -0
  320. data/lib/chefspec/extensions/chef/cookbook_uploader.rb +3 -2
  321. data/lib/chefspec/extensions/chef/data_query.rb +5 -8
  322. data/lib/chefspec/extensions/chef/lwrp_base.rb +17 -21
  323. data/lib/chefspec/extensions/chef/provider.rb +36 -0
  324. data/lib/chefspec/extensions/chef/resource.rb +51 -4
  325. data/lib/chefspec/extensions/chef/resource/freebsd_package.rb +13 -16
  326. data/lib/chefspec/extensions/chef/run_context/cookbook_compiler.rb +64 -0
  327. data/lib/chefspec/matchers/render_file_matcher.rb +36 -26
  328. data/lib/chefspec/matchers/resource_matcher.rb +1 -1
  329. data/lib/chefspec/rspec.rb +3 -8
  330. data/lib/chefspec/runner.rb +8 -0
  331. data/lib/chefspec/server_methods.rb +1 -1
  332. data/lib/chefspec/server_runner.rb +13 -9
  333. data/lib/chefspec/solo_runner.rb +136 -32
  334. data/lib/chefspec/version.rb +1 -1
  335. data/spec/unit/deprecations_spec.rb +1 -26
  336. data/spec/unit/macros_spec.rb +14 -14
  337. data/spec/unit/matchers/render_file_matcher_spec.rb +8 -1
  338. data/spec/unit/solo_runner_spec.rb +3 -3
  339. data/templates/errors/may_need_to_specify_platform.erb +1 -1
  340. data/templates/errors/shell_out_not_stubbed.erb +10 -0
  341. metadata +38 -4
  342. data/lib/chefspec/macros.rb +0 -222
@@ -27,7 +27,7 @@ module ChefSpec
27
27
  raise InvalidBerkshelfOptions(value: opts.inspect)
28
28
  end
29
29
 
30
- berksfile = ::Berkshelf::Berksfile.from_file('Berksfile', opts)
30
+ berksfile = ::Berkshelf::Berksfile.from_options(opts)
31
31
 
32
32
  # Grab a handle to tmpdir, since Berkshelf 2 modifies it a bit
33
33
  tmpdir = File.join(@tmpdir, 'cookbooks')
@@ -19,7 +19,7 @@ module Kernel
19
19
  end
20
20
 
21
21
  module ChefSpec
22
- class Runner
22
+ class SoloRunner
23
23
  # @deprecated {ChefSpec::Runner.define_runner_method} is deprecated. Please
24
24
  # use {ChefSpec.define_matcher} instead.
25
25
  def self.define_runner_method(resource_name)
@@ -29,21 +29,12 @@ module ChefSpec
29
29
 
30
30
  ChefSpec.define_matcher(resource_name)
31
31
  end
32
-
33
- # @deprecated {ChefSpec::Runner.new} is deprecated. Please use
34
- # {ChefSpec::SoloRunner} or {ChefSpec::ServerRunner} instead.
35
- def self.new(*args, &block)
36
- deprecated "`ChefSpec::Runner' is deprecated. Please use" \
37
- " `ChefSpec::SoloRunner' or `ChefSpec::ServerRunner' instead."
38
-
39
- ChefSpec::SoloRunner.new(*args, &block)
40
- end
41
32
  end
42
33
 
43
34
  class Server
44
35
  def self.method_missing(m, *args, &block)
45
36
  deprecated "`ChefSpec::Server.#{m}' is deprecated. There is no longer" \
46
- " a global Chef Server instance. Please use a ChefSpec::ServerRunner" \
37
+ " a global Chef Server instance. Please use a ChefSpec::SoloRunner" \
47
38
  " instead. More documentation can be found in the ChefSpec README."
48
39
  raise ChefSpec::Error::NoConversionError
49
40
  end
@@ -33,6 +33,7 @@ module ChefSpec
33
33
  class SearchNotStubbed < NotStubbed; end
34
34
  class DataBagNotStubbed < NotStubbed; end
35
35
  class DataBagItemNotStubbed < NotStubbed; end
36
+ class ShellOutNotStubbed < ChefSpecError; end
36
37
 
37
38
  class CookbookPathNotFound < ChefSpecError; end
38
39
  class GemLoadError < ChefSpecError; end
@@ -6,12 +6,15 @@ module ChefSpec::Extensions
6
6
  end
7
7
 
8
8
  # STOP! DO NOT ALPHABETIZE!
9
+ require_relative 'extensions/chef/data_query' # must be before Chef::Resource loads
9
10
  require_relative 'extensions/chef/resource' # must come before client extensions or anything that winds up loading resources
11
+ require_relative 'extensions/chef/provider'
10
12
  require_relative 'extensions/chef/securable'
11
13
  require_relative 'extensions/chef/client'
12
14
  require_relative 'extensions/chef/conditional'
13
15
  require_relative 'extensions/chef/cookbook_uploader'
14
16
  require_relative 'extensions/chef/cookbook/gem_installer'
15
- require_relative 'extensions/chef/data_query'
16
17
  require_relative 'extensions/chef/lwrp_base'
17
18
  require_relative 'extensions/chef/resource/freebsd_package'
19
+ require_relative 'extensions/chef/run_context/cookbook_compiler'
20
+ require_relative 'extensions/chef/cookbook_loader'
@@ -8,15 +8,14 @@ require 'chef/providers'
8
8
  require 'chef/client'
9
9
 
10
10
  # @private
11
- class Chef::Client
12
- attr_reader :events
13
-
11
+ Chef::Client.prepend(Module.new do
14
12
  #
15
13
  # Don't actually run ohai (we have fake data for that)
16
14
  #
17
15
  # @see Chef::Client#run_ohai
18
16
  #
19
17
  def run_ohai
18
+ return super unless $CHEFSPEC_MODE
20
19
  # noop
21
20
  end
22
- end
21
+ end)
@@ -1,8 +1,9 @@
1
1
  require 'chef/resource/conditional'
2
2
 
3
- class Chef::Resource::Conditional
3
+ Chef::Resource::Conditional.prepend(Module.new do
4
4
  # @see Chef::Resource::Conditional#evaluate_command
5
5
  def evaluate_command
6
+ return super unless $CHEFSPEC_MODE
6
7
  stub = ChefSpec::Stubs::CommandRegistry.stub_for(@command)
7
8
 
8
9
  if stub.nil?
@@ -11,4 +12,4 @@ class Chef::Resource::Conditional
11
12
 
12
13
  stub.result
13
14
  end
14
- end
15
+ end)
@@ -1,35 +1,32 @@
1
1
  require 'chef/cookbook/gem_installer'
2
2
 
3
- class Chef
4
- class Cookbook
5
- class GemInstaller
6
- # Installs the gems into the omnibus gemset.
7
- def install
8
- cookbook_gems = Hash.new { |h, k| h[k] = [] }
3
+ Chef::Cookbook::GemInstaller.prepend(Module.new do
4
+ # Installs the gems into the omnibus gemset.
5
+ def install
6
+ return super unless $CHEFSPEC_MODE
7
+ cookbook_gems = Hash.new { |h, k| h[k] = [] }
9
8
 
10
- cookbook_collection.each do |cookbook_name, cookbook_version|
11
- cookbook_version.metadata.gems.each do |args|
12
- cookbook_gems[args.first] += args[1..-1]
13
- end
14
- end
15
-
16
- events.cookbook_gem_start(cookbook_gems)
17
- cookbook_gems.each { |gem_name, gem_requirements| locate_gem(gem_name, gem_requirements) }
18
- events.cookbook_gem_finished
9
+ cookbook_collection.each do |cookbook_name, cookbook_version|
10
+ cookbook_version.metadata.gems.each do |args|
11
+ cookbook_gems[args.first] += args[1..-1]
19
12
  end
13
+ end
14
+
15
+ events.cookbook_gem_start(cookbook_gems)
16
+ cookbook_gems.each { |gem_name, gem_requirements| locate_gem(gem_name, gem_requirements) }
17
+ events.cookbook_gem_finished
18
+ end
20
19
 
21
- private
20
+ private
22
21
 
23
- def locate_gem(gem_name, gem_requirements)
24
- ::Gem::Specification::find_by_name(gem_name, gem_requirements)
25
- rescue ::Gem::MissingSpecError
26
- gem_cmd = "gem install #{gem_name} --version '#{gem_requirements.join(', ')}'"
27
- gemfile_line = "gem '#{[gem_name, *gem_requirements].join('\', \'')}'"
28
- warn "No matching version found for '#{gem_name}' in your gem environment.\n" \
29
- " - if you are using ChefDK, run the following command: \"chef #{gem_cmd}\"\n" \
30
- " - if you are using bundler, append \"#{gemfile_line}\" to your Gemfile and run \"bundle install\"\n" \
31
- " - otherwise run: \"#{gem_cmd}\""
32
- end
33
- end
22
+ def locate_gem(gem_name, gem_requirements)
23
+ ::Gem::Specification::find_by_name(gem_name, gem_requirements)
24
+ rescue ::Gem::MissingSpecError
25
+ gem_cmd = "gem install #{gem_name} --version '#{gem_requirements.join(', ')}'"
26
+ gemfile_line = "gem '#{[gem_name, *gem_requirements].join('\', \'')}'"
27
+ warn "No matching version found for '#{gem_name}' in your gem environment.\n" \
28
+ " - if you are using ChefDK, run the following command: \"chef #{gem_cmd}\"\n" \
29
+ " - if you are using bundler, append \"#{gemfile_line}\" to your Gemfile and run \"bundle install\"\n" \
30
+ " - otherwise run: \"#{gem_cmd}\""
34
31
  end
35
- end
32
+ end)
@@ -0,0 +1,13 @@
1
+ require "chef/cookbook_loader"
2
+
3
+ Chef::CookbookLoader.prepend(Module.new do
4
+ def all_directories_in_repo_paths
5
+ return super unless $CHEFSPEC_MODE
6
+ if Chef::Config[:chefspec_cookbook_root]
7
+ # Hax.
8
+ [Chef::Config[:chefspec_cookbook_root]]
9
+ else
10
+ super
11
+ end
12
+ end
13
+ end)
@@ -1,11 +1,12 @@
1
1
  require 'chef/cookbook_uploader'
2
2
 
3
- class Chef::CookbookUploader
3
+ Chef::CookbookUploader.prepend(Module.new do |variable|
4
4
  #
5
5
  # Don't validate uploaded cookbooks. Validating a cookbook takes *forever*
6
6
  # to complete. It's just not worth it...
7
7
  #
8
8
  def validate_cookbooks
9
+ return super unless $CHEFSPEC_MODE
9
10
  # noop
10
11
  end
11
- end
12
+ end)
@@ -1,10 +1,9 @@
1
1
  require 'chef/dsl/data_query'
2
2
 
3
- module Chef::DSL::DataQuery
3
+ Chef::DSL::DataQuery.prepend(Module.new do
4
4
  # @see Chef::DSL::DataQuery#search
5
- alias_method :old_search, :search
6
5
  def search(*args, &block)
7
- return old_search(*args, &block) unless Chef::Config[:solo]
6
+ return super unless Chef::Config[:solo] && $CHEFSPEC_MODE
8
7
 
9
8
  type = args[0]
10
9
  query = args[1] || '*:*'
@@ -23,9 +22,8 @@ module Chef::DSL::DataQuery
23
22
  end
24
23
 
25
24
  # @see Chef::DSL::DataQuery#data_bag
26
- alias_method :old_data_bag, :data_bag
27
25
  def data_bag(bag)
28
- return old_data_bag(bag) unless Chef::Config[:solo]
26
+ return super unless Chef::Config[:solo] && $CHEFSPEC_MODE
29
27
 
30
28
  stub = ChefSpec::Stubs::DataBagRegistry.stub_for(bag)
31
29
 
@@ -37,9 +35,8 @@ module Chef::DSL::DataQuery
37
35
  end
38
36
 
39
37
  # @see Chef::DSL::DataQuery#data_bag_item
40
- alias_method :old_data_bag_item, :data_bag_item
41
38
  def data_bag_item(bag, id, secret = nil)
42
- return old_data_bag_item(bag, id, secret) unless Chef::Config[:solo]
39
+ return super unless Chef::Config[:solo] && $CHEFSPEC_MODE
43
40
 
44
41
  stub = ChefSpec::Stubs::DataBagItemRegistry.stub_for(bag, id)
45
42
 
@@ -49,4 +46,4 @@ module Chef::DSL::DataQuery
49
46
 
50
47
  stub.result
51
48
  end
52
- end
49
+ end)
@@ -4,29 +4,25 @@
4
4
  # sub-resource collections.
5
5
 
6
6
  if defined?(Chef::Provider::InlineResources)
7
- class Chef
8
- class Provider
9
- module InlineResources # ~> 12.5
10
- def initialize(resource, run_context)
11
- super
12
- @run_context = run_context
13
- @resource_collection = run_context.resource_collection
14
- end
7
+ Chef::Provider::InlineResources.prepend(Module.new do
8
+ def initialize(resource, run_context)
9
+ super
10
+ @run_context = run_context
11
+ @resource_collection = run_context.resource_collection
12
+ end
13
+ end)
15
14
 
16
- module ClassMethods
17
- def action(name, &block)
18
- define_method("action_#{name}", &block)
19
- end
20
- end
21
- end
15
+ Chef::Provider::InlineResources::ClassMethods.prepend(Module.new do
16
+ def action(name, &block)
17
+ # Note: This does not check $CHEFSPEC_MODE.
18
+ define_method("action_#{name}", &block)
22
19
  end
23
- end
20
+ end)
24
21
  else # >= 13.0
25
- class Chef
26
- class Provider
27
- def self.action(name, &block)
28
- define_method("action_#{name}", &block)
29
- end
22
+ Chef::Provider.prepend(Module.new do
23
+ def compile_and_converge_action(&block)
24
+ return super unless $CHEFSPEC_MODE
25
+ instance_eval(&block)
30
26
  end
31
- end
27
+ end)
32
28
  end
@@ -0,0 +1,36 @@
1
+ require 'chef/provider'
2
+ require 'chefspec/api'
3
+
4
+ Chef::Provider.prepend(Module.new do
5
+ def self.name
6
+ "ChefSpec extensions for Chef::Provider"
7
+ end
8
+
9
+ def self.inspect
10
+ "#<Module: #{name}>"
11
+ end
12
+
13
+ # Hook for the stubs_for system.
14
+ def initialize(*args, &block)
15
+ super(*args, &block)
16
+ ChefSpec::API::StubsFor.setup_stubs_for(self, :provider) if $CHEFSPEC_MODE
17
+ end
18
+
19
+ # Defang shell_out and friends so it can never run.
20
+ if ChefSpec::API::StubsFor::HAS_SHELLOUT_COMPACTED.satisfied_by?(Gem::Version.create(Chef::VERSION))
21
+ def shell_out_compacted(*args)
22
+ return super unless $CHEFSPEC_MODE
23
+ raise ChefSpec::Error::ShellOutNotStubbed.new(args: args, type: 'provider', resource: new_resource)
24
+ end
25
+
26
+ def shell_out_compacted!(*args)
27
+ return super unless $CHEFSPEC_MODE
28
+ shell_out_compacted(*args).tap {|c| c.error! }
29
+ end
30
+ else
31
+ def shell_out(*args)
32
+ return super unless $CHEFSPEC_MODE
33
+ raise ChefSpec::Error::ShellOutNotStubbed.new(args: args, type: 'provider', resource: new_resource)
34
+ end
35
+ end
36
+ end)
@@ -1,4 +1,5 @@
1
1
  require 'chef/resource'
2
+ require 'chef/version'
2
3
  require 'chefspec/api'
3
4
 
4
5
  #
@@ -10,8 +11,35 @@ require 'chefspec/api'
10
11
 
11
12
  module ChefSpec::Extensions::Chef::Resource
12
13
 
14
+ #
15
+ # Hooks for the stubs_for system
16
+ #
17
+ def initialize(*args, &block)
18
+ super(*args, &block)
19
+ if $CHEFSPEC_MODE
20
+ # Here be dragons.
21
+ # If we're directly inside a `load_current_resource`, this is probably
22
+ # something like `new_resource.class.new` so we want to call this a current_resource,
23
+ # Otherwise it's probably a normal resource instantiation.
24
+ mode = caller[1].include?("`load_current_resource'") ? :current_resource : :resource
25
+ ChefSpec::API::StubsFor.setup_stubs_for(self, mode)
26
+ end
27
+ end
28
+
29
+ def dup
30
+ return super unless $CHEFSPEC_MODE
31
+ # Also here be dragons.
32
+ stack = caller
33
+ super.tap do |dup_resource|
34
+ # We're directly inside a load_current_resource, which is probably via
35
+ # the load_current_value DSL system, so call this a current resource.
36
+ ChefSpec::API::StubsFor.setup_stubs_for(dup_resource, :current_resource) if stack.first.include?("`load_current_resource'")
37
+ end
38
+ end
39
+
13
40
  # mix of no-op and tracking concerns
14
41
  def run_action(action, notification_type = nil, notifying_resource = nil)
42
+ return super unless $CHEFSPEC_MODE
15
43
  resolve_notification_references
16
44
  validate_action(action)
17
45
 
@@ -34,20 +62,37 @@ module ChefSpec::Extensions::Chef::Resource
34
62
  end
35
63
 
36
64
  #
37
- # tracking
65
+ # Defang shell_out and friends so it can never run.
38
66
  #
67
+ if ChefSpec::API::StubsFor::HAS_SHELLOUT_COMPACTED.satisfied_by?(Gem::Version.create(Chef::VERSION))
68
+ def shell_out_compacted(*args)
69
+ return super unless $CHEFSPEC_MODE
70
+ raise ChefSpec::Error::ShellOutNotStubbed.new(args: args, type: 'resource', resource: self)
71
+ end
39
72
 
40
- def initialize(*args)
41
- @performed_actions = {}
42
- super
73
+ def shell_out_compacted!(*args)
74
+ return super unless $CHEFSPEC_MODE
75
+ shell_out_compacted(*args).tap {|c| c.error! }
76
+ end
77
+ else
78
+ def shell_out(*args)
79
+ return super unless $CHEFSPEC_MODE
80
+ raise ChefSpec::Error::ShellOutNotStubbed.new(args: args, type: 'resource', resource: self)
81
+ end
43
82
  end
44
83
 
84
+ #
85
+ # tracking
86
+ #
87
+
45
88
  def perform_action(action, options = {})
89
+ @performed_actions ||= {}
46
90
  @performed_actions[action.to_sym] ||= {}
47
91
  @performed_actions[action.to_sym].merge!(options)
48
92
  end
49
93
 
50
94
  def performed_action(action)
95
+ @performed_actions ||= {}
51
96
  @performed_actions[action.to_sym]
52
97
  end
53
98
 
@@ -60,6 +105,7 @@ module ChefSpec::Extensions::Chef::Resource
60
105
  end
61
106
 
62
107
  def performed_actions
108
+ @performed_actions ||= {}
63
109
  @performed_actions.keys
64
110
  end
65
111
 
@@ -120,6 +166,7 @@ module ChefSpec::Extensions::Chef::Resource
120
166
 
121
167
  def inject_actions(*actions)
122
168
  provides_names.each do |resource_name|
169
+ next unless resource_name
123
170
  ChefSpec.define_matcher(resource_name)
124
171
  actions.each do |action|
125
172
  inject_method(:"#{action}_#{resource_name}", resource_name, action)
@@ -1,19 +1,16 @@
1
1
  require 'chef/resource/freebsd_package'
2
2
 
3
- class Chef
4
- class Resource
5
- class FreebsdPackage < Chef::Resource::Package
6
- #
7
- # Chef decided it was a good idea to just shellout inside of a resource.
8
- # Not only is that a horrible fucking idea, but I got flak when I asked
9
- # to change it. So we are just going to monkey patch the fucking thing so
10
- # it does not shell out.
11
- #
12
- # @return [false]
13
- #
14
- def supports_pkgng?
15
- false
16
- end
17
- end
3
+ Chef::Resource::FreebsdPackage.prepend(Module.new do
4
+ #
5
+ # Chef decided it was a good idea to just shellout inside of a resource.
6
+ # Not only is that a horrible fucking idea, but I got flak when I asked
7
+ # to change it. So we are just going to monkey patch the fucking thing so
8
+ # it does not shell out.
9
+ #
10
+ # @return [false]
11
+ #
12
+ def supports_pkgng?
13
+ return super unless $CHEFSPEC_MODE
14
+ true
18
15
  end
19
- end
16
+ end)