chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. data/CONTRIBUTING.md +9 -0
  2. data/README.md +1 -1
  3. data/Rakefile +12 -0
  4. data/bin/chef-service-manager +1 -1
  5. data/bin/chef-windows-service +35 -0
  6. data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
  7. data/distro/common/html/ctl_chef_client.html +3 -7
  8. data/distro/common/html/ctl_chef_server.html +609 -41
  9. data/distro/common/html/ctl_chef_shell.html +2 -2
  10. data/distro/common/html/ctl_chef_solo.html +1 -1
  11. data/distro/common/html/index.html +13 -13
  12. data/distro/common/html/knife.html +10 -10
  13. data/distro/common/html/knife_bootstrap.html +8 -8
  14. data/distro/common/html/knife_client.html +12 -12
  15. data/distro/common/html/knife_common_options.html +7 -7
  16. data/distro/common/html/knife_configure.html +3 -3
  17. data/distro/common/html/knife_cookbook.html +19 -19
  18. data/distro/common/html/knife_cookbook_site.html +28 -28
  19. data/distro/common/html/knife_data_bag.html +28 -13
  20. data/distro/common/html/knife_delete.html +2 -2
  21. data/distro/common/html/knife_deps.html +3 -3
  22. data/distro/common/html/knife_diff.html +4 -4
  23. data/distro/common/html/knife_download.html +3 -3
  24. data/distro/common/html/knife_edit.html +2 -2
  25. data/distro/common/html/knife_environment.html +14 -14
  26. data/distro/common/html/knife_exec.html +11 -11
  27. data/distro/common/html/knife_index_rebuild.html +2 -2
  28. data/distro/common/html/knife_list.html +3 -3
  29. data/distro/common/html/knife_node.html +23 -23
  30. data/distro/common/html/knife_raw.html +4 -4
  31. data/distro/common/html/knife_recipe_list.html +3 -3
  32. data/distro/common/html/knife_role.html +11 -11
  33. data/distro/common/html/knife_search.html +4 -4
  34. data/distro/common/html/knife_serve.html +3 -3
  35. data/distro/common/html/knife_show.html +3 -3
  36. data/distro/common/html/knife_ssh.html +7 -7
  37. data/distro/common/html/knife_ssl_check.html +7 -7
  38. data/distro/common/html/knife_ssl_fetch.html +9 -9
  39. data/distro/common/html/knife_status.html +3 -3
  40. data/distro/common/html/knife_tag.html +9 -9
  41. data/distro/common/html/knife_upload.html +3 -3
  42. data/distro/common/html/knife_user.html +9 -9
  43. data/distro/common/html/knife_using.html +11 -11
  44. data/distro/common/html/knife_xargs.html +14 -5
  45. data/distro/common/html/search.html +2 -2
  46. data/distro/common/html/searchindex.js +1 -1
  47. data/distro/common/man/man1/chef-shell.1 +2 -2
  48. data/distro/common/man/man1/knife-bootstrap.1 +7 -7
  49. data/distro/common/man/man1/knife-client.1 +10 -10
  50. data/distro/common/man/man1/knife-configure.1 +5 -5
  51. data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
  52. data/distro/common/man/man1/knife-cookbook.1 +12 -12
  53. data/distro/common/man/man1/knife-data-bag.1 +34 -10
  54. data/distro/common/man/man1/knife-delete.1 +5 -5
  55. data/distro/common/man/man1/knife-deps.1 +5 -5
  56. data/distro/common/man/man1/knife-diff.1 +7 -7
  57. data/distro/common/man/man1/knife-download.1 +5 -5
  58. data/distro/common/man/man1/knife-edit.1 +5 -5
  59. data/distro/common/man/man1/knife-environment.1 +11 -11
  60. data/distro/common/man/man1/knife-exec.1 +11 -11
  61. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  62. data/distro/common/man/man1/knife-list.1 +5 -5
  63. data/distro/common/man/man1/knife-node.1 +16 -16
  64. data/distro/common/man/man1/knife-raw.1 +6 -6
  65. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  66. data/distro/common/man/man1/knife-role.1 +7 -7
  67. data/distro/common/man/man1/knife-search.1 +6 -6
  68. data/distro/common/man/man1/knife-serve.1 +6 -6
  69. data/distro/common/man/man1/knife-show.1 +5 -5
  70. data/distro/common/man/man1/knife-ssh.1 +9 -9
  71. data/distro/common/man/man1/knife-ssl-check.1 +7 -7
  72. data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
  73. data/distro/common/man/man1/knife-status.1 +5 -5
  74. data/distro/common/man/man1/knife-tag.1 +8 -8
  75. data/distro/common/man/man1/knife-upload.1 +5 -5
  76. data/distro/common/man/man1/knife-user.1 +8 -8
  77. data/distro/common/man/man1/knife-xargs.1 +36 -10
  78. data/distro/common/man/man1/knife.1 +14 -14
  79. data/distro/common/man/man8/chef-client.8 +3 -10
  80. data/distro/common/man/man8/chef-solo.8 +1 -1
  81. data/ext/win32-eventlog/Rakefile +50 -0
  82. data/ext/win32-eventlog/chef-log.man +26 -0
  83. data/lib/chef/application.rb +313 -241
  84. data/lib/chef/application/apply.rb +10 -8
  85. data/lib/chef/application/client.rb +58 -33
  86. data/lib/chef/application/solo.rb +33 -12
  87. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  88. data/lib/chef/chef_fs/command_line.rb +1 -1
  89. data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
  90. data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
  91. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
  92. data/lib/chef/client.rb +18 -48
  93. data/lib/chef/config.rb +43 -11
  94. data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
  95. data/lib/chef/cookbook/metadata.rb +81 -38
  96. data/lib/chef/cookbook/syntax_check.rb +18 -52
  97. data/lib/chef/cookbook_loader.rb +1 -1
  98. data/lib/chef/cookbook_version.rb +58 -39
  99. data/lib/chef/data_bag.rb +2 -2
  100. data/lib/chef/deprecation/provider/file.rb +2 -1
  101. data/lib/chef/dsl/data_query.rb +2 -29
  102. data/lib/chef/dsl/recipe.rb +8 -22
  103. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  104. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
  105. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
  106. data/lib/chef/event_loggers/base.rb +62 -0
  107. data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
  108. data/lib/chef/exceptions.rb +18 -1
  109. data/lib/chef/file_cache.rb +3 -2
  110. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
  111. data/lib/chef/http.rb +20 -13
  112. data/lib/chef/http/ssl_policies.rb +2 -1
  113. data/lib/chef/json_compat.rb +9 -3
  114. data/lib/chef/knife.rb +2 -1
  115. data/lib/chef/knife/bootstrap.rb +12 -18
  116. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  117. data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
  118. data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
  119. data/lib/chef/knife/cookbook_create.rb +1 -1
  120. data/lib/chef/knife/cookbook_site_share.rb +43 -8
  121. data/lib/chef/knife/core/bootstrap_context.rb +6 -11
  122. data/lib/chef/knife/core/object_loader.rb +5 -5
  123. data/lib/chef/knife/core/status_presenter.rb +156 -0
  124. data/lib/chef/knife/core/subcommand_loader.rb +6 -5
  125. data/lib/chef/knife/core/ui.rb +4 -4
  126. data/lib/chef/knife/data_bag_create.rb +7 -32
  127. data/lib/chef/knife/data_bag_edit.rb +24 -43
  128. data/lib/chef/knife/data_bag_from_file.rb +6 -31
  129. data/lib/chef/knife/data_bag_secret_options.rb +142 -0
  130. data/lib/chef/knife/data_bag_show.rb +19 -33
  131. data/lib/chef/knife/node_from_file.rb +9 -8
  132. data/lib/chef/knife/ssh.rb +0 -7
  133. data/lib/chef/knife/ssl_check.rb +70 -6
  134. data/lib/chef/knife/status.rb +11 -58
  135. data/lib/chef/mixin/command/unix.rb +2 -2
  136. data/lib/chef/mixin/convert_to_class_name.rb +54 -0
  137. data/lib/chef/mixin/descendants_tracker.rb +82 -0
  138. data/lib/chef/mixin/homebrew_user.rb +68 -0
  139. data/lib/chef/mixin/shell_out.rb +0 -4
  140. data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
  141. data/lib/chef/mixin/windows_env_helper.rb +56 -0
  142. data/lib/chef/node.rb +2 -2
  143. data/lib/chef/node_map.rb +146 -0
  144. data/lib/chef/platform/provider_mapping.rb +11 -39
  145. data/lib/chef/platform/provider_priority_map.rb +80 -0
  146. data/lib/chef/platform/query_helpers.rb +5 -1
  147. data/lib/chef/platform/service_helpers.rb +113 -0
  148. data/lib/chef/provider.rb +24 -0
  149. data/lib/chef/provider/breakpoint.rb +2 -0
  150. data/lib/chef/provider/cookbook_file.rb +2 -0
  151. data/lib/chef/provider/cron.rb +1 -1
  152. data/lib/chef/provider/cron/unix.rb +13 -9
  153. data/lib/chef/provider/deploy.rb +3 -2
  154. data/lib/chef/provider/deploy/revision.rb +4 -2
  155. data/lib/chef/provider/deploy/timestamped.rb +2 -0
  156. data/lib/chef/provider/directory.rb +2 -0
  157. data/lib/chef/provider/dsc_script.rb +179 -0
  158. data/lib/chef/provider/env.rb +25 -10
  159. data/lib/chef/provider/env/windows.rb +9 -16
  160. data/lib/chef/provider/erl_call.rb +2 -0
  161. data/lib/chef/provider/execute.rb +5 -2
  162. data/lib/chef/provider/file.rb +2 -0
  163. data/lib/chef/provider/git.rb +51 -23
  164. data/lib/chef/provider/group/dscl.rb +2 -2
  165. data/lib/chef/provider/group/pw.rb +9 -13
  166. data/lib/chef/provider/http_request.rb +2 -0
  167. data/lib/chef/provider/link.rb +3 -0
  168. data/lib/chef/provider/log.rb +2 -0
  169. data/lib/chef/provider/lwrp_base.rb +11 -9
  170. data/lib/chef/provider/mount/mount.rb +1 -1
  171. data/lib/chef/provider/package/aix.rb +2 -0
  172. data/lib/chef/provider/package/apt.rb +2 -0
  173. data/lib/chef/provider/package/dpkg.rb +2 -0
  174. data/lib/chef/provider/package/easy_install.rb +2 -0
  175. data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
  176. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  177. data/lib/chef/provider/package/freebsd/port.rb +1 -9
  178. data/lib/chef/provider/package/homebrew.rb +127 -0
  179. data/lib/chef/provider/package/ips.rb +2 -0
  180. data/lib/chef/provider/package/macports.rb +3 -0
  181. data/lib/chef/provider/package/pacman.rb +5 -4
  182. data/lib/chef/provider/package/paludis.rb +4 -2
  183. data/lib/chef/provider/package/portage.rb +4 -1
  184. data/lib/chef/provider/package/rpm.rb +2 -0
  185. data/lib/chef/provider/package/rubygems.rb +4 -0
  186. data/lib/chef/provider/package/smartos.rb +2 -0
  187. data/lib/chef/provider/package/solaris.rb +2 -0
  188. data/lib/chef/provider/package/windows.rb +5 -2
  189. data/lib/chef/provider/package/yum.rb +2 -0
  190. data/lib/chef/provider/powershell_script.rb +3 -1
  191. data/lib/chef/provider/remote_directory.rb +25 -10
  192. data/lib/chef/provider/route.rb +2 -0
  193. data/lib/chef/provider/ruby_block.rb +2 -0
  194. data/lib/chef/provider/script.rb +6 -0
  195. data/lib/chef/provider/service/aix.rb +128 -0
  196. data/lib/chef/provider/service/aixinit.rb +117 -0
  197. data/lib/chef/provider/service/arch.rb +6 -0
  198. data/lib/chef/provider/service/debian.rb +35 -29
  199. data/lib/chef/provider/service/freebsd.rb +7 -1
  200. data/lib/chef/provider/service/gentoo.rb +5 -1
  201. data/lib/chef/provider/service/init.rb +2 -0
  202. data/lib/chef/provider/service/insserv.rb +15 -8
  203. data/lib/chef/provider/service/invokercd.rb +6 -0
  204. data/lib/chef/provider/service/macosx.rb +4 -1
  205. data/lib/chef/provider/service/redhat.rb +9 -3
  206. data/lib/chef/provider/service/simple.rb +2 -0
  207. data/lib/chef/provider/service/solaris.rb +2 -0
  208. data/lib/chef/provider/service/systemd.rb +7 -0
  209. data/lib/chef/provider/service/upstart.rb +7 -0
  210. data/lib/chef/provider/service/windows.rb +5 -0
  211. data/lib/chef/provider/subversion.rb +2 -0
  212. data/lib/chef/provider/template.rb +1 -0
  213. data/lib/chef/provider/user/dscl.rb +3 -2
  214. data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
  215. data/lib/chef/provider_resolver.rb +103 -0
  216. data/lib/chef/providers.rb +6 -2
  217. data/lib/chef/recipe.rb +2 -0
  218. data/lib/chef/resource.rb +69 -78
  219. data/lib/chef/resource/apt_package.rb +3 -1
  220. data/lib/chef/resource/bash.rb +1 -0
  221. data/lib/chef/resource/bff_package.rb +0 -1
  222. data/lib/chef/resource/breakpoint.rb +1 -1
  223. data/lib/chef/resource/chef_gem.rb +1 -2
  224. data/lib/chef/resource/conditional.rb +26 -6
  225. data/lib/chef/resource/cookbook_file.rb +2 -3
  226. data/lib/chef/resource/csh.rb +1 -0
  227. data/lib/chef/resource/deploy.rb +0 -1
  228. data/lib/chef/resource/deploy_revision.rb +6 -1
  229. data/lib/chef/resource/directory.rb +1 -2
  230. data/lib/chef/resource/dpkg_package.rb +2 -1
  231. data/lib/chef/resource/dsc_script.rb +125 -0
  232. data/lib/chef/resource/easy_install_package.rb +2 -1
  233. data/lib/chef/resource/erl_call.rb +1 -0
  234. data/lib/chef/resource/execute.rb +26 -9
  235. data/lib/chef/resource/file.rb +1 -3
  236. data/lib/chef/resource/freebsd_package.rb +10 -23
  237. data/lib/chef/resource/gem_package.rb +2 -1
  238. data/lib/chef/resource/git.rb +2 -1
  239. data/lib/chef/resource/homebrew_package.rb +46 -0
  240. data/lib/chef/resource/http_request.rb +1 -0
  241. data/lib/chef/resource/ips_package.rb +3 -1
  242. data/lib/chef/resource/link.rb +1 -2
  243. data/lib/chef/resource/log.rb +4 -0
  244. data/lib/chef/resource/lwrp_base.rb +24 -15
  245. data/lib/chef/resource/macports_package.rb +3 -1
  246. data/lib/chef/resource/pacman_package.rb +2 -1
  247. data/lib/chef/resource/paludis_package.rb +3 -1
  248. data/lib/chef/resource/perl.rb +1 -0
  249. data/lib/chef/resource/powershell_script.rb +0 -2
  250. data/lib/chef/resource/python.rb +1 -1
  251. data/lib/chef/resource/remote_directory.rb +1 -2
  252. data/lib/chef/resource/remote_file.rb +1 -1
  253. data/lib/chef/resource/rpm_package.rb +2 -1
  254. data/lib/chef/resource/ruby.rb +1 -0
  255. data/lib/chef/resource/ruby_block.rb +3 -0
  256. data/lib/chef/resource/script.rb +2 -25
  257. data/lib/chef/resource/service.rb +0 -4
  258. data/lib/chef/resource/smartos_package.rb +3 -4
  259. data/lib/chef/resource/solaris_package.rb +7 -1
  260. data/lib/chef/resource/subversion.rb +0 -1
  261. data/lib/chef/resource/template.rb +2 -3
  262. data/lib/chef/resource/timestamped_deploy.rb +1 -2
  263. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  264. data/lib/chef/resource/windows_package.rb +3 -4
  265. data/lib/chef/resource/windows_script.rb +3 -0
  266. data/lib/chef/resource/windows_service.rb +2 -2
  267. data/lib/chef/resource/yum_package.rb +3 -1
  268. data/lib/chef/resource_collection.rb +50 -227
  269. data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
  270. data/lib/chef/resource_collection/resource_list.rb +89 -0
  271. data/lib/chef/resource_collection/resource_set.rb +170 -0
  272. data/lib/chef/resources.rb +2 -0
  273. data/lib/chef/role.rb +1 -1
  274. data/lib/chef/run_context.rb +5 -1
  275. data/lib/chef/shell/ext.rb +1 -1
  276. data/lib/chef/util/backup.rb +3 -2
  277. data/lib/chef/util/dsc/configuration_generator.rb +115 -0
  278. data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
  279. data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
  280. data/lib/chef/util/dsc/resource_info.rb +26 -0
  281. data/lib/chef/util/path_helper.rb +12 -0
  282. data/lib/chef/util/powershell/cmdlet.rb +136 -0
  283. data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
  284. data/lib/chef/version.rb +1 -1
  285. data/lib/chef/win32/api/system.rb +9 -0
  286. data/lib/chef/win32/version.rb +2 -0
  287. data/spec/.DS_Store +0 -0
  288. data/spec/data/.DS_Store +0 -0
  289. data/spec/data/bootstrap/test-hints.erb +1 -1
  290. data/spec/data/bootstrap/test.erb +1 -1
  291. data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
  292. data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
  293. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
  294. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
  295. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
  296. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
  297. data/spec/data/lwrp/.DS_Store +0 -0
  298. data/spec/data/lwrp/providers/.DS_Store +0 -0
  299. data/spec/data/lwrp/providers/buck_passer.rb +9 -2
  300. data/spec/data/lwrp/resources/.DS_Store +0 -0
  301. data/spec/data/lwrp/resources/foo.rb +3 -2
  302. data/spec/data/lwrp_override/.DS_Store +0 -0
  303. data/spec/data/lwrp_override/providers/.DS_Store +0 -0
  304. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
  305. data/spec/data/lwrp_override/resources/.DS_Store +0 -0
  306. data/spec/data/lwrp_override/resources/foo.rb +4 -3
  307. data/spec/functional/assets/chefinittest +34 -0
  308. data/spec/functional/assets/testchefsubsys +11 -0
  309. data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
  310. data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
  311. data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
  312. data/spec/functional/knife/exec_spec.rb +1 -1
  313. data/spec/functional/resource/aix_service_spec.rb +136 -0
  314. data/spec/functional/resource/aixinit_service_spec.rb +211 -0
  315. data/spec/functional/resource/base.rb +1 -0
  316. data/spec/functional/resource/batch_spec.rb +4 -11
  317. data/spec/functional/resource/cron_spec.rb +7 -1
  318. data/spec/functional/resource/dsc_script_spec.rb +382 -0
  319. data/spec/functional/resource/env_spec.rb +54 -0
  320. data/spec/functional/resource/execute_spec.rb +113 -0
  321. data/spec/functional/resource/file_spec.rb +2 -0
  322. data/spec/functional/resource/group_spec.rb +7 -4
  323. data/spec/functional/resource/powershell_spec.rb +198 -185
  324. data/spec/functional/resource/rpm_spec.rb +5 -4
  325. data/spec/functional/resource/user/dscl_spec.rb +2 -1
  326. data/spec/functional/util/path_helper_spec.rb +37 -0
  327. data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
  328. data/spec/integration/client/client_spec.rb +1 -1
  329. data/spec/integration/client/ipv6_spec.rb +1 -1
  330. data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
  331. data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
  332. data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
  333. data/spec/integration/knife/chefignore_spec.rb +1 -1
  334. data/spec/integration/knife/common_options_spec.rb +1 -1
  335. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  336. data/spec/integration/knife/delete_spec.rb +1 -1
  337. data/spec/integration/knife/deps_spec.rb +1 -1
  338. data/spec/integration/knife/diff_spec.rb +1 -1
  339. data/spec/integration/knife/download_spec.rb +1 -1
  340. data/spec/integration/knife/list_spec.rb +1 -1
  341. data/spec/integration/knife/raw_spec.rb +1 -1
  342. data/spec/integration/knife/redirection_spec.rb +1 -1
  343. data/spec/integration/knife/serve_spec.rb +1 -1
  344. data/spec/integration/knife/show_spec.rb +1 -1
  345. data/spec/integration/knife/upload_spec.rb +4 -3
  346. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  347. data/spec/spec_helper.rb +15 -0
  348. data/spec/support/chef_helpers.rb +1 -0
  349. data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
  350. data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
  351. data/spec/support/platform_helpers.rb +28 -0
  352. data/spec/support/shared/functional/file_resource.rb +6 -0
  353. data/spec/support/shared/functional/windows_script.rb +118 -0
  354. data/spec/support/shared/integration/integration_helper.rb +5 -2
  355. data/spec/support/shared/matchers/exit_with_code.rb +28 -0
  356. data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
  357. data/spec/support/shared/shared_examples.rb +14 -0
  358. data/spec/support/shared/unit/execute_resource.rb +0 -7
  359. data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
  360. data/spec/support/shared/unit/script_resource.rb +1 -1
  361. data/spec/support/shared/unit/windows_script_resource.rb +35 -2
  362. data/spec/tiny_server.rb +1 -2
  363. data/spec/unit/api_client_spec.rb +5 -1
  364. data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
  365. data/spec/unit/application/client_spec.rb +106 -13
  366. data/spec/unit/application/solo_spec.rb +25 -1
  367. data/spec/unit/client_spec.rb +1 -26
  368. data/spec/unit/config_fetcher_spec.rb +2 -1
  369. data/spec/unit/config_spec.rb +91 -2
  370. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
  371. data/spec/unit/cookbook/metadata_spec.rb +43 -6
  372. data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
  373. data/spec/unit/cookbook_loader_spec.rb +4 -2
  374. data/spec/unit/cookbook_version_spec.rb +83 -2
  375. data/spec/unit/data_bag_item_spec.rb +5 -1
  376. data/spec/unit/data_bag_spec.rb +6 -1
  377. data/spec/unit/dsl/data_query_spec.rb +8 -110
  378. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
  379. data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
  380. data/spec/unit/environment_spec.rb +6 -2
  381. data/spec/unit/exceptions_spec.rb +6 -0
  382. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
  383. data/spec/unit/json_compat_spec.rb +12 -2
  384. data/spec/unit/knife/bootstrap_spec.rb +16 -63
  385. data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
  386. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
  387. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  388. data/spec/unit/knife/core/ui_spec.rb +28 -0
  389. data/spec/unit/knife/data_bag_create_spec.rb +63 -71
  390. data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
  391. data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
  392. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
  393. data/spec/unit/knife/data_bag_show_spec.rb +74 -72
  394. data/spec/unit/knife/environment_from_file_spec.rb +3 -2
  395. data/spec/unit/knife/ssl_check_spec.rb +46 -1
  396. data/spec/unit/knife/status_spec.rb +1 -2
  397. data/spec/unit/knife_spec.rb +18 -1
  398. data/spec/unit/lwrp_spec.rb +29 -8
  399. data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
  400. data/spec/unit/node_map_spec.rb +155 -0
  401. data/spec/unit/node_spec.rb +11 -0
  402. data/spec/unit/platform/query_helpers_spec.rb +23 -0
  403. data/spec/unit/platform_spec.rb +23 -0
  404. data/spec/unit/provider/breakpoint_spec.rb +9 -9
  405. data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
  406. data/spec/unit/provider/cookbook_file_spec.rb +1 -1
  407. data/spec/unit/provider/cron/unix_spec.rb +78 -60
  408. data/spec/unit/provider/cron_spec.rb +175 -175
  409. data/spec/unit/provider/deploy/revision_spec.rb +22 -21
  410. data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
  411. data/spec/unit/provider/deploy_spec.rb +231 -230
  412. data/spec/unit/provider/directory_spec.rb +55 -55
  413. data/spec/unit/provider/dsc_script_spec.rb +174 -0
  414. data/spec/unit/provider/env/windows_spec.rb +70 -34
  415. data/spec/unit/provider/env_spec.rb +95 -49
  416. data/spec/unit/provider/erl_call_spec.rb +9 -9
  417. data/spec/unit/provider/execute_spec.rb +43 -27
  418. data/spec/unit/provider/file/content_spec.rb +9 -9
  419. data/spec/unit/provider/file_spec.rb +1 -1
  420. data/spec/unit/provider/git_spec.rb +221 -159
  421. data/spec/unit/provider/group/dscl_spec.rb +64 -63
  422. data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
  423. data/spec/unit/provider/group/groupadd_spec.rb +33 -33
  424. data/spec/unit/provider/group/groupmod_spec.rb +23 -23
  425. data/spec/unit/provider/group/pw_spec.rb +21 -21
  426. data/spec/unit/provider/group/usermod_spec.rb +20 -20
  427. data/spec/unit/provider/group/windows_spec.rb +15 -15
  428. data/spec/unit/provider/group_spec.rb +76 -76
  429. data/spec/unit/provider/http_request_spec.rb +30 -30
  430. data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
  431. data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
  432. data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
  433. data/spec/unit/provider/ifconfig_spec.rb +43 -43
  434. data/spec/unit/provider/link_spec.rb +60 -60
  435. data/spec/unit/provider/log_spec.rb +0 -4
  436. data/spec/unit/provider/mdadm_spec.rb +23 -23
  437. data/spec/unit/provider/mount/aix_spec.rb +17 -17
  438. data/spec/unit/provider/mount/mount_spec.rb +115 -119
  439. data/spec/unit/provider/mount/solaris_spec.rb +72 -72
  440. data/spec/unit/provider/mount/windows_spec.rb +24 -24
  441. data/spec/unit/provider/ohai_spec.rb +11 -11
  442. data/spec/unit/provider/package/aix_spec.rb +34 -34
  443. data/spec/unit/provider/package/apt_spec.rb +36 -36
  444. data/spec/unit/provider/package/dpkg_spec.rb +27 -27
  445. data/spec/unit/provider/package/easy_install_spec.rb +16 -16
  446. data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
  447. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
  448. data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
  449. data/spec/unit/provider/package/homebrew_spec.rb +266 -0
  450. data/spec/unit/provider/package/ips_spec.rb +34 -34
  451. data/spec/unit/provider/package/macports_spec.rb +49 -49
  452. data/spec/unit/provider/package/pacman_spec.rb +35 -39
  453. data/spec/unit/provider/package/paludis_spec.rb +20 -20
  454. data/spec/unit/provider/package/portage_spec.rb +38 -38
  455. data/spec/unit/provider/package/rpm_spec.rb +29 -29
  456. data/spec/unit/provider/package/rubygems_spec.rb +284 -270
  457. data/spec/unit/provider/package/smartos_spec.rb +15 -15
  458. data/spec/unit/provider/package/solaris_spec.rb +35 -35
  459. data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
  460. data/spec/unit/provider/package/windows_spec.rb +6 -6
  461. data/spec/unit/provider/package/yum_spec.rb +416 -416
  462. data/spec/unit/provider/package/zypper_spec.rb +47 -47
  463. data/spec/unit/provider/package_spec.rb +107 -107
  464. data/spec/unit/provider/powershell_spec.rb +1 -1
  465. data/spec/unit/provider/registry_key_spec.rb +61 -61
  466. data/spec/unit/provider/remote_directory_spec.rb +36 -36
  467. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
  468. data/spec/unit/provider/remote_file/content_spec.rb +45 -45
  469. data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
  470. data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
  471. data/spec/unit/provider/remote_file/http_spec.rb +44 -44
  472. data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
  473. data/spec/unit/provider/remote_file_spec.rb +3 -3
  474. data/spec/unit/provider/route_spec.rb +63 -63
  475. data/spec/unit/provider/ruby_block_spec.rb +4 -4
  476. data/spec/unit/provider/script_spec.rb +12 -12
  477. data/spec/unit/provider/service/aix_service_spec.rb +181 -0
  478. data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
  479. data/spec/unit/provider/service/arch_service_spec.rb +48 -48
  480. data/spec/unit/provider/service/debian_service_spec.rb +40 -40
  481. data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
  482. data/spec/unit/provider/service/init_service_spec.rb +39 -39
  483. data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
  484. data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
  485. data/spec/unit/provider/service/macosx_spec.rb +49 -49
  486. data/spec/unit/provider/service/redhat_spec.rb +27 -27
  487. data/spec/unit/provider/service/simple_service_spec.rb +28 -28
  488. data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
  489. data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
  490. data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
  491. data/spec/unit/provider/service/windows_spec.rb +92 -92
  492. data/spec/unit/provider/service_spec.rb +40 -40
  493. data/spec/unit/provider/subversion_spec.rb +80 -80
  494. data/spec/unit/provider/template/content_spec.rb +9 -9
  495. data/spec/unit/provider/template_spec.rb +6 -6
  496. data/spec/unit/provider/user/dscl_spec.rb +170 -167
  497. data/spec/unit/provider/user/pw_spec.rb +48 -48
  498. data/spec/unit/provider/user/solaris_spec.rb +8 -8
  499. data/spec/unit/provider/user/useradd_spec.rb +1 -1
  500. data/spec/unit/provider/user/windows_spec.rb +26 -26
  501. data/spec/unit/provider/user_spec.rb +72 -72
  502. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
  503. data/spec/unit/provider_resolver_spec.rb +387 -0
  504. data/spec/unit/recipe_spec.rb +33 -12
  505. data/spec/unit/resource/apt_package_spec.rb +10 -13
  506. data/spec/unit/resource/bash_spec.rb +4 -4
  507. data/spec/unit/resource/batch_spec.rb +1 -1
  508. data/spec/unit/resource/breakpoint_spec.rb +11 -7
  509. data/spec/unit/resource/chef_gem_spec.rb +8 -15
  510. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  511. data/spec/unit/resource/conditional_spec.rb +35 -16
  512. data/spec/unit/resource/cookbook_file_spec.rb +13 -13
  513. data/spec/unit/resource/cron_spec.rb +37 -37
  514. data/spec/unit/resource/csh_spec.rb +4 -4
  515. data/spec/unit/resource/deploy_revision_spec.rb +13 -18
  516. data/spec/unit/resource/deploy_spec.rb +60 -55
  517. data/spec/unit/resource/directory_spec.rb +18 -18
  518. data/spec/unit/resource/dpkg_package_spec.rb +8 -14
  519. data/spec/unit/resource/dsc_script_spec.rb +98 -0
  520. data/spec/unit/resource/easy_install_package_spec.rb +9 -18
  521. data/spec/unit/resource/env_spec.rb +12 -12
  522. data/spec/unit/resource/erl_call_spec.rb +11 -11
  523. data/spec/unit/resource/execute_spec.rb +5 -0
  524. data/spec/unit/resource/file_spec.rb +29 -29
  525. data/spec/unit/resource/freebsd_package_spec.rb +11 -12
  526. data/spec/unit/resource/gem_package_spec.rb +8 -15
  527. data/spec/unit/resource/git_spec.rb +12 -8
  528. data/spec/unit/resource/group_spec.rb +27 -27
  529. data/spec/unit/resource/homebrew_package_spec.rb +50 -0
  530. data/spec/unit/resource/http_request_spec.rb +6 -6
  531. data/spec/unit/resource/ifconfig_spec.rb +8 -8
  532. data/spec/unit/resource/ips_package_spec.rb +10 -13
  533. data/spec/unit/resource/link_spec.rb +25 -25
  534. data/spec/unit/resource/log_spec.rb +9 -9
  535. data/spec/unit/resource/macports_package_spec.rb +8 -13
  536. data/spec/unit/resource/mdadm_spec.rb +18 -18
  537. data/spec/unit/resource/mount_spec.rb +45 -45
  538. data/spec/unit/resource/ohai_spec.rb +7 -7
  539. data/spec/unit/resource/package_spec.rb +12 -12
  540. data/spec/unit/resource/pacman_package_spec.rb +8 -14
  541. data/spec/unit/resource/perl_spec.rb +4 -4
  542. data/spec/unit/resource/portage_package_spec.rb +3 -3
  543. data/spec/unit/resource/powershell_spec.rb +7 -7
  544. data/spec/unit/resource/python_spec.rb +4 -4
  545. data/spec/unit/resource/registry_key_spec.rb +32 -32
  546. data/spec/unit/resource/remote_directory_spec.rb +17 -17
  547. data/spec/unit/resource/remote_file_spec.rb +41 -41
  548. data/spec/unit/resource/route_spec.rb +19 -19
  549. data/spec/unit/resource/rpm_package_spec.rb +9 -13
  550. data/spec/unit/resource/ruby_block_spec.rb +8 -8
  551. data/spec/unit/resource/ruby_spec.rb +4 -4
  552. data/spec/unit/resource/scm_spec.rb +40 -40
  553. data/spec/unit/resource/script_spec.rb +2 -2
  554. data/spec/unit/resource/service_spec.rb +37 -47
  555. data/spec/unit/resource/smartos_package_spec.rb +10 -15
  556. data/spec/unit/resource/solaris_package_spec.rb +13 -28
  557. data/spec/unit/resource/subversion_spec.rb +16 -12
  558. data/spec/unit/resource/template_spec.rb +35 -35
  559. data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
  560. data/spec/unit/resource/user_spec.rb +23 -23
  561. data/spec/unit/resource/windows_package_spec.rb +17 -10
  562. data/spec/unit/resource/windows_service_spec.rb +9 -6
  563. data/spec/unit/resource/yum_package_spec.rb +16 -21
  564. data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
  565. data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
  566. data/spec/unit/resource_collection_spec.rb +73 -92
  567. data/spec/unit/resource_definition_spec.rb +38 -40
  568. data/spec/unit/resource_reporter_spec.rb +3 -3
  569. data/spec/unit/resource_spec.rb +68 -33
  570. data/spec/unit/rest_spec.rb +83 -76
  571. data/spec/unit/role_spec.rb +5 -0
  572. data/spec/unit/run_list_spec.rb +5 -1
  573. data/spec/unit/runner_spec.rb +245 -238
  574. data/spec/unit/shell/shell_ext_spec.rb +1 -1
  575. data/spec/unit/user_spec.rb +5 -1
  576. data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
  577. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
  578. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
  579. data/spec/unit/util/path_helper_spec.rb +23 -1
  580. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
  581. data/spec/unit/workstation_config_loader_spec.rb +1 -1
  582. metadata +303 -196
  583. checksums.yaml +0 -7
  584. data/distro/README +0 -2
  585. data/distro/arch/etc/conf.d/chef-client.conf +0 -5
  586. data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
  587. data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
  588. data/distro/arch/etc/conf.d/chef-server.conf +0 -10
  589. data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
  590. data/distro/arch/etc/rc.d/chef-client +0 -90
  591. data/distro/arch/etc/rc.d/chef-expander +0 -78
  592. data/distro/arch/etc/rc.d/chef-server +0 -78
  593. data/distro/arch/etc/rc.d/chef-server-webui +0 -78
  594. data/distro/arch/etc/rc.d/chef-solr +0 -78
  595. data/distro/debian/etc/default/chef-client +0 -4
  596. data/distro/debian/etc/default/chef-expander +0 -8
  597. data/distro/debian/etc/default/chef-server +0 -9
  598. data/distro/debian/etc/default/chef-server-webui +0 -9
  599. data/distro/debian/etc/default/chef-solr +0 -8
  600. data/distro/debian/etc/init.d/chef-client +0 -212
  601. data/distro/debian/etc/init.d/chef-expander +0 -176
  602. data/distro/debian/etc/init.d/chef-server +0 -122
  603. data/distro/debian/etc/init.d/chef-server-webui +0 -123
  604. data/distro/debian/etc/init.d/chef-solr +0 -176
  605. data/distro/debian/etc/init/chef-client.conf +0 -17
  606. data/distro/debian/etc/init/chef-expander.conf +0 -17
  607. data/distro/debian/etc/init/chef-server-webui.conf +0 -17
  608. data/distro/debian/etc/init/chef-server.conf +0 -17
  609. data/distro/debian/etc/init/chef-solr.conf +0 -17
  610. data/distro/redhat/etc/init.d/chef-client +0 -121
  611. data/distro/redhat/etc/init.d/chef-expander +0 -104
  612. data/distro/redhat/etc/init.d/chef-server +0 -112
  613. data/distro/redhat/etc/init.d/chef-server-webui +0 -112
  614. data/distro/redhat/etc/init.d/chef-solr +0 -104
  615. data/distro/redhat/etc/logrotate.d/chef-client +0 -8
  616. data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
  617. data/distro/redhat/etc/logrotate.d/chef-server +0 -8
  618. data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
  619. data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
  620. data/distro/redhat/etc/sysconfig/chef-client +0 -15
  621. data/distro/redhat/etc/sysconfig/chef-expander +0 -7
  622. data/distro/redhat/etc/sysconfig/chef-server +0 -14
  623. data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
  624. data/distro/redhat/etc/sysconfig/chef-solr +0 -8
  625. data/distro/windows/service_manager.rb +0 -20
  626. data/lib/chef/resource_platform_map.rb +0 -151
  627. data/spec/support/shared/matchers.rb +0 -17
  628. data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -48,11 +48,11 @@ describe Chef::Provider::RemoteFile::HTTP do
48
48
  context "and there is no valid cache control data for this URI on disk" do
49
49
 
50
50
  before do
51
- Chef::Provider::RemoteFile::CacheControlData.should_receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
51
+ expect(Chef::Provider::RemoteFile::CacheControlData).to receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
52
52
  end
53
53
 
54
54
  it "does not add conditional GET headers" do
55
- fetcher.conditional_get_headers.should == {}
55
+ expect(fetcher.conditional_get_headers).to eq({})
56
56
  end
57
57
 
58
58
  context "and the resource specifies custom headers" do
@@ -61,7 +61,7 @@ describe Chef::Provider::RemoteFile::HTTP do
61
61
  end
62
62
 
63
63
  it "has the user-specified custom headers" do
64
- fetcher.headers.should == {"x-myapp-header" => "custom-header-value"}
64
+ expect(fetcher.headers).to eq({"x-myapp-header" => "custom-header-value"})
65
65
  end
66
66
  end
67
67
 
@@ -79,7 +79,7 @@ describe Chef::Provider::RemoteFile::HTTP do
79
79
  cache_control_data.etag = etag
80
80
  cache_control_data.mtime = mtime
81
81
 
82
- Chef::Provider::RemoteFile::CacheControlData.should_receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
82
+ expect(Chef::Provider::RemoteFile::CacheControlData).to receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
83
83
  end
84
84
 
85
85
  context "and no conditional get features are enabled" do
@@ -88,7 +88,7 @@ describe Chef::Provider::RemoteFile::HTTP do
88
88
  end
89
89
 
90
90
  it "does not add headers to the request" do
91
- fetcher.headers.should == {}
91
+ expect(fetcher.headers).to eq({})
92
92
  end
93
93
  end
94
94
 
@@ -99,8 +99,8 @@ describe Chef::Provider::RemoteFile::HTTP do
99
99
 
100
100
  it "adds If-None-Match and If-Modified-Since headers to the request" do
101
101
  headers = fetcher.headers
102
- headers["if-none-match"].should == etag
103
- headers["if-modified-since"].should == mtime
102
+ expect(headers["if-none-match"]).to eq(etag)
103
+ expect(headers["if-modified-since"]).to eq(mtime)
104
104
  end
105
105
 
106
106
  context "and custom headers are provided" do
@@ -111,13 +111,13 @@ describe Chef::Provider::RemoteFile::HTTP do
111
111
  end
112
112
 
113
113
  it "preserves non-conflicting headers" do
114
- fetcher.headers["x-myapp-header"].should == "app-specific-header"
114
+ expect(fetcher.headers["x-myapp-header"]).to eq("app-specific-header")
115
115
  end
116
116
 
117
117
  it "prefers user-supplied cache control headers" do
118
118
  headers = fetcher.headers
119
- headers["if-none-match"].should == "custom-etag"
120
- headers["if-modified-since"].should == "custom-last-modified"
119
+ expect(headers["if-none-match"]).to eq("custom-etag")
120
+ expect(headers["if-modified-since"]).to eq("custom-last-modified")
121
121
  end
122
122
  end
123
123
 
@@ -131,8 +131,8 @@ describe Chef::Provider::RemoteFile::HTTP do
131
131
 
132
132
  it "only adds If-None-Match headers to the request" do
133
133
  headers = fetcher.headers
134
- headers["if-none-match"].should == etag
135
- headers.should_not have_key("if-modified-since")
134
+ expect(headers["if-none-match"]).to eq(etag)
135
+ expect(headers).not_to have_key("if-modified-since")
136
136
  end
137
137
  end
138
138
 
@@ -144,8 +144,8 @@ describe Chef::Provider::RemoteFile::HTTP do
144
144
 
145
145
  it "only adds If-Modified-Since headers to the request" do
146
146
  headers = fetcher.headers
147
- headers["if-modified-since"].should == mtime
148
- headers.should_not have_key("if-none-match")
147
+ expect(headers["if-modified-since"]).to eq(mtime)
148
+ expect(headers).not_to have_key("if-none-match")
149
149
  end
150
150
  end
151
151
  end
@@ -165,17 +165,17 @@ describe Chef::Provider::RemoteFile::HTTP do
165
165
 
166
166
  let(:rest) do
167
167
  rest = double(Chef::HTTP::Simple)
168
- rest.stub(:streaming_request).and_return(tempfile)
169
- rest.stub(:last_response).and_return(last_response)
168
+ allow(rest).to receive(:streaming_request).and_return(tempfile)
169
+ allow(rest).to receive(:last_response).and_return(last_response)
170
170
  rest
171
171
  end
172
172
 
173
173
  before do
174
174
  new_resource.headers({})
175
175
  new_resource.use_last_modified(false)
176
- Chef::Provider::RemoteFile::CacheControlData.should_receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
176
+ expect(Chef::Provider::RemoteFile::CacheControlData).to receive(:load_and_validate).with(uri, current_resource_checksum).and_return(cache_control_data)
177
177
 
178
- Chef::HTTP::Simple.should_receive(:new).with(*expected_http_args).and_return(rest)
178
+ expect(Chef::HTTP::Simple).to receive(:new).with(*expected_http_args).and_return(rest)
179
179
  end
180
180
 
181
181
 
@@ -183,8 +183,8 @@ describe Chef::Provider::RemoteFile::HTTP do
183
183
 
184
184
  it "should return a nil tempfile for a 304 HTTPNotModifed" do
185
185
  # Streaming request returns nil for 304 errors
186
- rest.stub(:streaming_request).and_return(nil)
187
- fetcher.fetch.should be_nil
186
+ allow(rest).to receive(:streaming_request).and_return(nil)
187
+ expect(fetcher.fetch).to be_nil
188
188
  end
189
189
 
190
190
  end
@@ -194,25 +194,25 @@ describe Chef::Provider::RemoteFile::HTTP do
194
194
  let(:fetched_content_checksum) { "e2a8938cc31754f6c067b35aab1d0d4864272e9bf8504536ef3e79ebf8432305" }
195
195
 
196
196
  before do
197
- cache_control_data.should_receive(:save)
198
- Chef::Digester.should_receive(:checksum_for_file).with(tempfile_path).and_return(fetched_content_checksum)
197
+ expect(cache_control_data).to receive(:save)
198
+ expect(Chef::Digester).to receive(:checksum_for_file).with(tempfile_path).and_return(fetched_content_checksum)
199
199
  end
200
200
 
201
201
  it "should return a tempfile" do
202
202
  result = fetcher.fetch
203
- result.should == tempfile
204
- cache_control_data.etag.should be_nil
205
- cache_control_data.mtime.should be_nil
206
- cache_control_data.checksum.should == fetched_content_checksum
203
+ expect(result).to eq(tempfile)
204
+ expect(cache_control_data.etag).to be_nil
205
+ expect(cache_control_data.mtime).to be_nil
206
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
207
207
  end
208
208
 
209
209
  context "and the response does not contain an etag" do
210
210
  let(:last_response) { {"etag" => nil} }
211
211
  it "does not include an etag in the result" do
212
212
  fetcher.fetch
213
- cache_control_data.etag.should be_nil
214
- cache_control_data.mtime.should be_nil
215
- cache_control_data.checksum.should == fetched_content_checksum
213
+ expect(cache_control_data.etag).to be_nil
214
+ expect(cache_control_data.mtime).to be_nil
215
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
216
216
  end
217
217
  end
218
218
 
@@ -221,9 +221,9 @@ describe Chef::Provider::RemoteFile::HTTP do
221
221
 
222
222
  it "includes the etag value in the response" do
223
223
  fetcher.fetch
224
- cache_control_data.etag.should == "abc123"
225
- cache_control_data.mtime.should be_nil
226
- cache_control_data.checksum.should == fetched_content_checksum
224
+ expect(cache_control_data.etag).to eq("abc123")
225
+ expect(cache_control_data.mtime).to be_nil
226
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
227
227
  end
228
228
 
229
229
  end
@@ -234,9 +234,9 @@ describe Chef::Provider::RemoteFile::HTTP do
234
234
  # RFC 2616 suggests that servers that do not set a Date header do not
235
235
  # have a reliable clock, so no use in making them deal with dates.
236
236
  fetcher.fetch
237
- cache_control_data.etag.should be_nil
238
- cache_control_data.mtime.should be_nil
239
- cache_control_data.checksum.should == fetched_content_checksum
237
+ expect(cache_control_data.etag).to be_nil
238
+ expect(cache_control_data.mtime).to be_nil
239
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
240
240
  end
241
241
  end
242
242
 
@@ -248,8 +248,8 @@ describe Chef::Provider::RemoteFile::HTTP do
248
248
 
249
249
  it "sets the mtime to the Last-Modified time in the response" do
250
250
  fetcher.fetch
251
- cache_control_data.etag.should be_nil
252
- cache_control_data.mtime.should == last_response["last_modified"]
251
+ expect(cache_control_data.etag).to be_nil
252
+ expect(cache_control_data.mtime).to eq(last_response["last_modified"])
253
253
  end
254
254
  end
255
255
 
@@ -260,9 +260,9 @@ describe Chef::Provider::RemoteFile::HTTP do
260
260
 
261
261
  it "sets the mtime to the Date in the response" do
262
262
  fetcher.fetch
263
- cache_control_data.etag.should be_nil
264
- cache_control_data.mtime.should == last_response["date"]
265
- cache_control_data.checksum.should == fetched_content_checksum
263
+ expect(cache_control_data.etag).to be_nil
264
+ expect(cache_control_data.mtime).to eq(last_response["date"])
265
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
266
266
  end
267
267
 
268
268
  end
@@ -288,11 +288,11 @@ describe Chef::Provider::RemoteFile::HTTP do
288
288
  # This is intended to provide insurance that refactoring of the parent
289
289
  # context does not negate the value of this particular example.
290
290
  Chef::HTTP::Simple.new(*expected_http_args)
291
- Chef::HTTP::Simple.should_receive(:new).once.with(*expected_http_args).and_return(rest)
291
+ expect(Chef::HTTP::Simple).to receive(:new).once.with(*expected_http_args).and_return(rest)
292
292
  fetcher.fetch
293
- cache_control_data.etag.should be_nil
294
- cache_control_data.mtime.should be_nil
295
- cache_control_data.checksum.should == fetched_content_checksum
293
+ expect(cache_control_data.etag).to be_nil
294
+ expect(cache_control_data.mtime).to be_nil
295
+ expect(cache_control_data.checksum).to eq(fetched_content_checksum)
296
296
  end
297
297
  end
298
298
  end
@@ -30,21 +30,21 @@ describe Chef::Provider::RemoteFile::LocalFile do
30
30
  describe "when given local unix path" do
31
31
  let(:uri) { URI.parse("file:///nyan_cat.png") }
32
32
  it "returns a correct unix path" do
33
- fetcher.fix_windows_path(uri.path).should == "/nyan_cat.png"
33
+ expect(fetcher.fix_windows_path(uri.path)).to eq("/nyan_cat.png")
34
34
  end
35
35
  end
36
36
 
37
37
  describe "when given local windows path" do
38
38
  let(:uri) { URI.parse("file:///z:/windows/path/file.txt") }
39
39
  it "returns a valid windows local path" do
40
- fetcher.fix_windows_path(uri.path).should == "z:/windows/path/file.txt"
40
+ expect(fetcher.fix_windows_path(uri.path)).to eq("z:/windows/path/file.txt")
41
41
  end
42
42
  end
43
43
 
44
44
  describe "when given unc windows path" do
45
45
  let(:uri) { URI.parse("file:////server/share/windows/path/file.txt") }
46
46
  it "returns a valid windows unc path" do
47
- fetcher.fix_windows_path(uri.path).should == "//server/share/windows/path/file.txt"
47
+ expect(fetcher.fix_windows_path(uri.path)).to eq("//server/share/windows/path/file.txt")
48
48
  end
49
49
  end
50
50
  end
@@ -52,11 +52,11 @@ describe Chef::Provider::RemoteFile::LocalFile do
52
52
  context "when first created" do
53
53
 
54
54
  it "stores the uri it is passed" do
55
- fetcher.uri.should == uri
55
+ expect(fetcher.uri).to eq(uri)
56
56
  end
57
57
 
58
58
  it "stores the new_resource" do
59
- fetcher.new_resource.should == new_resource
59
+ expect(fetcher.new_resource).to eq(new_resource)
60
60
  end
61
61
 
62
62
  end
@@ -71,12 +71,12 @@ describe Chef::Provider::RemoteFile::LocalFile do
71
71
  end
72
72
 
73
73
  it "stages the local file to a temporary file" do
74
- Chef::FileContentManagement::Tempfile.should_receive(:new).with(new_resource).and_return(chef_tempfile)
75
- ::FileUtils.should_receive(:cp).with(uri.path, tempfile.path)
76
- tempfile.should_receive(:close)
74
+ expect(Chef::FileContentManagement::Tempfile).to receive(:new).with(new_resource).and_return(chef_tempfile)
75
+ expect(::FileUtils).to receive(:cp).with(uri.path, tempfile.path)
76
+ expect(tempfile).to receive(:close)
77
77
 
78
78
  result = fetcher.fetch
79
- result.should == tempfile
79
+ expect(result).to eq(tempfile)
80
80
  end
81
81
 
82
82
  end
@@ -47,13 +47,13 @@ describe Chef::Provider::RemoteFile do
47
47
 
48
48
  subject(:provider) do
49
49
  provider = described_class.new(resource, run_context)
50
- provider.stub(:content).and_return(content)
51
- provider.stub(:update_new_resource_checksum).and_return(nil) # Otherwise it doesn't behave like a File provider
50
+ allow(provider).to receive(:content).and_return(content)
51
+ allow(provider).to receive(:update_new_resource_checksum).and_return(nil) # Otherwise it doesn't behave like a File provider
52
52
  provider
53
53
  end
54
54
 
55
55
  before do
56
- Chef::FileCache.stub(:load).with("remote_file/#{resource.name}").and_raise(Chef::Exceptions::FileNotFound)
56
+ allow(Chef::FileCache).to receive(:load).with("remote_file/#{resource.name}").and_raise(Chef::Exceptions::FileNotFound)
57
57
  end
58
58
 
59
59
  it_behaves_like Chef::Provider::File
@@ -36,14 +36,14 @@ describe Chef::Provider::Route do
36
36
 
37
37
  describe Chef::Provider::Route, "hex2ip" do
38
38
  it "should return nil if ip address is invalid" do
39
- @provider.hex2ip('foo').should be_nil # does not even look like an ip
40
- @provider.hex2ip('ABCDEFGH').should be_nil # 8 chars, but invalid
39
+ expect(@provider.hex2ip('foo')).to be_nil # does not even look like an ip
40
+ expect(@provider.hex2ip('ABCDEFGH')).to be_nil # 8 chars, but invalid
41
41
  end
42
42
 
43
43
  it "should return quad-dotted notation for a valid IP" do
44
- @provider.hex2ip('01234567').should == '103.69.35.1'
45
- @provider.hex2ip('0064a8c0').should == '192.168.100.0'
46
- @provider.hex2ip('00FFFFFF').should == '255.255.255.0'
44
+ expect(@provider.hex2ip('01234567')).to eq('103.69.35.1')
45
+ expect(@provider.hex2ip('0064a8c0')).to eq('192.168.100.0')
46
+ expect(@provider.hex2ip('00FFFFFF')).to eq('255.255.255.0')
47
47
  end
48
48
  end
49
49
 
@@ -55,158 +55,158 @@ describe Chef::Provider::Route do
55
55
  routing_table = "Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT\n" +
56
56
  "eth0 0064A8C0 0984A8C0 0003 0 0 0 00FFFFFF 0 0 0\n"
57
57
  route_file = StringIO.new(routing_table)
58
- File.stub(:open).with("/proc/net/route", "r").and_return(route_file)
58
+ allow(File).to receive(:open).with("/proc/net/route", "r").and_return(route_file)
59
59
  end
60
60
 
61
61
  it "should set is_running to false when a route is not detected" do
62
62
  resource = Chef::Resource::Route.new('10.10.10.0/24')
63
- resource.stub(:gateway).and_return("10.0.0.1")
64
- resource.stub(:device).and_return("eth0")
63
+ allow(resource).to receive(:gateway).and_return("10.0.0.1")
64
+ allow(resource).to receive(:device).and_return("eth0")
65
65
  provider = Chef::Provider::Route.new(resource, @run_context)
66
66
 
67
67
  provider.load_current_resource
68
- provider.is_running.should be_false
68
+ expect(provider.is_running).to be_false
69
69
  end
70
70
 
71
71
  it "should detect existing routes and set is_running attribute correctly" do
72
72
  resource = Chef::Resource::Route.new('192.168.100.0/24')
73
- resource.stub(:gateway).and_return("192.168.132.9")
74
- resource.stub(:device).and_return("eth0")
73
+ allow(resource).to receive(:gateway).and_return("192.168.132.9")
74
+ allow(resource).to receive(:device).and_return("eth0")
75
75
  provider = Chef::Provider::Route.new(resource, @run_context)
76
76
 
77
77
  provider.load_current_resource
78
- provider.is_running.should be_true
78
+ expect(provider.is_running).to be_true
79
79
  end
80
80
 
81
81
  it "should use gateway value when matching routes" do
82
82
  resource = Chef::Resource::Route.new('192.168.100.0/24')
83
- resource.stub(:gateway).and_return("10.10.10.10")
84
- resource.stub(:device).and_return("eth0")
83
+ allow(resource).to receive(:gateway).and_return("10.10.10.10")
84
+ allow(resource).to receive(:device).and_return("eth0")
85
85
  provider = Chef::Provider::Route.new(resource, @run_context)
86
86
 
87
87
  provider.load_current_resource
88
- provider.is_running.should be_false
88
+ expect(provider.is_running).to be_false
89
89
  end
90
90
  end
91
91
  end
92
92
 
93
93
  describe Chef::Provider::Route, "action_add" do
94
94
  it "should add the route if it does not exist" do
95
- @provider.stub(:run_command).and_return(true)
96
- @current_resource.stub(:gateway).and_return(nil)
97
- @provider.should_receive(:generate_command).once.with(:add)
98
- @provider.should_receive(:generate_config)
95
+ allow(@provider).to receive(:run_command).and_return(true)
96
+ allow(@current_resource).to receive(:gateway).and_return(nil)
97
+ expect(@provider).to receive(:generate_command).once.with(:add)
98
+ expect(@provider).to receive(:generate_config)
99
99
  @provider.run_action(:add)
100
- @new_resource.should be_updated
100
+ expect(@new_resource).to be_updated
101
101
  end
102
102
 
103
103
  it "should not add the route if it exists" do
104
- @provider.stub(:run_command).and_return(true)
105
- @provider.stub(:is_running).and_return(true)
106
- @provider.should_not_receive(:generate_command).with(:add)
107
- @provider.should_receive(:generate_config)
104
+ allow(@provider).to receive(:run_command).and_return(true)
105
+ allow(@provider).to receive(:is_running).and_return(true)
106
+ expect(@provider).not_to receive(:generate_command).with(:add)
107
+ expect(@provider).to receive(:generate_config)
108
108
  @provider.run_action(:add)
109
- @new_resource.should_not be_updated
109
+ expect(@new_resource).not_to be_updated
110
110
  end
111
111
 
112
112
  it "should not delete config file for :add action (CHEF-3332)" do
113
113
  @node.automatic_attrs[:platform] = 'centos'
114
114
 
115
115
  route_file = StringIO.new
116
- File.should_receive(:new).and_return(route_file)
116
+ expect(File).to receive(:new).and_return(route_file)
117
117
  @resource_add = Chef::Resource::Route.new('192.168.1.0/24 via 192.168.0.1')
118
118
  @run_context.resource_collection << @resource_add
119
- @provider.stub(:run_command).and_return(true)
119
+ allow(@provider).to receive(:run_command).and_return(true)
120
120
 
121
121
  @resource_add.action(:add)
122
122
  @provider.run_action(:add)
123
- route_file.string.split("\n").should have(1).items
124
- route_file.string.should match(/^192\.168\.1\.0\/24 via 192\.168\.0\.1$/)
123
+ expect(route_file.string.split("\n").size).to eq(1)
124
+ expect(route_file.string).to match(/^192\.168\.1\.0\/24 via 192\.168\.0\.1$/)
125
125
  end
126
126
  end
127
127
 
128
128
  describe Chef::Provider::Route, "action_delete" do
129
129
  it "should delete the route if it exists" do
130
- @provider.stub(:run_command).and_return(true)
131
- @provider.should_receive(:generate_command).once.with(:delete)
132
- @provider.stub(:is_running).and_return(true)
130
+ allow(@provider).to receive(:run_command).and_return(true)
131
+ expect(@provider).to receive(:generate_command).once.with(:delete)
132
+ allow(@provider).to receive(:is_running).and_return(true)
133
133
  @provider.run_action(:delete)
134
- @new_resource.should be_updated
134
+ expect(@new_resource).to be_updated
135
135
  end
136
136
 
137
137
  it "should not delete the route if it does not exist" do
138
- @current_resource.stub(:gateway).and_return(nil)
139
- @provider.stub(:run_command).and_return(true)
140
- @provider.should_not_receive(:generate_command).with(:add)
138
+ allow(@current_resource).to receive(:gateway).and_return(nil)
139
+ allow(@provider).to receive(:run_command).and_return(true)
140
+ expect(@provider).not_to receive(:generate_command).with(:add)
141
141
  @provider.run_action(:delete)
142
- @new_resource.should_not be_updated
142
+ expect(@new_resource).not_to be_updated
143
143
  end
144
144
  end
145
145
 
146
146
  describe Chef::Provider::Route, "generate_command for action_add" do
147
147
  it "should include a netmask when a one is specified" do
148
- @new_resource.stub(:netmask).and_return('255.255.0.0')
149
- @provider.generate_command(:add).should match(/\/\d{1,2}\s/)
148
+ allow(@new_resource).to receive(:netmask).and_return('255.255.0.0')
149
+ expect(@provider.generate_command(:add)).to match(/\/\d{1,2}\s/)
150
150
  end
151
151
 
152
152
  it "should not include a netmask when a one is specified" do
153
- @new_resource.stub(:netmask).and_return(nil)
154
- @provider.generate_command(:add).should_not match(/\/\d{1,2}\s/)
153
+ allow(@new_resource).to receive(:netmask).and_return(nil)
154
+ expect(@provider.generate_command(:add)).not_to match(/\/\d{1,2}\s/)
155
155
  end
156
156
 
157
157
  it "should include ' via $gateway ' when a gateway is specified" do
158
- @provider.generate_command(:add).should match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
158
+ expect(@provider.generate_command(:add)).to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
159
159
  end
160
160
 
161
161
  it "should not include ' via $gateway ' when a gateway is not specified" do
162
- @new_resource.stub(:gateway).and_return(nil)
163
- @provider.generate_command(:add).should_not match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
162
+ allow(@new_resource).to receive(:gateway).and_return(nil)
163
+ expect(@provider.generate_command(:add)).not_to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
164
164
  end
165
165
  end
166
166
 
167
167
  describe Chef::Provider::Route, "generate_command for action_delete" do
168
168
  it "should include a netmask when a one is specified" do
169
- @new_resource.stub(:netmask).and_return('255.255.0.0')
170
- @provider.generate_command(:delete).should match(/\/\d{1,2}\s/)
169
+ allow(@new_resource).to receive(:netmask).and_return('255.255.0.0')
170
+ expect(@provider.generate_command(:delete)).to match(/\/\d{1,2}\s/)
171
171
  end
172
172
 
173
173
  it "should not include a netmask when a one is specified" do
174
- @new_resource.stub(:netmask).and_return(nil)
175
- @provider.generate_command(:delete).should_not match(/\/\d{1,2}\s/)
174
+ allow(@new_resource).to receive(:netmask).and_return(nil)
175
+ expect(@provider.generate_command(:delete)).not_to match(/\/\d{1,2}\s/)
176
176
  end
177
177
 
178
178
  it "should include ' via $gateway ' when a gateway is specified" do
179
- @provider.generate_command(:delete).should match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
179
+ expect(@provider.generate_command(:delete)).to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
180
180
  end
181
181
 
182
182
  it "should not include ' via $gateway ' when a gateway is not specified" do
183
- @new_resource.stub(:gateway).and_return(nil)
184
- @provider.generate_command(:delete).should_not match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
183
+ allow(@new_resource).to receive(:gateway).and_return(nil)
184
+ expect(@provider.generate_command(:delete)).not_to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\s/)
185
185
  end
186
186
  end
187
187
 
188
188
  describe Chef::Provider::Route, "config_file_contents for action_add" do
189
189
  it "should include a netmask when a one is specified" do
190
- @new_resource.stub(:netmask).and_return('255.255.0.0')
191
- @provider.config_file_contents(:add, { :target => @new_resource.target, :netmask => @new_resource.netmask}).should match(/\/\d{1,2}.*\n$/)
190
+ allow(@new_resource).to receive(:netmask).and_return('255.255.0.0')
191
+ expect(@provider.config_file_contents(:add, { :target => @new_resource.target, :netmask => @new_resource.netmask})).to match(/\/\d{1,2}.*\n$/)
192
192
  end
193
193
 
194
194
  it "should not include a netmask when a one is specified" do
195
- @provider.config_file_contents(:add, { :target => @new_resource.target}).should_not match(/\/\d{1,2}.*\n$/)
195
+ expect(@provider.config_file_contents(:add, { :target => @new_resource.target})).not_to match(/\/\d{1,2}.*\n$/)
196
196
  end
197
197
 
198
198
  it "should include ' via $gateway ' when a gateway is specified" do
199
- @provider.config_file_contents(:add, { :target => @new_resource.target, :gateway => @new_resource.gateway}).should match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\n/)
199
+ expect(@provider.config_file_contents(:add, { :target => @new_resource.target, :gateway => @new_resource.gateway})).to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\n/)
200
200
  end
201
201
 
202
202
  it "should not include ' via $gateway ' when a gateway is not specified" do
203
- @provider.generate_command(:add).should_not match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\n/)
203
+ expect(@provider.generate_command(:add)).not_to match(/\svia\s#{Regexp.escape(@new_resource.gateway.to_s)}\n/)
204
204
  end
205
205
  end
206
206
 
207
207
  describe Chef::Provider::Route, "config_file_contents for action_delete" do
208
208
  it "should return an empty string" do
209
- @provider.config_file_contents(:delete).should match(/^$/)
209
+ expect(@provider.config_file_contents(:delete)).to match(/^$/)
210
210
  end
211
211
  end
212
212
 
@@ -216,7 +216,7 @@ describe Chef::Provider::Route do
216
216
  @node.automatic_attrs[:platform] = platform
217
217
 
218
218
  route_file = StringIO.new
219
- File.should_receive(:new).with("/etc/sysconfig/network-scripts/route-eth0", "w").and_return(route_file)
219
+ expect(File).to receive(:new).with("/etc/sysconfig/network-scripts/route-eth0", "w").and_return(route_file)
220
220
  #Chef::Log.should_receive(:debug).with("route[10.0.0.10] writing route.eth0\n10.0.0.10 via 10.0.0.9\n")
221
221
  @run_context.resource_collection << @new_resource
222
222
  @provider.generate_config
@@ -227,17 +227,17 @@ describe Chef::Provider::Route do
227
227
  @node.automatic_attrs[:platform] = 'centos'
228
228
 
229
229
  route_file = StringIO.new
230
- File.should_receive(:new).and_return(route_file)
230
+ expect(File).to receive(:new).and_return(route_file)
231
231
  @run_context.resource_collection << Chef::Resource::Route.new('192.168.1.0/24 via 192.168.0.1')
232
232
  @run_context.resource_collection << Chef::Resource::Route.new('192.168.2.0/24 via 192.168.0.1')
233
233
  @run_context.resource_collection << Chef::Resource::Route.new('192.168.3.0/24 via 192.168.0.1')
234
234
 
235
235
  @provider.action = :add
236
236
  @provider.generate_config
237
- route_file.string.split("\n").should have(3).items
238
- route_file.string.should match(/^192\.168\.1\.0\/24 via 192\.168\.0\.1$/)
239
- route_file.string.should match(/^192\.168\.2\.0\/24 via 192\.168\.0\.1$/)
240
- route_file.string.should match(/^192\.168\.3\.0\/24 via 192\.168\.0\.1$/)
237
+ expect(route_file.string.split("\n").size).to eq(3)
238
+ expect(route_file.string).to match(/^192\.168\.1\.0\/24 via 192\.168\.0\.1$/)
239
+ expect(route_file.string).to match(/^192\.168\.2\.0\/24 via 192\.168\.0\.1$/)
240
+ expect(route_file.string).to match(/^192\.168\.3\.0\/24 via 192\.168\.0\.1$/)
241
241
  end
242
242
  end
243
243
  end