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
@@ -2,7 +2,7 @@ require 'chefspec'
2
2
 
3
3
  describe 'yum_repository::add' do
4
4
  let(:chef_run) do
5
- ChefSpec::ServerRunner.new(platform: 'centos', version: '7.3.1611')
5
+ ChefSpec::SoloRunner.new(platform: 'centos', version: '7.5.1804')
6
6
  .converge(described_recipe)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ require 'chefspec'
2
2
 
3
3
  describe 'yum_repository::create' do
4
4
  let(:chef_run) do
5
- ChefSpec::ServerRunner.new(platform: 'centos', version: '7.3.1611')
5
+ ChefSpec::SoloRunner.new(platform: 'centos', version: '7.5.1804')
6
6
  .converge(described_recipe)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ require 'chefspec'
2
2
 
3
3
  describe 'yum_repository::delete' do
4
4
  let(:chef_run) do
5
- ChefSpec::ServerRunner.new(platform: 'centos', version: '7.3.1611')
5
+ ChefSpec::SoloRunner.new(platform: 'centos', version: '7.5.1804')
6
6
  .converge(described_recipe)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ require 'chefspec'
2
2
 
3
3
  describe 'yum_repository::makecache' do
4
4
  let(:chef_run) do
5
- ChefSpec::ServerRunner.new(platform: 'centos', version: '7.3.1611')
5
+ ChefSpec::SoloRunner.new(platform: 'centos', version: '7.5.1804')
6
6
  .converge(described_recipe)
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ require 'chefspec'
2
2
 
3
3
  describe 'yum_repository::remove' do
4
4
  let(:chef_run) do
5
- ChefSpec::ServerRunner.new(platform: 'centos', version: '7.3.1611')
5
+ ChefSpec::SoloRunner.new(platform: 'centos', version: '7.5.1804')
6
6
  .converge(described_recipe)
7
7
  end
8
8
 
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::install' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'installs a zypper_package with the default action' do
7
7
  expect(chef_run).to install_zypper_package('default_action')
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::lock' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'locks a zypper_package with an explicit action' do
7
7
  expect(chef_run).to lock_zypper_package('explicit_action')
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::purge' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'purges a zypper_package with an explicit action' do
7
7
  expect(chef_run).to purge_zypper_package('explicit_action')
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::remove' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'removes a zypper_package with an explicit action' do
7
7
  expect(chef_run).to remove_zypper_package('explicit_action')
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::unlock' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'unlocks a zypper_package with an explicit action' do
7
7
  expect(chef_run).to unlock_zypper_package('explicit_action')
@@ -1,7 +1,7 @@
1
1
  require 'chefspec'
2
2
 
3
3
  describe 'zypper_package::upgrade' do
4
- let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.1').converge(described_recipe) }
4
+ let(:chef_run) { ChefSpec::SoloRunner.new(platform: 'opensuse', version: '42.3').converge(described_recipe) }
5
5
 
6
6
  it 'upgrades a zypper_package with an explicit action' do
7
7
  expect(chef_run).to upgrade_zypper_package('explicit_action')
@@ -63,12 +63,12 @@ require_relative 'chefspec/coverage'
63
63
  require_relative 'chefspec/errors'
64
64
  require_relative 'chefspec/expect_exception'
65
65
  require_relative 'chefspec/formatter'
66
- require_relative 'chefspec/macros'
67
66
  require_relative 'chefspec/matchers'
68
67
  require_relative 'chefspec/renderer'
69
68
  require_relative 'chefspec/rspec'
70
69
  require_relative 'chefspec/server_runner'
71
70
  require_relative 'chefspec/solo_runner'
71
+ require_relative 'chefspec/runner'
72
72
  require_relative 'chefspec/util'
73
73
  require_relative 'chefspec/version'
74
74
 
@@ -1,18 +1,37 @@
1
1
  module ChefSpec
2
2
  module API
3
- # empty container
4
- end
5
- end
3
+ autoload :Core, 'chefspec/api/core'
4
+ autoload :Described, 'chefspec/api/described'
5
+ autoload :DoNothing, 'chefspec/api/do_nothing'
6
+ autoload :IncludeRecipe, 'chefspec/api/include_recipe'
7
+ autoload :Link, 'chefspec/api/link'
8
+ autoload :Notifications, 'chefspec/api/notifications'
9
+ autoload :Reboot, 'chefspec/api/reboot'
10
+ autoload :RenderFile, 'chefspec/api/render_file'
11
+ autoload :StateAttrs, 'chefspec/api/state_attrs'
12
+ autoload :Stubs, 'chefspec/api/stubs'
13
+ autoload :StubsFor, 'chefspec/api/stubs_for'
14
+ autoload :Subscriptions, 'chefspec/api/subscriptions'
15
+ autoload :User, 'chefspec/api/user'
6
16
 
7
- # non-resources
8
- require_relative 'api/do_nothing'
9
- require_relative 'api/include_recipe'
10
- require_relative 'api/notifications'
11
- require_relative 'api/render_file'
12
- require_relative 'api/state_attrs'
13
- require_relative 'api/subscriptions'
17
+ def self.included(klass)
18
+ # non-resources
19
+ klass.include(ChefSpec::API::Core)
20
+ klass.include(ChefSpec::API::Described)
21
+ klass.include(ChefSpec::API::DoNothing)
22
+ klass.include(ChefSpec::API::IncludeRecipe)
23
+ klass.include(ChefSpec::API::DoNothing)
24
+ klass.include(ChefSpec::API::RenderFile)
25
+ klass.include(ChefSpec::API::StateAttrs)
26
+ klass.include(ChefSpec::API::Notifications)
27
+ klass.include(ChefSpec::API::Stubs)
28
+ klass.include(ChefSpec::API::StubsFor)
29
+ klass.include(ChefSpec::API::Subscriptions)
14
30
 
15
- # hacks and sugar for resources that don't follow the normal pattern
16
- require_relative 'api/user'
17
- require_relative 'api/link'
18
- require_relative 'api/reboot'
31
+ # hacks and sugar for resources that don't follow the normal pattern
32
+ klass.include(ChefSpec::API::User)
33
+ klass.include(ChefSpec::API::Link)
34
+ klass.include(ChefSpec::API::Reboot)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,195 @@
1
+ module ChefSpec
2
+ module API
3
+ # Module containing the core RSpec API for ChefSpec.
4
+ module Core
5
+ # Pull in the needed machinery to use `around` and `let` in here.
6
+ extend RSpec::SharedContext
7
+
8
+ # Activate all of the various ChefSpec stubs for the duraction of this
9
+ # example block.
10
+ around do |ex|
11
+ old_chefspec_mode = $CHEFSPEC_MODE
12
+ $CHEFSPEC_MODE = true
13
+ begin
14
+ # Only run the preload if a platform is configured via the new system
15
+ # since otherwise it will spam warnings about the platform not being
16
+ # set.
17
+ chef_runner.preload! if chefspec_platform
18
+ ex.run
19
+ ensure
20
+ $CHEFSPEC_MODE = old_chefspec_mode
21
+ end
22
+ end
23
+
24
+ # Let variables to set the platform in a scoped way. Used below by
25
+ # {ClassMethods#platform}.
26
+ let(:chefspec_platform) { nil }
27
+ let(:chefspec_platform_version) { nil }
28
+
29
+ # Set up the runner object but don't actually run anything yet. This can
30
+ # be overridden if needed to set up very custom things.
31
+ let(:chef_runner) do
32
+ options = {
33
+ step_into: chefspec_ancestor_gather([], :step_into) {|memo, val| memo | val },
34
+ default_attributes: chefspec_attributes(:default_attributes),
35
+ normal_attributes: chefspec_attributes(:normal_attributes),
36
+ override_attributes: chefspec_attributes(:override_attributes),
37
+ automatic_attributes: chefspec_attributes(:automatic_attributes),
38
+ spec_declaration_locations: self.class.declaration_locations.last[0],
39
+ }
40
+ # Only specify these if set in the example so we don't override the
41
+ # global settings.
42
+ options[:platform] = chefspec_platform if chefspec_platform
43
+ options[:version] = chefspec_platform_version if chefspec_platform_version
44
+ # Merge in any final overrides.
45
+ options.update(chefspec_attributes(:chefspec_options).symbolize_keys)
46
+ # At some point this is probably going to need a flag for ServerRunner
47
+ # because someone will complain.
48
+ ChefSpec::SoloRunner.new(options)
49
+ end
50
+
51
+ # By default, run the recipe in the base `describe` block.
52
+ let(:chef_run) do
53
+ chef_runner.converge(described_recipe)
54
+ end
55
+
56
+ # Helper method for some of the nestable test value methods like
57
+ # {ClassMethods#default_attributes} and {ClassMethods#step_into}.
58
+ #
59
+ # @api private
60
+ # @param start [Object] Initial value for the reducer.
61
+ # @param method [Symbol] Name of the group-level method to call on each
62
+ # ancestor.
63
+ # @param block [Proc] Reducer callable.
64
+ # @return [Object]
65
+ def chefspec_ancestor_gather(start, method, &block)
66
+ candidate_ancestors = self.class.ancestors.select {|cls| cls.respond_to?(method) && cls != ChefSpec::API::Core }
67
+ candidate_ancestors.reverse.inject(start) do |memo, cls|
68
+ block.call(memo, cls.send(method))
69
+ end
70
+ end
71
+
72
+ # Special case of {#chefspec_ancestor_gather} because we do it four times.
73
+ #
74
+ # @api private
75
+ # @param method [Symbol] Name of the group-level method to call on each
76
+ # ancestor.
77
+ # @return [Mash]
78
+ def chefspec_attributes(method)
79
+ chefspec_ancestor_gather(Mash.new, method) do |memo, val|
80
+ Chef::Mixin::DeepMerge.merge(memo, val)
81
+ end
82
+ end
83
+
84
+ # Methods that will end up as group-level.
85
+ #
86
+ # @api private
87
+ module ClassMethods
88
+ # Set the Fauxhai platform to use for this example group.
89
+ #
90
+ # @example
91
+ # describe 'myrecipe' do
92
+ # platform 'ubuntu', '18.04'
93
+ # @param name [String] Platform name to set.
94
+ # @param version [String, nil] Platform version to set.
95
+ # @return [void]
96
+ def platform(name, version=nil)
97
+ let(:chefspec_platform) { name }
98
+ let(:chefspec_platform_version) { version }
99
+ end
100
+
101
+ # Use an in-line block of recipe code for this example group rather
102
+ # than a recipe from a cookbook.
103
+ #
104
+ # @example
105
+ # describe 'my_resource' do
106
+ # recipe do
107
+ # my_resource 'helloworld'
108
+ # end
109
+ # @param block [Proc] A block of Chef recipe code.
110
+ # @return [void]
111
+ def recipe(&block)
112
+ let(:chef_run) do
113
+ chef_runner.converge_block(&block)
114
+ end
115
+ end
116
+
117
+ # Set default-level node attributes to use for this example group.
118
+ #
119
+ # @example
120
+ # describe 'myapp::install' do
121
+ # default_attributes['myapp']['version'] = '1.0'
122
+ # @return [Chef::Node::VividMash]
123
+ def default_attributes
124
+ @chefspec_default_attributes ||= Chef::Node::VividMash.new
125
+ end
126
+
127
+ # Set normal-level node attributes to use for this example group.
128
+ #
129
+ # @example
130
+ # describe 'myapp::install' do
131
+ # normal_attributes['myapp']['version'] = '1.0'
132
+ # @return [Chef::Node::VividMash]
133
+ def normal_attributes
134
+ @chefspec_normal_attributes ||= Chef::Node::VividMash.new
135
+ end
136
+
137
+ # Set override-level node attributes to use for this example group.
138
+ #
139
+ # @example
140
+ # describe 'myapp::install' do
141
+ # override_attributes['myapp']['version'] = '1.0'
142
+ # @return [Chef::Node::VividMash]
143
+ def override_attributes
144
+ @chefspec_override_attributes ||= Chef::Node::VividMash.new
145
+ end
146
+
147
+ # Set automatic-level node attributes to use for this example group.
148
+ #
149
+ # @example
150
+ # describe 'myapp::install' do
151
+ # automatic_attributes['kernel']['machine'] = 'ppc64'
152
+ # @return [Chef::Node::VividMash]
153
+ def automatic_attributes
154
+ @chefspec_automatic_attributes ||= Chef::Node::VividMash.new
155
+ end
156
+
157
+ # Set additional ChefSpec runner options to use for this example group.
158
+ #
159
+ # @example
160
+ # describe 'myapp::install' do
161
+ # chefspec_options[:log_level] = :debug
162
+ # @return [Chef::Node::VividMash]
163
+ def chefspec_options
164
+ @chefspec_options ||= Chef::Node::VividMash.new
165
+ end
166
+
167
+ # Add resources to the step_into list for this example group.
168
+ #
169
+ # @example
170
+ # describe 'myapp::install' do
171
+ # step_into :my_resource
172
+ # @return [Array]
173
+ def step_into(*resources)
174
+ @chefspec_step_into ||= []
175
+ @chefspec_step_into |= resources.flatten.map(&:to_s)
176
+ end
177
+
178
+ # @api private
179
+ def included(klass)
180
+ super
181
+ # Inject classmethods into the group.
182
+ klass.extend(ClassMethods)
183
+ # If the describe block is aimed at string or resource/provider class
184
+ # then set the default subject to be the Chef run.
185
+ if klass.described_class.nil? || klass.described_class.is_a?(Class) && (klass.described_class < Chef::Resource || klass.described_class < Chef::Provider)
186
+ klass.subject { chef_run }
187
+ end
188
+ end
189
+ end
190
+
191
+ extend ClassMethods
192
+
193
+ end
194
+ end
195
+ end
@@ -0,0 +1,55 @@
1
+ module ChefSpec
2
+ module API
3
+ module Described
4
+ #
5
+ # The name of the currently running cookbook spec. Given the top-level
6
+ # +describe+ block is of the format:
7
+ #
8
+ # describe 'my_cookbook::my_recipe' do
9
+ # # ...
10
+ # end
11
+ #
12
+ # The value of +described_cookbook+ is "my_cookbook".
13
+ #
14
+ # @example Using +described_cookbook+ in a context block
15
+ # context "#{described_recipe} installs foo" do
16
+ # # ...
17
+ # end
18
+ #
19
+ #
20
+ # @return [String]
21
+ #
22
+ def described_cookbook
23
+ described_recipe.split('::').first
24
+ end
25
+
26
+ #
27
+ # The name of the currently running recipe spec. Given the top-level
28
+ # +describe+ block is of the format:
29
+ #
30
+ # describe 'my_cookbook::my_recipe' do
31
+ # # ...
32
+ # end
33
+ #
34
+ # The value of +described_recipe+ is "my_cookbook::my_recipe".
35
+ #
36
+ # @example Using +described_recipe+ in the +ChefSpec::SoloRunner+
37
+ # let(:chef_run) { ChefSpec::SoloRunner.new.converge(described_recipe) }
38
+ #
39
+ #
40
+ # @return [String]
41
+ #
42
+ def described_recipe
43
+ scope = self.is_a?(Class) ? self : self.class
44
+
45
+ metahash = scope.metadata
46
+ while metahash.has_key?(:parent_example_group)
47
+ metahash = metahash[:parent_example_group]
48
+ end
49
+
50
+ metahash[:description].to_s
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -1,21 +1,26 @@
1
- module ChefSpec::API
2
- #
3
- # Assert that a resource in the Chef run does not perform any actions. Given
4
- # a resource with +action :nothing+:
5
- #
6
- # package 'apache2' do
7
- # action :nothing
8
- # end
9
- #
10
- # The Examples section demonstrates the different ways to test that no
11
- # actions were performed on a resource in a Chef run.
12
- #
13
- # @example Assert the +package+ does not perform any actions
14
- #
15
- #
16
- # @return [ChefSpec::Matchers::DoNothingMatcher]
17
- #
18
- def do_nothing
19
- ChefSpec::Matchers::DoNothingMatcher.new
1
+ module ChefSpec
2
+ module API
3
+ module DoNothing
4
+ #
5
+ # Assert that a resource in the Chef run does not perform any actions. Given
6
+ # a resource with +action :nothing+:
7
+ #
8
+ # package 'apache2' do
9
+ # action :nothing
10
+ # end
11
+ #
12
+ # The Examples section demonstrates the different ways to test that no
13
+ # actions were performed on a resource in a Chef run.
14
+ #
15
+ # @example Assert the +package+ does not perform any actions
16
+ # expect(chef_run.package('apache2')).to do_nothing
17
+ #
18
+ # @return [ChefSpec::Matchers::DoNothingMatcher]
19
+ #
20
+ def do_nothing
21
+ ChefSpec::Matchers::DoNothingMatcher.new
22
+ end
23
+
24
+ end
20
25
  end
21
26
  end