chefspec 3.1.4 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (532) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +15 -0
  3. data/.travis.yml +39 -0
  4. data/CHANGELOG.md +444 -0
  5. data/CONTRIBUTING.md +52 -0
  6. data/Gemfile +2 -0
  7. data/ISSUES.md +41 -0
  8. data/LICENSE +22 -0
  9. data/README.md +893 -0
  10. data/Rakefile +29 -0
  11. data/chefspec.gemspec +42 -0
  12. data/examples/apt_package/recipes/install.rb +13 -0
  13. data/examples/apt_package/recipes/purge.rb +13 -0
  14. data/examples/apt_package/recipes/reconfig.rb +13 -0
  15. data/examples/apt_package/recipes/remove.rb +13 -0
  16. data/examples/apt_package/recipes/upgrade.rb +13 -0
  17. data/examples/apt_package/spec/install_spec.rb +23 -0
  18. data/examples/apt_package/spec/purge_spec.rb +19 -0
  19. data/examples/apt_package/spec/reconfig_spec.rb +19 -0
  20. data/examples/apt_package/spec/remove_spec.rb +19 -0
  21. data/examples/apt_package/spec/upgrade_spec.rb +19 -0
  22. data/examples/attributes/attributes/default.rb +1 -0
  23. data/examples/attributes/recipes/default.rb +4 -0
  24. data/examples/attributes/spec/default_spec.rb +20 -0
  25. data/examples/batch/recipes/run.rb +13 -0
  26. data/examples/batch/spec/run_spec.rb +23 -0
  27. data/examples/cached/recipes/default.rb +1 -0
  28. data/examples/cached/spec/default_spec.rb +13 -0
  29. data/examples/chef_gem/recipes/install.rb +13 -0
  30. data/examples/chef_gem/recipes/purge.rb +13 -0
  31. data/examples/chef_gem/recipes/reconfig.rb +13 -0
  32. data/examples/chef_gem/recipes/remove.rb +13 -0
  33. data/examples/chef_gem/recipes/upgrade.rb +13 -0
  34. data/examples/chef_gem/spec/install_spec.rb +23 -0
  35. data/examples/chef_gem/spec/purge_spec.rb +19 -0
  36. data/examples/chef_gem/spec/reconfig_spec.rb +19 -0
  37. data/examples/chef_gem/spec/remove_spec.rb +19 -0
  38. data/examples/chef_gem/spec/upgrade_spec.rb +19 -0
  39. data/examples/compile_time/recipes/default.rb +3 -0
  40. data/examples/compile_time/spec/default_spec.rb +27 -0
  41. data/examples/cookbook_file/recipes/create.rb +15 -0
  42. data/examples/cookbook_file/recipes/create_if_missing.rb +15 -0
  43. data/examples/cookbook_file/recipes/delete.rb +15 -0
  44. data/examples/cookbook_file/recipes/touch.rb +15 -0
  45. data/examples/cookbook_file/spec/create_if_missing_spec.rb +28 -0
  46. data/examples/cookbook_file/spec/create_spec.rb +32 -0
  47. data/examples/cookbook_file/spec/delete_spec.rb +19 -0
  48. data/examples/cookbook_file/spec/touch_spec.rb +19 -0
  49. data/examples/cron/recipes/create.rb +10 -0
  50. data/examples/cron/recipes/delete.rb +9 -0
  51. data/examples/cron/spec/create_spec.rb +19 -0
  52. data/examples/cron/spec/delete_spec.rb +15 -0
  53. data/examples/custom_matcher/libraries/matcher.rb +23 -0
  54. data/examples/custom_matcher/providers/thing.rb +2 -0
  55. data/examples/custom_matcher/recipes/install.rb +13 -0
  56. data/examples/custom_matcher/recipes/remove.rb +13 -0
  57. data/examples/custom_matcher/resources/thing.rb +5 -0
  58. data/examples/custom_matcher/spec/install_spec.rb +27 -0
  59. data/examples/custom_matcher/spec/remove_spec.rb +23 -0
  60. data/examples/deploy/recipes/deploy.rb +10 -0
  61. data/examples/deploy/recipes/force_deploy.rb +9 -0
  62. data/examples/deploy/recipes/rollback.rb +9 -0
  63. data/examples/deploy/spec/deploy_spec.rb +15 -0
  64. data/examples/deploy/spec/force_deploy_spec.rb +15 -0
  65. data/examples/deploy/spec/rollback_spec.rb +15 -0
  66. data/examples/directory/recipes/create.rb +14 -0
  67. data/examples/directory/recipes/delete.rb +14 -0
  68. data/examples/directory/spec/create_spec.rb +30 -0
  69. data/examples/directory/spec/delete_spec.rb +26 -0
  70. data/examples/dpkg_package/recipes/install.rb +13 -0
  71. data/examples/dpkg_package/recipes/purge.rb +13 -0
  72. data/examples/dpkg_package/recipes/remove.rb +13 -0
  73. data/examples/dpkg_package/spec/install_spec.rb +23 -0
  74. data/examples/dpkg_package/spec/purge_spec.rb +19 -0
  75. data/examples/dpkg_package/spec/remove_spec.rb +19 -0
  76. data/examples/easy_install_package/recipes/install.rb +13 -0
  77. data/examples/easy_install_package/recipes/purge.rb +13 -0
  78. data/examples/easy_install_package/recipes/remove.rb +13 -0
  79. data/examples/easy_install_package/recipes/upgrade.rb +13 -0
  80. data/examples/easy_install_package/spec/install_spec.rb +23 -0
  81. data/examples/easy_install_package/spec/purge_spec.rb +19 -0
  82. data/examples/easy_install_package/spec/remove_spec.rb +19 -0
  83. data/examples/easy_install_package/spec/upgrade_spec.rb +19 -0
  84. data/examples/env/recipes/create.rb +13 -0
  85. data/examples/env/recipes/delete.rb +13 -0
  86. data/examples/env/recipes/modify.rb +13 -0
  87. data/examples/env/spec/create_spec.rb +23 -0
  88. data/examples/env/spec/delete_spec.rb +19 -0
  89. data/examples/env/spec/modify_spec.rb +19 -0
  90. data/examples/erl_call/recipes/run.rb +13 -0
  91. data/examples/erl_call/spec/run_spec.rb +23 -0
  92. data/examples/execute/recipes/run.rb +13 -0
  93. data/examples/execute/spec/run_spec.rb +23 -0
  94. data/examples/expect_exception/recipes/compile_error.rb +1 -0
  95. data/examples/expect_exception/recipes/converge_error.rb +5 -0
  96. data/examples/expect_exception/recipes/no_error.rb +1 -0
  97. data/examples/expect_exception/spec/compile_error_spec.rb +10 -0
  98. data/examples/expect_exception/spec/converge_error_spec.rb +10 -0
  99. data/examples/expect_exception/spec/no_error_spec.rb +10 -0
  100. data/examples/file/recipes/create.rb +15 -0
  101. data/examples/file/recipes/create_if_missing.rb +15 -0
  102. data/examples/file/recipes/delete.rb +15 -0
  103. data/examples/file/recipes/touch.rb +15 -0
  104. data/examples/file/spec/create_if_missing_spec.rb +28 -0
  105. data/examples/file/spec/create_spec.rb +32 -0
  106. data/examples/file/spec/delete_spec.rb +19 -0
  107. data/examples/file/spec/touch_spec.rb +19 -0
  108. data/examples/freebsd_package/recipes/install.rb +13 -0
  109. data/examples/freebsd_package/recipes/remove.rb +13 -0
  110. data/examples/freebsd_package/spec/install_spec.rb +23 -0
  111. data/examples/freebsd_package/spec/remove_spec.rb +19 -0
  112. data/examples/gem_package/recipes/install.rb +13 -0
  113. data/examples/gem_package/recipes/purge.rb +13 -0
  114. data/examples/gem_package/recipes/reconfig.rb +13 -0
  115. data/examples/gem_package/recipes/remove.rb +13 -0
  116. data/examples/gem_package/recipes/upgrade.rb +13 -0
  117. data/examples/gem_package/spec/install_spec.rb +23 -0
  118. data/examples/gem_package/spec/purge_spec.rb +19 -0
  119. data/examples/gem_package/spec/reconfig_spec.rb +19 -0
  120. data/examples/gem_package/spec/remove_spec.rb +19 -0
  121. data/examples/gem_package/spec/upgrade_spec.rb +19 -0
  122. data/examples/git/recipes/checkout.rb +13 -0
  123. data/examples/git/recipes/export.rb +13 -0
  124. data/examples/git/recipes/sync.rb +13 -0
  125. data/examples/git/spec/checkout_spec.rb +19 -0
  126. data/examples/git/spec/export_spec.rb +19 -0
  127. data/examples/git/spec/sync_spec.rb +23 -0
  128. data/examples/group/recipes/create.rb +13 -0
  129. data/examples/group/recipes/manage.rb +13 -0
  130. data/examples/group/recipes/modify.rb +13 -0
  131. data/examples/group/recipes/remove.rb +13 -0
  132. data/examples/group/spec/create_spec.rb +23 -0
  133. data/examples/group/spec/manage_spec.rb +19 -0
  134. data/examples/group/spec/modify_spec.rb +19 -0
  135. data/examples/group/spec/remove_spec.rb +18 -0
  136. data/examples/guards/recipes/default.rb +13 -0
  137. data/examples/guards/spec/default_spec.rb +17 -0
  138. data/examples/heavy_provider_light_resource/libraries/resource_service.rb +15 -0
  139. data/examples/heavy_provider_light_resource/providers/service.rb +9 -0
  140. data/examples/heavy_provider_light_resource/recipes/default.rb +4 -0
  141. data/examples/heavy_provider_light_resource/spec/provider_service_spec.rb +7 -0
  142. data/examples/http_request/recipes/delete.rb +13 -0
  143. data/examples/http_request/recipes/get.rb +13 -0
  144. data/examples/http_request/recipes/head.rb +13 -0
  145. data/examples/http_request/recipes/options.rb +13 -0
  146. data/examples/http_request/recipes/post.rb +13 -0
  147. data/examples/http_request/recipes/put.rb +13 -0
  148. data/examples/http_request/spec/delete_spec.rb +19 -0
  149. data/examples/http_request/spec/get_spec.rb +23 -0
  150. data/examples/http_request/spec/head_spec.rb +19 -0
  151. data/examples/http_request/spec/options_spec.rb +19 -0
  152. data/examples/http_request/spec/post_spec.rb +19 -0
  153. data/examples/http_request/spec/put_spec.rb +19 -0
  154. data/examples/ifconfig/recipes/add.rb +9 -0
  155. data/examples/ifconfig/recipes/delete.rb +8 -0
  156. data/examples/ifconfig/recipes/disable.rb +8 -0
  157. data/examples/ifconfig/recipes/enable.rb +8 -0
  158. data/examples/ifconfig/spec/add_spec.rb +19 -0
  159. data/examples/ifconfig/spec/delete_spec.rb +15 -0
  160. data/examples/ifconfig/spec/disable_spec.rb +15 -0
  161. data/examples/ifconfig/spec/enable_spec.rb +15 -0
  162. data/examples/include_recipe/recipes/default.rb +1 -0
  163. data/examples/include_recipe/recipes/not.rb +0 -0
  164. data/examples/include_recipe/recipes/other.rb +0 -0
  165. data/examples/include_recipe/spec/default_spec.rb +13 -0
  166. data/examples/inherits/recipes/default.rb +5 -0
  167. data/examples/inherits/spec/default_spec.rb +21 -0
  168. data/examples/ips_package/recipes/install.rb +13 -0
  169. data/examples/ips_package/recipes/remove.rb +13 -0
  170. data/examples/ips_package/recipes/upgrade.rb +13 -0
  171. data/examples/ips_package/spec/install_spec.rb +23 -0
  172. data/examples/ips_package/spec/remove_spec.rb +19 -0
  173. data/examples/ips_package/spec/upgrade_spec.rb +19 -0
  174. data/examples/link/recipes/create.rb +13 -0
  175. data/examples/link/recipes/delete.rb +13 -0
  176. data/examples/link/recipes/link_to.rb +3 -0
  177. data/examples/link/spec/create_spec.rb +23 -0
  178. data/examples/link/spec/delete_spec.rb +19 -0
  179. data/examples/link/spec/link_to_spec.rb +11 -0
  180. data/examples/log/recipes/write.rb +14 -0
  181. data/examples/log/spec/write_spec.rb +24 -0
  182. data/examples/macports_package/recipes/install.rb +13 -0
  183. data/examples/macports_package/recipes/purge.rb +13 -0
  184. data/examples/macports_package/recipes/remove.rb +13 -0
  185. data/examples/macports_package/recipes/upgrade.rb +13 -0
  186. data/examples/macports_package/spec/install_spec.rb +23 -0
  187. data/examples/macports_package/spec/purge_spec.rb +19 -0
  188. data/examples/macports_package/spec/remove_spec.rb +19 -0
  189. data/examples/macports_package/spec/upgrade_spec.rb +19 -0
  190. data/examples/mdadm/recipes/assemble.rb +13 -0
  191. data/examples/mdadm/recipes/create.rb +13 -0
  192. data/examples/mdadm/recipes/stop.rb +13 -0
  193. data/examples/mdadm/spec/assemble_spec.rb +19 -0
  194. data/examples/mdadm/spec/create_spec.rb +23 -0
  195. data/examples/mdadm/spec/stop_spec.rb +19 -0
  196. data/examples/mount/recipes/disable.rb +8 -0
  197. data/examples/mount/recipes/enable.rb +8 -0
  198. data/examples/mount/recipes/mount.rb +9 -0
  199. data/examples/mount/recipes/remount.rb +8 -0
  200. data/examples/mount/recipes/umount.rb +8 -0
  201. data/examples/mount/spec/disable_spec.rb +15 -0
  202. data/examples/mount/spec/enable_spec.rb +15 -0
  203. data/examples/mount/spec/mount_spec.rb +19 -0
  204. data/examples/mount/spec/remount_spec.rb +15 -0
  205. data/examples/mount/spec/umount_spec.rb +15 -0
  206. data/examples/multiple_actions/recipes/default.rb +3 -0
  207. data/examples/multiple_actions/recipes/sequential.rb +7 -0
  208. data/examples/multiple_actions/spec/default_spec.rb +14 -0
  209. data/examples/multiple_actions/spec/sequential_spec.rb +13 -0
  210. data/examples/multiple_run_action/recipes/default.rb +5 -0
  211. data/examples/multiple_run_action/spec/default_spec.rb +18 -0
  212. data/examples/notifications/recipes/chained.rb +12 -0
  213. data/examples/notifications/recipes/default.rb +7 -0
  214. data/examples/notifications/recipes/delayed.rb +7 -0
  215. data/examples/notifications/recipes/immediately.rb +7 -0
  216. data/examples/notifications/spec/chained_spec.rb +21 -0
  217. data/examples/notifications/spec/default_spec.rb +16 -0
  218. data/examples/notifications/spec/delayed_spec.rb +16 -0
  219. data/examples/notifications/spec/immediately_spec.rb +16 -0
  220. data/examples/ohai/recipes/reload.rb +13 -0
  221. data/examples/ohai/spec/reload_spec.rb +23 -0
  222. data/examples/package/recipes/install.rb +13 -0
  223. data/examples/package/recipes/purge.rb +13 -0
  224. data/examples/package/recipes/reconfig.rb +13 -0
  225. data/examples/package/recipes/remove.rb +13 -0
  226. data/examples/package/recipes/upgrade.rb +13 -0
  227. data/examples/package/spec/install_spec.rb +23 -0
  228. data/examples/package/spec/purge_spec.rb +19 -0
  229. data/examples/package/spec/reconfig_spec.rb +19 -0
  230. data/examples/package/spec/remove_spec.rb +19 -0
  231. data/examples/package/spec/upgrade_spec.rb +19 -0
  232. data/examples/pacman_package/recipes/install.rb +13 -0
  233. data/examples/pacman_package/recipes/purge.rb +13 -0
  234. data/examples/pacman_package/recipes/remove.rb +13 -0
  235. data/examples/pacman_package/recipes/upgrade.rb +13 -0
  236. data/examples/pacman_package/spec/install_spec.rb +23 -0
  237. data/examples/pacman_package/spec/purge_spec.rb +19 -0
  238. data/examples/pacman_package/spec/remove_spec.rb +19 -0
  239. data/examples/pacman_package/spec/upgrade_spec.rb +19 -0
  240. data/examples/portage_package/recipes/install.rb +13 -0
  241. data/examples/portage_package/recipes/purge.rb +13 -0
  242. data/examples/portage_package/recipes/remove.rb +13 -0
  243. data/examples/portage_package/recipes/upgrade.rb +13 -0
  244. data/examples/portage_package/spec/install_spec.rb +23 -0
  245. data/examples/portage_package/spec/purge_spec.rb +19 -0
  246. data/examples/portage_package/spec/remove_spec.rb +19 -0
  247. data/examples/portage_package/spec/upgrade_spec.rb +19 -0
  248. data/examples/powershell_script/recipes/run.rb +13 -0
  249. data/examples/powershell_script/spec/run_spec.rb +23 -0
  250. data/examples/registry_key/recipes/create.rb +13 -0
  251. data/examples/registry_key/recipes/create_if_missing.rb +13 -0
  252. data/examples/registry_key/recipes/delete.rb +13 -0
  253. data/examples/registry_key/recipes/delete_key.rb +13 -0
  254. data/examples/registry_key/spec/create_if_missing_spec.rb +19 -0
  255. data/examples/registry_key/spec/create_spec.rb +23 -0
  256. data/examples/registry_key/spec/delete_key_spec.rb +19 -0
  257. data/examples/registry_key/spec/delete_spec.rb +19 -0
  258. data/examples/remote_directory/recipes/create.rb +13 -0
  259. data/examples/remote_directory/recipes/create_if_missing.rb +13 -0
  260. data/examples/remote_directory/recipes/delete.rb +13 -0
  261. data/examples/remote_directory/spec/create_if_missing_spec.rb +19 -0
  262. data/examples/remote_directory/spec/create_spec.rb +23 -0
  263. data/examples/remote_directory/spec/delete_spec.rb +19 -0
  264. data/examples/remote_file/recipes/create.rb +18 -0
  265. data/examples/remote_file/recipes/create_if_missing.rb +16 -0
  266. data/examples/remote_file/recipes/delete.rb +16 -0
  267. data/examples/remote_file/recipes/touch.rb +16 -0
  268. data/examples/remote_file/spec/create_if_missing_spec.rb +19 -0
  269. data/examples/remote_file/spec/create_spec.rb +23 -0
  270. data/examples/remote_file/spec/delete_spec.rb +19 -0
  271. data/examples/remote_file/spec/touch_spec.rb +19 -0
  272. data/examples/render_file/files/default/cookbook_file +1 -0
  273. data/examples/render_file/recipes/default.rb +15 -0
  274. data/examples/render_file/recipes/template_helpers.rb +9 -0
  275. data/examples/render_file/spec/default_spec.rb +73 -0
  276. data/examples/render_file/spec/template_helpers_spec.rb +10 -0
  277. data/examples/render_file/templates/default/_partial.erb +1 -0
  278. data/examples/render_file/templates/default/partial.erb +1 -0
  279. data/examples/render_file/templates/default/template.erb +1 -0
  280. data/examples/render_file/templates/default/template_with_helper.erb +1 -0
  281. data/examples/roles/recipes/another.rb +3 -0
  282. data/examples/roles/recipes/default.rb +1 -0
  283. data/examples/roles/roles/role.rb +9 -0
  284. data/examples/roles/spec/default_spec.rb +21 -0
  285. data/examples/route/recipes/add.rb +13 -0
  286. data/examples/route/recipes/delete.rb +13 -0
  287. data/examples/route/spec/add_spec.rb +23 -0
  288. data/examples/route/spec/delete_spec.rb +19 -0
  289. data/examples/rpm_package/recipes/install.rb +13 -0
  290. data/examples/rpm_package/recipes/remove.rb +13 -0
  291. data/examples/rpm_package/recipes/upgrade.rb +13 -0
  292. data/examples/rpm_package/spec/install_spec.rb +23 -0
  293. data/examples/rpm_package/spec/remove_spec.rb +19 -0
  294. data/examples/rpm_package/spec/upgrade_spec.rb +19 -0
  295. data/examples/ruby_block/recipes/run.rb +9 -0
  296. data/examples/ruby_block/spec/run_spec.rb +18 -0
  297. data/examples/script/recipes/run_bash.rb +13 -0
  298. data/examples/script/recipes/run_csh.rb +13 -0
  299. data/examples/script/recipes/run_perl.rb +13 -0
  300. data/examples/script/recipes/run_python.rb +13 -0
  301. data/examples/script/recipes/run_ruby.rb +13 -0
  302. data/examples/script/recipes/run_script.rb +13 -0
  303. data/examples/script/spec/run_bash_spec.rb +23 -0
  304. data/examples/script/spec/run_csh_spec.rb +23 -0
  305. data/examples/script/spec/run_perl_spec.rb +23 -0
  306. data/examples/script/spec/run_python_spec.rb +23 -0
  307. data/examples/script/spec/run_ruby_spec.rb +23 -0
  308. data/examples/script/spec/run_script_spec.rb +23 -0
  309. data/examples/server/recipes/client.rb +6 -0
  310. data/examples/server/recipes/data_bag.rb +7 -0
  311. data/examples/server/recipes/environment.rb +6 -0
  312. data/examples/server/recipes/node.rb +6 -0
  313. data/examples/server/recipes/role.rb +6 -0
  314. data/examples/server/recipes/search.rb +5 -0
  315. data/examples/server/spec/client_spec.rb +17 -0
  316. data/examples/server/spec/data_bag_spec.rb +26 -0
  317. data/examples/server/spec/environment_spec.rb +17 -0
  318. data/examples/server/spec/node_spec.rb +40 -0
  319. data/examples/server/spec/role_spec.rb +17 -0
  320. data/examples/server/spec/search_spec.rb +58 -0
  321. data/examples/service/recipes/disable.rb +13 -0
  322. data/examples/service/recipes/enable.rb +13 -0
  323. data/examples/service/recipes/reload.rb +13 -0
  324. data/examples/service/recipes/restart.rb +13 -0
  325. data/examples/service/recipes/start.rb +13 -0
  326. data/examples/service/recipes/stop.rb +13 -0
  327. data/examples/service/spec/disable_spec.rb +19 -0
  328. data/examples/service/spec/enable_spec.rb +19 -0
  329. data/examples/service/spec/reload_spec.rb +19 -0
  330. data/examples/service/spec/restart_spec.rb +19 -0
  331. data/examples/service/spec/start_spec.rb +19 -0
  332. data/examples/service/spec/stop_spec.rb +19 -0
  333. data/examples/smartos_package/recipes/install.rb +13 -0
  334. data/examples/smartos_package/recipes/remove.rb +13 -0
  335. data/examples/smartos_package/recipes/upgrade.rb +13 -0
  336. data/examples/smartos_package/spec/install_spec.rb +23 -0
  337. data/examples/smartos_package/spec/remove_spec.rb +19 -0
  338. data/examples/smartos_package/spec/upgrade_spec.rb +19 -0
  339. data/examples/solaris_package/recipes/install.rb +13 -0
  340. data/examples/solaris_package/recipes/remove.rb +13 -0
  341. data/examples/solaris_package/spec/install_spec.rb +23 -0
  342. data/examples/solaris_package/spec/remove_spec.rb +19 -0
  343. data/examples/state_attrs/providers/lwrp.rb +3 -0
  344. data/examples/state_attrs/recipes/default.rb +3 -0
  345. data/examples/state_attrs/resources/lwrp.rb +6 -0
  346. data/examples/state_attrs/spec/default_spec.rb +12 -0
  347. data/examples/step_into/providers/lwrp.rb +3 -0
  348. data/examples/step_into/recipes/default.rb +1 -0
  349. data/examples/step_into/resources/lwrp.rb +4 -0
  350. data/examples/step_into/spec/default_spec.rb +19 -0
  351. data/examples/stub_command/recipes/default.rb +5 -0
  352. data/examples/stub_command/recipes/other_recipe.rb +3 -0
  353. data/examples/stub_command/spec/default_spec.rb +28 -0
  354. data/examples/stub_data_bag/recipes/default.rb +5 -0
  355. data/examples/stub_data_bag/spec/default_spec.rb +27 -0
  356. data/examples/stub_data_bag_item/recipes/default.rb +5 -0
  357. data/examples/stub_data_bag_item/spec/default_spec.rb +27 -0
  358. data/examples/stub_node/recipes/default.rb +0 -0
  359. data/examples/stub_node/spec/default_spec.rb +17 -0
  360. data/examples/stub_search/recipes/default.rb +5 -0
  361. data/examples/stub_search/spec/default_spec.rb +27 -0
  362. data/examples/subscribes/recipes/chained.rb +10 -0
  363. data/examples/subscribes/recipes/default.rb +5 -0
  364. data/examples/subscribes/recipes/delayed.rb +5 -0
  365. data/examples/subscribes/recipes/immediately.rb +5 -0
  366. data/examples/subscribes/spec/chained_spec.rb +21 -0
  367. data/examples/subscribes/spec/default_spec.rb +17 -0
  368. data/examples/subscribes/spec/delayed_spec.rb +16 -0
  369. data/examples/subscribes/spec/immediately_spec.rb +16 -0
  370. data/examples/subversion/recipes/checkout.rb +13 -0
  371. data/examples/subversion/recipes/export.rb +13 -0
  372. data/examples/subversion/recipes/force_export.rb +13 -0
  373. data/examples/subversion/recipes/sync.rb +13 -0
  374. data/examples/subversion/spec/checkout_spec.rb +19 -0
  375. data/examples/subversion/spec/export_spec.rb +19 -0
  376. data/examples/subversion/spec/force_export_spec.rb +19 -0
  377. data/examples/subversion/spec/sync_spec.rb +23 -0
  378. data/examples/template/recipes/create.rb +15 -0
  379. data/examples/template/recipes/create_if_missing.rb +15 -0
  380. data/examples/template/recipes/delete.rb +15 -0
  381. data/examples/template/recipes/touch.rb +15 -0
  382. data/examples/template/spec/create_if_missing_spec.rb +28 -0
  383. data/examples/template/spec/create_spec.rb +32 -0
  384. data/examples/template/spec/delete_spec.rb +19 -0
  385. data/examples/template/spec/touch_spec.rb +19 -0
  386. data/examples/use_inline_resources/libraries/matchers.rb +5 -0
  387. data/examples/use_inline_resources/providers/lwrp.rb +7 -0
  388. data/examples/use_inline_resources/recipes/default.rb +1 -0
  389. data/examples/use_inline_resources/resources/lwrp.rb +4 -0
  390. data/examples/use_inline_resources/spec/default_spec.rb +15 -0
  391. data/examples/user/recipes/create.rb +13 -0
  392. data/examples/user/recipes/lock.rb +13 -0
  393. data/examples/user/recipes/manage.rb +13 -0
  394. data/examples/user/recipes/modify.rb +13 -0
  395. data/examples/user/recipes/remove.rb +13 -0
  396. data/examples/user/recipes/unlock.rb +13 -0
  397. data/examples/user/spec/create_spec.rb +23 -0
  398. data/examples/user/spec/lock_spec.rb +19 -0
  399. data/examples/user/spec/manage_spec.rb +19 -0
  400. data/examples/user/spec/modify_spec.rb +19 -0
  401. data/examples/user/spec/remove_spec.rb +19 -0
  402. data/examples/user/spec/unlock_spec.rb +19 -0
  403. data/examples/yum_package/recipes/install.rb +13 -0
  404. data/examples/yum_package/recipes/purge.rb +13 -0
  405. data/examples/yum_package/recipes/remove.rb +13 -0
  406. data/examples/yum_package/recipes/upgrade.rb +13 -0
  407. data/examples/yum_package/spec/install_spec.rb +23 -0
  408. data/examples/yum_package/spec/purge_spec.rb +19 -0
  409. data/examples/yum_package/spec/remove_spec.rb +19 -0
  410. data/examples/yum_package/spec/upgrade_spec.rb +19 -0
  411. data/features/apt_package.feature +14 -0
  412. data/features/attributes.feature +7 -0
  413. data/features/batch.feature +13 -0
  414. data/features/cached.feature +7 -0
  415. data/features/chef_gem.feature +14 -0
  416. data/features/compile_time.feature +7 -0
  417. data/features/cookbook_file.feature +13 -0
  418. data/features/cron.feature +11 -0
  419. data/features/custom_matcher.feature +11 -0
  420. data/features/deploy.feature +12 -0
  421. data/features/directory.feature +11 -0
  422. data/features/dpkg_package.feature +12 -0
  423. data/features/easy_install_package.feature +13 -0
  424. data/features/env.feature +12 -0
  425. data/features/erl_call.feature +10 -0
  426. data/features/execute.feature +10 -0
  427. data/features/expect_exception.feature +12 -0
  428. data/features/file.feature +13 -0
  429. data/features/freebsd_package.feature +11 -0
  430. data/features/gem_package.feature +14 -0
  431. data/features/git.feature +12 -0
  432. data/features/group.feature +13 -0
  433. data/features/guards.feature +10 -0
  434. data/features/heavy_provider_light_resource.feature +10 -0
  435. data/features/http_request.feature +15 -0
  436. data/features/ifconfig.feature +13 -0
  437. data/features/include_recipe.feature +10 -0
  438. data/features/inherits.feature +7 -0
  439. data/features/ips_package.feature +12 -0
  440. data/features/link.feature +12 -0
  441. data/features/log.feature +10 -0
  442. data/features/macports_package.feature +13 -0
  443. data/features/mdadm.feature +12 -0
  444. data/features/mount.feature +14 -0
  445. data/features/multiple_actions.feature +11 -0
  446. data/features/multiple_run_action.feature +7 -0
  447. data/features/notifications.feature +13 -0
  448. data/features/ohai.feature +10 -0
  449. data/features/package.feature +14 -0
  450. data/features/pacman_package.feature +13 -0
  451. data/features/portage_package.feature +13 -0
  452. data/features/powershell_script.feature +13 -0
  453. data/features/registry_key.feature +13 -0
  454. data/features/remote_directory.feature +12 -0
  455. data/features/remote_file.feature +13 -0
  456. data/features/render_file.feature +16 -0
  457. data/features/roles.feature +7 -0
  458. data/features/route.feature +11 -0
  459. data/features/rpm_package.feature +12 -0
  460. data/features/ruby_block.feature +10 -0
  461. data/features/script.feature +15 -0
  462. data/features/server.feature +21 -0
  463. data/features/service.feature +15 -0
  464. data/features/smartos_package.feature +16 -0
  465. data/features/solaris_package.feature +15 -0
  466. data/features/state_attrs.feature +11 -0
  467. data/features/step_definitions/background_steps.rb +4 -0
  468. data/features/step_into.feature +7 -0
  469. data/features/stub_command.feature +7 -0
  470. data/features/stub_data_bag.feature +7 -0
  471. data/features/stub_data_bag_item.feature +7 -0
  472. data/features/stub_node.feature +7 -0
  473. data/features/stub_search.feature +7 -0
  474. data/features/subscribes.feature +13 -0
  475. data/features/subversion.feature +13 -0
  476. data/features/support/env.rb +36 -0
  477. data/features/support/executor.rb +18 -0
  478. data/features/template.feature +13 -0
  479. data/features/use_inline_resources.feature +7 -0
  480. data/features/user.feature +15 -0
  481. data/features/yum_package.feature +13 -0
  482. data/gemfiles/chef-11.0.0.gemfile +5 -0
  483. data/gemfiles/chef-11.2.0.gemfile +5 -0
  484. data/gemfiles/chef-11.4.4.gemfile +5 -0
  485. data/gemfiles/chef-11.6.0.gemfile +5 -0
  486. data/gemfiles/chef-11.8.0.gemfile +5 -0
  487. data/gemfiles/chef-master.gemfile +5 -0
  488. data/lib/chefspec/api.rb +13 -11
  489. data/lib/chefspec/api/notifications.rb +3 -3
  490. data/lib/chefspec/api/subscriptions.rb +35 -0
  491. data/lib/chefspec/coverage.rb +40 -34
  492. data/lib/chefspec/expect_exception.rb +14 -13
  493. data/lib/chefspec/formatter.rb +8 -8
  494. data/lib/chefspec/matchers.rb +1 -0
  495. data/lib/chefspec/matchers/include_recipe_matcher.rb +19 -18
  496. data/lib/chefspec/matchers/notifications_matcher.rb +25 -24
  497. data/lib/chefspec/matchers/render_file_matcher.rb +32 -31
  498. data/lib/chefspec/matchers/resource_matcher.rb +64 -63
  499. data/lib/chefspec/matchers/state_attrs_matcher.rb +18 -17
  500. data/lib/chefspec/matchers/subscribes_matcher.rb +59 -0
  501. data/lib/chefspec/renderer.rb +82 -81
  502. data/lib/chefspec/runner.rb +66 -51
  503. data/lib/chefspec/server.rb +84 -39
  504. data/lib/chefspec/stubs/stub.rb +10 -9
  505. data/lib/chefspec/version.rb +1 -1
  506. data/spec/spec_helper.rb +8 -0
  507. data/spec/support/hash.rb +35 -0
  508. data/spec/unit/api_spec.rb +18 -0
  509. data/spec/unit/cacher_spec.rb +54 -0
  510. data/spec/unit/expect_exception_spec.rb +32 -0
  511. data/spec/unit/extensions/lwrp_base_spec.rb +89 -0
  512. data/spec/unit/macros_spec.rb +119 -0
  513. data/spec/unit/matchers/include_recipe_matcher_spec.rb +38 -0
  514. data/spec/unit/matchers/link_to_matcher_spec.rb +39 -0
  515. data/spec/unit/matchers/notifications_matcher_spec.rb +5 -0
  516. data/spec/unit/matchers/render_file_matcher_spec.rb +41 -0
  517. data/spec/unit/matchers/resource_matcher_spec.rb +5 -0
  518. data/spec/unit/matchers/state_attrs_matcher_spec.rb +64 -0
  519. data/spec/unit/matchers/subscribes_matcher_spec.rb +5 -0
  520. data/spec/unit/renderer_spec.rb +51 -0
  521. data/spec/unit/runner_spec.rb +125 -0
  522. data/spec/unit/stubs/command_registry_spec.rb +27 -0
  523. data/spec/unit/stubs/command_stub_spec.rb +61 -0
  524. data/spec/unit/stubs/data_bag_item_registry_spec.rb +39 -0
  525. data/spec/unit/stubs/data_bag_item_stub_spec.rb +36 -0
  526. data/spec/unit/stubs/data_bag_registry_spec.rb +39 -0
  527. data/spec/unit/stubs/data_bag_stub_spec.rb +35 -0
  528. data/spec/unit/stubs/registry_spec.rb +29 -0
  529. data/spec/unit/stubs/search_registry_spec.rb +39 -0
  530. data/spec/unit/stubs/search_stub_spec.rb +36 -0
  531. data/spec/unit/stubs/stub_spec.rb +64 -0
  532. metadata +618 -5
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'service::start' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'starts a service with an explicit action' do
7
+ expect(chef_run).to start_service('explicit_action')
8
+ expect(chef_run).to_not start_service('not_explicit_action')
9
+ end
10
+
11
+ it 'starts a service with attributes' do
12
+ expect(chef_run).to start_service('with_attributes').with(pattern: 'pattern')
13
+ expect(chef_run).to_not start_service('with_attributes').with(pattern: 'bacon')
14
+ end
15
+
16
+ it 'starts a service when specifying the identity attribute' do
17
+ expect(chef_run).to start_service('identity_attribute')
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'service::stop' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'stops a service with an explicit action' do
7
+ expect(chef_run).to stop_service('explicit_action')
8
+ expect(chef_run).to_not stop_service('not_explicit_action')
9
+ end
10
+
11
+ it 'stops a service with attributes' do
12
+ expect(chef_run).to stop_service('with_attributes').with(pattern: 'pattern')
13
+ expect(chef_run).to_not stop_service('with_attributes').with(pattern: 'bacon')
14
+ end
15
+
16
+ it 'stops a service when specifying the identity attribute' do
17
+ expect(chef_run).to stop_service('identity_attribute')
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ smartos_package 'default_action'
2
+
3
+ smartos_package 'explicit_action' do
4
+ action :install
5
+ end
6
+
7
+ smartos_package 'with_attributes' do
8
+ version '1.0.0'
9
+ end
10
+
11
+ smartos_package 'specifying the identity attribute' do
12
+ package_name 'identity_attribute'
13
+ end
@@ -0,0 +1,13 @@
1
+ smartos_package 'explicit_action' do
2
+ action :remove
3
+ end
4
+
5
+ smartos_package 'with_attributes' do
6
+ version '1.0.0'
7
+ action :remove
8
+ end
9
+
10
+ smartos_package 'specifying the identity attribute' do
11
+ package_name 'identity_attribute'
12
+ action :remove
13
+ end
@@ -0,0 +1,13 @@
1
+ smartos_package 'explicit_action' do
2
+ action :upgrade
3
+ end
4
+
5
+ smartos_package 'with_attributes' do
6
+ version '1.0.0'
7
+ action :upgrade
8
+ end
9
+
10
+ smartos_package 'specifying the identity attribute' do
11
+ package_name 'identity_attribute'
12
+ action :upgrade
13
+ end
@@ -0,0 +1,23 @@
1
+ require 'chefspec'
2
+
3
+ describe 'smartos_package::install' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'installs a smartos_package with the default action' do
7
+ expect(chef_run).to install_smartos_package('default_action')
8
+ expect(chef_run).to_not install_smartos_package('not_default_action')
9
+ end
10
+
11
+ it 'installs a smartos_package with an explicit action' do
12
+ expect(chef_run).to install_smartos_package('explicit_action')
13
+ end
14
+
15
+ it 'installs a smartos_package with attributes' do
16
+ expect(chef_run).to install_smartos_package('with_attributes').with(version: '1.0.0')
17
+ expect(chef_run).to_not install_smartos_package('with_attributes').with(version: '1.2.3')
18
+ end
19
+
20
+ it 'installs a smartos_package when specifying the identity attribute' do
21
+ expect(chef_run).to install_smartos_package('identity_attribute')
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'smartos_package::remove' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'removes a smartos_package with an explicit action' do
7
+ expect(chef_run).to remove_smartos_package('explicit_action')
8
+ expect(chef_run).to_not remove_smartos_package('not_explicit_action')
9
+ end
10
+
11
+ it 'removes a smartos_package with attributes' do
12
+ expect(chef_run).to remove_smartos_package('with_attributes').with(version: '1.0.0')
13
+ expect(chef_run).to_not remove_smartos_package('with_attributes').with(version: '1.2.3')
14
+ end
15
+
16
+ it 'removes a smartos_package when specifying the identity attribute' do
17
+ expect(chef_run).to remove_smartos_package('identity_attribute')
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'smartos_package::upgrade' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'upgrades a smartos_package with an explicit action' do
7
+ expect(chef_run).to upgrade_smartos_package('explicit_action')
8
+ expect(chef_run).to_not upgrade_smartos_package('not_explicit_action')
9
+ end
10
+
11
+ it 'upgrades a smartos_package with attributes' do
12
+ expect(chef_run).to upgrade_smartos_package('with_attributes').with(version: '1.0.0')
13
+ expect(chef_run).to_not upgrade_smartos_package('with_attributes').with(version: '1.2.3')
14
+ end
15
+
16
+ it 'upgrades a smartos_package when specifying the identity attribute' do
17
+ expect(chef_run).to upgrade_smartos_package('identity_attribute')
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ solaris_package 'default_action'
2
+
3
+ solaris_package 'explicit_action' do
4
+ action :install
5
+ end
6
+
7
+ solaris_package 'with_attributes' do
8
+ version '1.0.0'
9
+ end
10
+
11
+ solaris_package 'specifying the identity attribute' do
12
+ package_name 'identity_attribute'
13
+ end
@@ -0,0 +1,13 @@
1
+ solaris_package 'explicit_action' do
2
+ action :remove
3
+ end
4
+
5
+ solaris_package 'with_attributes' do
6
+ version '1.0.0'
7
+ action :remove
8
+ end
9
+
10
+ solaris_package 'specifying the identity attribute' do
11
+ package_name 'identity_attribute'
12
+ action :remove
13
+ end
@@ -0,0 +1,23 @@
1
+ require 'chefspec'
2
+
3
+ describe 'solaris_package::install' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'installs a solaris_package with the default action' do
7
+ expect(chef_run).to install_solaris_package('default_action')
8
+ expect(chef_run).to_not install_solaris_package('not_default_action')
9
+ end
10
+
11
+ it 'installs a solaris_package with an explicit action' do
12
+ expect(chef_run).to install_solaris_package('explicit_action')
13
+ end
14
+
15
+ it 'installs a solaris_package with attributes' do
16
+ expect(chef_run).to install_solaris_package('with_attributes').with(version: '1.0.0')
17
+ expect(chef_run).to_not install_solaris_package('with_attributes').with(version: '1.2.3')
18
+ end
19
+
20
+ it 'installs a solaris_package when specifying the identity attribute' do
21
+ expect(chef_run).to install_solaris_package('identity_attribute')
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'solaris_package::remove' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ it 'removes a solaris_package with an explicit action' do
7
+ expect(chef_run).to remove_solaris_package('explicit_action')
8
+ expect(chef_run).to_not remove_solaris_package('not_explicit_action')
9
+ end
10
+
11
+ it 'removes a solaris_package with attributes' do
12
+ expect(chef_run).to remove_solaris_package('with_attributes').with(version: '1.0.0')
13
+ expect(chef_run).to_not remove_solaris_package('with_attributes').with(version: '1.2.3')
14
+ end
15
+
16
+ it 'removes a solaris_package when specifying the identity attribute' do
17
+ expect(chef_run).to remove_solaris_package('identity_attribute')
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ action :run do
2
+
3
+ end
@@ -0,0 +1,3 @@
1
+ state_attrs_lwrp 'name' do
2
+ time '50'
3
+ end
@@ -0,0 +1,6 @@
1
+ actions :run
2
+ default_action :run
3
+ state_attrs :name, :time
4
+
5
+ attribute :name, name_attribute: true
6
+ attribute :time
@@ -0,0 +1,12 @@
1
+ require 'chefspec'
2
+
3
+ ChefSpec::Runner.define_runner_method(:state_attrs_lwrp)
4
+
5
+ describe 'state_attrs::default' do
6
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
7
+ let(:lwrp) { chef_run.state_attrs_lwrp('name') }
8
+
9
+ it 'has the correct state attributes' do
10
+ expect(lwrp).to have_state_attrs(:name, :time)
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ action :something do
2
+ log 'message'
3
+ end
@@ -0,0 +1 @@
1
+ step_into_lwrp 'thing'
@@ -0,0 +1,4 @@
1
+ actions :something
2
+ default_action :something
3
+
4
+ attribute :name, kind_of: String, name_attribute: true
@@ -0,0 +1,19 @@
1
+ require 'chefspec'
2
+
3
+ describe 'step_into::default' do
4
+ context 'without :step_into' do
5
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
6
+
7
+ it 'does not execute the LWRPs action' do
8
+ expect(chef_run).to_not write_log('message')
9
+ end
10
+ end
11
+
12
+ context 'with :step_into' do
13
+ let(:chef_run) { ChefSpec::Runner.new(step_into: ['step_into_lwrp']).converge(described_recipe) }
14
+
15
+ it 'does execute the LWRPs action' do
16
+ expect(chef_run).to write_log('message')
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ log 'message' do
2
+ only_if 'test -f "/tmp/file"'
3
+ end
4
+
5
+ include_recipe 'stub_command::other_recipe'
@@ -0,0 +1,3 @@
1
+ log 'other message' do
2
+ only_if 'test -f "/tmp/other_file"'
3
+ end
@@ -0,0 +1,28 @@
1
+ require 'chefspec'
2
+
3
+ describe 'stub_command::default' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ context 'when the command is not stubbed' do
7
+ it 'raises an exception' do
8
+ expect {
9
+ chef_run
10
+ }.to raise_error(ChefSpec::Error::CommandNotStubbed)
11
+ end
12
+ end
13
+
14
+ context 'as a String' do
15
+ it 'does not raise an exception' do
16
+ stub_command('test -f "/tmp/file"').and_return(true)
17
+ stub_command('test -f "/tmp/other_file"').and_return(true)
18
+ expect { chef_run }.to_not raise_error
19
+ end
20
+ end
21
+
22
+ context 'as a Regexp' do
23
+ it 'does not raise an exception' do
24
+ stub_command(/test -f "(.+)"/) { 1 == 2 }
25
+ expect { chef_run }.to_not raise_error
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ template '/tmp/specific_stub' do
2
+ variables(
3
+ users: data_bag(:users)
4
+ )
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'chefspec'
2
+
3
+ describe 'stub_data_bag::default' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ context 'when the data_bag is not stubbed' do
7
+ it 'raises an exception' do
8
+ expect {
9
+ chef_run
10
+ }.to raise_error(ChefSpec::Error::DataBagNotStubbed)
11
+ end
12
+ end
13
+
14
+ context 'as a String' do
15
+ it 'does not raise an exception' do
16
+ stub_data_bag('users').and_return([ { id: 'svargo' } ])
17
+ expect { chef_run }.to_not raise_error
18
+ end
19
+ end
20
+
21
+ context 'as a Symbol' do
22
+ it 'does not raise an exception' do
23
+ stub_data_bag(:users).and_return([ { id: 'svargo' } ])
24
+ expect { chef_run }.to_not raise_error
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ template '/tmp/specific_stub' do
2
+ variables(
3
+ users: data_bag_item(:users, 'svargo')
4
+ )
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'chefspec'
2
+
3
+ describe 'stub_data_bag_item::default' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ context 'when the data_bag_item is not stubbed' do
7
+ it 'raises an exception' do
8
+ expect {
9
+ chef_run
10
+ }.to raise_error(ChefSpec::Error::DataBagItemNotStubbed)
11
+ end
12
+ end
13
+
14
+ context 'as a Symbol' do
15
+ it 'does not raise an exception' do
16
+ stub_data_bag_item(:users, 'svargo').and_return({ id: 'svargo', name: 'Seth' })
17
+ expect { chef_run }.to_not raise_error
18
+ end
19
+ end
20
+
21
+ context 'as a String' do
22
+ it 'does not raise an exception' do
23
+ stub_data_bag_item('users', 'svargo').and_return({ id: 'svargo', name: 'Seth' })
24
+ expect { chef_run }.to_not raise_error
25
+ end
26
+ end
27
+ end
File without changes
@@ -0,0 +1,17 @@
1
+ require 'chefspec'
2
+
3
+ describe 'stub_node::default' do
4
+ let(:my_node) do
5
+ stub_node('example.com', platform: 'ubuntu', version: '12.04') do |node|
6
+ node.set['foo']['bar'] = 'zip'
7
+ end
8
+ end
9
+
10
+ it 'sets the fauxhai attributes' do
11
+ expect(my_node['kernel']['name']).to eq('Linux')
12
+ end
13
+
14
+ it 'uses the overridden attributes' do
15
+ expect(my_node['foo']['bar']).to eq('zip')
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ template '/tmp/specific_stub' do
2
+ variables(
3
+ nodes: search(:node, 'name:example.com')
4
+ )
5
+ end
@@ -0,0 +1,27 @@
1
+ require 'chefspec'
2
+
3
+ describe 'stub_search::default' do
4
+ let(:chef_run) { ChefSpec::Runner.new.converge(described_recipe) }
5
+
6
+ context 'when the search is not stubbed' do
7
+ it 'raises an exception' do
8
+ expect {
9
+ chef_run
10
+ }.to raise_error(ChefSpec::Error::SearchNotStubbed)
11
+ end
12
+ end
13
+
14
+ context 'as a String' do
15
+ it 'does not raise an exception' do
16
+ stub_search(:node, 'name:example.com').and_return([ { name: 'example.com' } ])
17
+ expect { chef_run }.to_not raise_error
18
+ end
19
+ end
20
+
21
+ context 'as a Regexp' do
22
+ it 'does not raise an exception' do
23
+ stub_search(:node, /name:(.+)/).and_return([ { name: 'example.com' } ])
24
+ expect { chef_run }.to_not raise_error
25
+ end
26
+ end
27
+ end