vagrant-fixed-ssh 1.0.7

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 (413) hide show
  1. data/.gitignore +46 -0
  2. data/.yardopts +1 -0
  3. data/CHANGELOG.md +723 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +22 -0
  6. data/README.md +121 -0
  7. data/Rakefile +18 -0
  8. data/bin/vagrant +60 -0
  9. data/config/default.rb +30 -0
  10. data/contrib/README.md +12 -0
  11. data/contrib/emacs/vagrant.el +8 -0
  12. data/contrib/vim/vagrantfile.vim +9 -0
  13. data/keys/README.md +17 -0
  14. data/keys/vagrant +27 -0
  15. data/keys/vagrant.pub +1 -0
  16. data/lib/vagrant.rb +197 -0
  17. data/lib/vagrant/action.rb +63 -0
  18. data/lib/vagrant/action/box/destroy.rb +25 -0
  19. data/lib/vagrant/action/box/download.rb +84 -0
  20. data/lib/vagrant/action/box/package.rb +19 -0
  21. data/lib/vagrant/action/box/unpackage.rb +61 -0
  22. data/lib/vagrant/action/box/verify.rb +23 -0
  23. data/lib/vagrant/action/builder.rb +128 -0
  24. data/lib/vagrant/action/builtin.rb +171 -0
  25. data/lib/vagrant/action/env/set.rb +21 -0
  26. data/lib/vagrant/action/environment.rb +12 -0
  27. data/lib/vagrant/action/general/check_virtualbox.rb +28 -0
  28. data/lib/vagrant/action/general/package.rb +101 -0
  29. data/lib/vagrant/action/general/validate.rb +18 -0
  30. data/lib/vagrant/action/runner.rb +53 -0
  31. data/lib/vagrant/action/vm/boot.rb +53 -0
  32. data/lib/vagrant/action/vm/check_accessible.rb +23 -0
  33. data/lib/vagrant/action/vm/check_box.rb +33 -0
  34. data/lib/vagrant/action/vm/check_guest_additions.rb +38 -0
  35. data/lib/vagrant/action/vm/check_port_collisions.rb +89 -0
  36. data/lib/vagrant/action/vm/clean_machine_folder.rb +43 -0
  37. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +18 -0
  38. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  39. data/lib/vagrant/action/vm/clear_shared_folders.rb +18 -0
  40. data/lib/vagrant/action/vm/customize.rb +36 -0
  41. data/lib/vagrant/action/vm/default_name.rb +22 -0
  42. data/lib/vagrant/action/vm/destroy.rb +19 -0
  43. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +20 -0
  44. data/lib/vagrant/action/vm/discard_state.rb +22 -0
  45. data/lib/vagrant/action/vm/export.rb +57 -0
  46. data/lib/vagrant/action/vm/forward_ports.rb +92 -0
  47. data/lib/vagrant/action/vm/halt.rb +32 -0
  48. data/lib/vagrant/action/vm/host_name.rb +21 -0
  49. data/lib/vagrant/action/vm/import.rb +48 -0
  50. data/lib/vagrant/action/vm/match_mac_address.rb +21 -0
  51. data/lib/vagrant/action/vm/network.rb +403 -0
  52. data/lib/vagrant/action/vm/nfs.rb +196 -0
  53. data/lib/vagrant/action/vm/package.rb +23 -0
  54. data/lib/vagrant/action/vm/package_vagrantfile.rb +36 -0
  55. data/lib/vagrant/action/vm/provision.rb +61 -0
  56. data/lib/vagrant/action/vm/provisioner_cleanup.rb +26 -0
  57. data/lib/vagrant/action/vm/prune_nfs_exports.rb +20 -0
  58. data/lib/vagrant/action/vm/resume.rb +20 -0
  59. data/lib/vagrant/action/vm/sane_defaults.rb +78 -0
  60. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  61. data/lib/vagrant/action/vm/share_folders.rb +114 -0
  62. data/lib/vagrant/action/vm/suspend.rb +20 -0
  63. data/lib/vagrant/action/warden.rb +92 -0
  64. data/lib/vagrant/box.rb +44 -0
  65. data/lib/vagrant/box_collection.rb +58 -0
  66. data/lib/vagrant/cli.rb +76 -0
  67. data/lib/vagrant/command.rb +24 -0
  68. data/lib/vagrant/command/base.rb +167 -0
  69. data/lib/vagrant/command/box.rb +58 -0
  70. data/lib/vagrant/command/box_add.rb +37 -0
  71. data/lib/vagrant/command/box_list.rb +28 -0
  72. data/lib/vagrant/command/box_remove.rb +27 -0
  73. data/lib/vagrant/command/box_repackage.rb +27 -0
  74. data/lib/vagrant/command/destroy.rb +64 -0
  75. data/lib/vagrant/command/gem.rb +39 -0
  76. data/lib/vagrant/command/halt.rb +39 -0
  77. data/lib/vagrant/command/init.rb +40 -0
  78. data/lib/vagrant/command/package.rb +75 -0
  79. data/lib/vagrant/command/provision.rb +40 -0
  80. data/lib/vagrant/command/reload.rb +39 -0
  81. data/lib/vagrant/command/resume.rb +33 -0
  82. data/lib/vagrant/command/ssh.rb +90 -0
  83. data/lib/vagrant/command/ssh_config.rb +51 -0
  84. data/lib/vagrant/command/start_mixins.rb +26 -0
  85. data/lib/vagrant/command/status.rb +36 -0
  86. data/lib/vagrant/command/suspend.rb +33 -0
  87. data/lib/vagrant/command/up.rb +40 -0
  88. data/lib/vagrant/communication.rb +7 -0
  89. data/lib/vagrant/communication/base.rb +56 -0
  90. data/lib/vagrant/communication/ssh.rb +230 -0
  91. data/lib/vagrant/config.rb +49 -0
  92. data/lib/vagrant/config/base.rb +82 -0
  93. data/lib/vagrant/config/container.rb +37 -0
  94. data/lib/vagrant/config/error_recorder.rb +19 -0
  95. data/lib/vagrant/config/loader.rb +127 -0
  96. data/lib/vagrant/config/nfs.rb +8 -0
  97. data/lib/vagrant/config/package.rb +7 -0
  98. data/lib/vagrant/config/ssh.rb +27 -0
  99. data/lib/vagrant/config/top.rb +72 -0
  100. data/lib/vagrant/config/vagrant.rb +14 -0
  101. data/lib/vagrant/config/vm.rb +168 -0
  102. data/lib/vagrant/config/vm/provisioner.rb +52 -0
  103. data/lib/vagrant/config/vm/sub_vm.rb +17 -0
  104. data/lib/vagrant/data_store.rb +92 -0
  105. data/lib/vagrant/downloaders.rb +7 -0
  106. data/lib/vagrant/downloaders/base.rb +25 -0
  107. data/lib/vagrant/downloaders/file.rb +22 -0
  108. data/lib/vagrant/downloaders/http.rb +97 -0
  109. data/lib/vagrant/driver.rb +8 -0
  110. data/lib/vagrant/driver/virtualbox.rb +134 -0
  111. data/lib/vagrant/driver/virtualbox_4_0.rb +459 -0
  112. data/lib/vagrant/driver/virtualbox_4_1.rb +459 -0
  113. data/lib/vagrant/driver/virtualbox_4_2.rb +606 -0
  114. data/lib/vagrant/driver/virtualbox_base.rb +326 -0
  115. data/lib/vagrant/environment.rb +522 -0
  116. data/lib/vagrant/errors.rb +445 -0
  117. data/lib/vagrant/guest.rb +18 -0
  118. data/lib/vagrant/guest/arch.rb +56 -0
  119. data/lib/vagrant/guest/base.rb +99 -0
  120. data/lib/vagrant/guest/debian.rb +64 -0
  121. data/lib/vagrant/guest/fedora.rb +66 -0
  122. data/lib/vagrant/guest/freebsd.rb +86 -0
  123. data/lib/vagrant/guest/gentoo.rb +46 -0
  124. data/lib/vagrant/guest/linux.rb +118 -0
  125. data/lib/vagrant/guest/linux/config.rb +19 -0
  126. data/lib/vagrant/guest/linux/error.rb +9 -0
  127. data/lib/vagrant/guest/openbsd.rb +20 -0
  128. data/lib/vagrant/guest/redhat.rb +67 -0
  129. data/lib/vagrant/guest/solaris.rb +118 -0
  130. data/lib/vagrant/guest/suse.rb +17 -0
  131. data/lib/vagrant/guest/ubuntu.rb +23 -0
  132. data/lib/vagrant/hosts.rb +37 -0
  133. data/lib/vagrant/hosts/arch.rb +55 -0
  134. data/lib/vagrant/hosts/base.rb +66 -0
  135. data/lib/vagrant/hosts/bsd.rb +97 -0
  136. data/lib/vagrant/hosts/fedora.rb +47 -0
  137. data/lib/vagrant/hosts/freebsd.rb +41 -0
  138. data/lib/vagrant/hosts/gentoo.rb +20 -0
  139. data/lib/vagrant/hosts/linux.rb +94 -0
  140. data/lib/vagrant/hosts/opensuse.rb +30 -0
  141. data/lib/vagrant/hosts/windows.rb +16 -0
  142. data/lib/vagrant/plugin.rb +81 -0
  143. data/lib/vagrant/provisioners.rb +12 -0
  144. data/lib/vagrant/provisioners/base.rb +44 -0
  145. data/lib/vagrant/provisioners/chef.rb +168 -0
  146. data/lib/vagrant/provisioners/chef_client.rb +132 -0
  147. data/lib/vagrant/provisioners/chef_solo.rb +234 -0
  148. data/lib/vagrant/provisioners/puppet.rb +176 -0
  149. data/lib/vagrant/provisioners/puppet_server.rb +78 -0
  150. data/lib/vagrant/provisioners/shell.rb +103 -0
  151. data/lib/vagrant/registry.rb +52 -0
  152. data/lib/vagrant/ssh.rb +126 -0
  153. data/lib/vagrant/test_helpers.rb +154 -0
  154. data/lib/vagrant/ui.rb +168 -0
  155. data/lib/vagrant/util.rb +12 -0
  156. data/lib/vagrant/util/ansi_escape_code_remover.rb +34 -0
  157. data/lib/vagrant/util/busy.rb +59 -0
  158. data/lib/vagrant/util/counter.rb +24 -0
  159. data/lib/vagrant/util/file_checksum.rb +38 -0
  160. data/lib/vagrant/util/file_mode.rb +12 -0
  161. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  162. data/lib/vagrant/util/is_port_open.rb +38 -0
  163. data/lib/vagrant/util/line_ending_helpers.rb +14 -0
  164. data/lib/vagrant/util/network_ip.rb +28 -0
  165. data/lib/vagrant/util/platform.rb +68 -0
  166. data/lib/vagrant/util/retryable.rb +25 -0
  167. data/lib/vagrant/util/safe_exec.rb +36 -0
  168. data/lib/vagrant/util/safe_puts.rb +31 -0
  169. data/lib/vagrant/util/stacked_proc_runner.rb +35 -0
  170. data/lib/vagrant/util/subprocess.rb +247 -0
  171. data/lib/vagrant/util/template_renderer.rb +83 -0
  172. data/lib/vagrant/version.rb +6 -0
  173. data/lib/vagrant/vm.rb +195 -0
  174. data/tasks/acceptance.rake +113 -0
  175. data/tasks/bundler.rake +3 -0
  176. data/tasks/test.rake +20 -0
  177. data/templates/commands/init/Vagrantfile.erb +99 -0
  178. data/templates/commands/ssh_config/config.erb +15 -0
  179. data/templates/config/validation_failed.erb +7 -0
  180. data/templates/guests/arch/network_dhcp.erb +7 -0
  181. data/templates/guests/arch/network_static.erb +7 -0
  182. data/templates/guests/debian/network_dhcp.erb +6 -0
  183. data/templates/guests/debian/network_static.erb +7 -0
  184. data/templates/guests/fedora/network_dhcp.erb +6 -0
  185. data/templates/guests/fedora/network_static.erb +13 -0
  186. data/templates/guests/freebsd/network_dhcp.erb +3 -0
  187. data/templates/guests/freebsd/network_static.erb +3 -0
  188. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  189. data/templates/guests/gentoo/network_static.erb +4 -0
  190. data/templates/guests/redhat/network_dhcp.erb +6 -0
  191. data/templates/guests/redhat/network_static.erb +7 -0
  192. data/templates/locales/en.yml +759 -0
  193. data/templates/nfs/exports.erb +5 -0
  194. data/templates/nfs/exports_freebsd.erb +5 -0
  195. data/templates/nfs/exports_linux.erb +5 -0
  196. data/templates/package_Vagrantfile.erb +11 -0
  197. data/templates/provisioners/chef_client/client.erb +32 -0
  198. data/templates/provisioners/chef_solo/solo.erb +25 -0
  199. data/test/acceptance/base.rb +48 -0
  200. data/test/acceptance/box_test.rb +99 -0
  201. data/test/acceptance/destroy_test.rb +37 -0
  202. data/test/acceptance/halt_test.rb +72 -0
  203. data/test/acceptance/init_test.rb +33 -0
  204. data/test/acceptance/networking/host_only_test.rb +37 -0
  205. data/test/acceptance/networking/port_forward_test.rb +125 -0
  206. data/test/acceptance/package_test.rb +46 -0
  207. data/test/acceptance/provisioning/basic_test.rb +61 -0
  208. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  209. data/test/acceptance/provisioning/shell_test.rb +53 -0
  210. data/test/acceptance/resume_test.rb +17 -0
  211. data/test/acceptance/shared_folders_test.rb +84 -0
  212. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  213. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  214. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  215. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  216. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  217. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  218. data/test/acceptance/ssh_test.rb +46 -0
  219. data/test/acceptance/support/config.rb +42 -0
  220. data/test/acceptance/support/isolated_environment.rb +117 -0
  221. data/test/acceptance/support/matchers/have_color.rb +9 -0
  222. data/test/acceptance/support/matchers/match_output.rb +14 -0
  223. data/test/acceptance/support/matchers/succeed.rb +14 -0
  224. data/test/acceptance/support/network_tests.rb +29 -0
  225. data/test/acceptance/support/output.rb +95 -0
  226. data/test/acceptance/support/shared/base_context.rb +72 -0
  227. data/test/acceptance/support/shared/command_examples.rb +33 -0
  228. data/test/acceptance/support/virtualbox.rb +36 -0
  229. data/test/acceptance/suspend_test.rb +56 -0
  230. data/test/acceptance/up_basic_test.rb +33 -0
  231. data/test/acceptance/up_with_box_url.rb +40 -0
  232. data/test/acceptance/vagrant_test.rb +47 -0
  233. data/test/acceptance/version_test.rb +15 -0
  234. data/test/buildbot/README.md +72 -0
  235. data/test/buildbot/buildbot_config/__init__.py +0 -0
  236. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  237. data/test/buildbot/buildbot_config/config/loader.py +24 -0
  238. data/test/buildbot/buildbot_config/config/master.py +24 -0
  239. data/test/buildbot/buildbot_config/config/slave.py +22 -0
  240. data/test/buildbot/buildbot_config/master/__init__.py +6 -0
  241. data/test/buildbot/buildbot_config/master/builders.py +78 -0
  242. data/test/buildbot/buildbot_config/master/buildsteps.py +100 -0
  243. data/test/buildbot/buildbot_config/master/change_sources.py +8 -0
  244. data/test/buildbot/buildbot_config/master/schedulers.py +32 -0
  245. data/test/buildbot/buildbot_config/master/slaves.py +60 -0
  246. data/test/buildbot/buildbot_config/master/status.py +52 -0
  247. data/test/buildbot/master/Makefile.sample +28 -0
  248. data/test/buildbot/master/buildbot.tac +36 -0
  249. data/test/buildbot/master/master.cfg +67 -0
  250. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  251. data/test/buildbot/master/public_html/default.css +545 -0
  252. data/test/buildbot/master/public_html/favicon.ico +0 -0
  253. data/test/buildbot/master/public_html/robots.txt +10 -0
  254. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +356 -0
  255. data/test/buildbot/master/public_html/static/css/prettify.css +97 -0
  256. data/test/buildbot/master/public_html/static/css/syntax.css +60 -0
  257. data/test/buildbot/master/public_html/static/css/vagrant.base.css +205 -0
  258. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  259. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  260. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  261. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  262. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  263. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  264. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  265. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  266. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  267. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  268. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  269. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  270. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  271. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  272. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +80 -0
  273. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +4 -0
  274. data/test/buildbot/master/templates/authfail.html +9 -0
  275. data/test/buildbot/master/templates/build.html +205 -0
  276. data/test/buildbot/master/templates/builder.html +118 -0
  277. data/test/buildbot/master/templates/builders.html +33 -0
  278. data/test/buildbot/master/templates/buildslave.html +72 -0
  279. data/test/buildbot/master/templates/buildslaves.html +70 -0
  280. data/test/buildbot/master/templates/change.html +15 -0
  281. data/test/buildbot/master/templates/layouts/base.html +58 -0
  282. data/test/buildbot/master/templates/macros/box.html +37 -0
  283. data/test/buildbot/master/templates/macros/build_line.html +50 -0
  284. data/test/buildbot/master/templates/macros/change.html +81 -0
  285. data/test/buildbot/master/templates/macros/forms.html +300 -0
  286. data/test/buildbot/master/templates/root.html +42 -0
  287. data/test/buildbot/master/templates/waterfall.html +53 -0
  288. data/test/buildbot/requirements.txt +4 -0
  289. data/test/buildbot/scripts/deploy.sh +38 -0
  290. data/test/buildbot/scripts/setup.sh +107 -0
  291. data/test/buildbot/slave/buildbot.tac +43 -0
  292. data/test/buildbot/slave/info/admin +1 -0
  293. data/test/buildbot/slave/info/host +1 -0
  294. data/test/buildbot/tests/__init__.py +0 -0
  295. data/test/buildbot/tests/master/__init__.py +0 -0
  296. data/test/buildbot/tests/master/test_slaves.py +41 -0
  297. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  298. data/test/config/acceptance_boxes.yml +7 -0
  299. data/test/support/isolated_environment.rb +46 -0
  300. data/test/support/tempdir.rb +34 -0
  301. data/test/unit/base.rb +21 -0
  302. data/test/unit/support/isolated_environment.rb +47 -0
  303. data/test/unit/support/shared/base_context.rb +30 -0
  304. data/test/unit/vagrant/action/builder_test.rb +156 -0
  305. data/test/unit/vagrant/action/environment_test.rb +16 -0
  306. data/test/unit/vagrant/action/runner_test.rb +65 -0
  307. data/test/unit/vagrant/action/warden_test.rb +92 -0
  308. data/test/unit/vagrant/box_collection_test.rb +56 -0
  309. data/test/unit/vagrant/box_test.rb +34 -0
  310. data/test/unit/vagrant/command/base_test.rb +150 -0
  311. data/test/unit/vagrant/config/base_test.rb +48 -0
  312. data/test/unit/vagrant/config/loader_test.rb +79 -0
  313. data/test/unit/vagrant/config/ssh_test.rb +17 -0
  314. data/test/unit/vagrant/config/top_test.rb +69 -0
  315. data/test/unit/vagrant/config/vm_test.rb +71 -0
  316. data/test/unit/vagrant/config_test.rb +27 -0
  317. data/test/unit/vagrant/data_store_test.rb +79 -0
  318. data/test/unit/vagrant/downloaders/base_test.rb +18 -0
  319. data/test/unit/vagrant/downloaders/file_test.rb +75 -0
  320. data/test/unit/vagrant/downloaders/http_test.rb +19 -0
  321. data/test/unit/vagrant/environment_test.rb +220 -0
  322. data/test/unit/vagrant/hosts_test.rb +36 -0
  323. data/test/unit/vagrant/registry_test.rb +74 -0
  324. data/test/unit/vagrant/util/ansi_escape_code_remover_test.rb +16 -0
  325. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  326. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +38 -0
  327. data/test/unit/vagrant/util/is_port_open_test.rb +53 -0
  328. data/test/unit/vagrant/util/line_endings_helper_test.rb +16 -0
  329. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  330. data/test/unit/vagrant/util/retryable_test.rb +106 -0
  331. data/test/unit/vagrant_test.rb +27 -0
  332. data/test/unit_legacy/locales/en.yml +8 -0
  333. data/test/unit_legacy/test_helper.rb +32 -0
  334. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +18 -0
  335. data/test/unit_legacy/vagrant/action/box/download_test.rb +125 -0
  336. data/test/unit_legacy/vagrant/action/box/package_test.rb +25 -0
  337. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +84 -0
  338. data/test/unit_legacy/vagrant/action/box/verify_test.rb +30 -0
  339. data/test/unit_legacy/vagrant/action/env/set_test.rb +24 -0
  340. data/test/unit_legacy/vagrant/action/general/package_test.rb +268 -0
  341. data/test/unit_legacy/vagrant/action/general/validate_test.rb +31 -0
  342. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +66 -0
  343. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +61 -0
  344. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +61 -0
  345. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +9 -0
  346. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +84 -0
  347. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +52 -0
  348. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
  349. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +40 -0
  350. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +37 -0
  351. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +25 -0
  352. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +49 -0
  353. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +45 -0
  354. data/test/unit_legacy/vagrant/action/vm/export_test.rb +107 -0
  355. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +77 -0
  356. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +197 -0
  357. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +79 -0
  358. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +36 -0
  359. data/test/unit_legacy/vagrant/action/vm/import_test.rb +66 -0
  360. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +40 -0
  361. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +38 -0
  362. data/test/unit_legacy/vagrant/action/vm/network_test.rb +286 -0
  363. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +26 -0
  364. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +260 -0
  365. data/test/unit_legacy/vagrant/action/vm/package_test.rb +25 -0
  366. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
  367. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +65 -0
  368. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +56 -0
  369. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +35 -0
  370. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +144 -0
  371. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +35 -0
  372. data/test/unit_legacy/vagrant/action_test.rb +89 -0
  373. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  374. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  375. data/test/unit_legacy/vagrant/cli_test.rb +35 -0
  376. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  377. data/test/unit_legacy/vagrant/command/group_base_test.rb +15 -0
  378. data/test/unit_legacy/vagrant/command/helpers_test.rb +88 -0
  379. data/test/unit_legacy/vagrant/command/init_test.rb +10 -0
  380. data/test/unit_legacy/vagrant/command/package_test.rb +27 -0
  381. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  382. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +18 -0
  383. data/test/unit_legacy/vagrant/config/ssh_test.rb +12 -0
  384. data/test/unit_legacy/vagrant/config/vagrant_test.rb +35 -0
  385. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +92 -0
  386. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  387. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  388. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  389. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  390. data/test/unit_legacy/vagrant/errors_test.rb +42 -0
  391. data/test/unit_legacy/vagrant/hosts/base_test.rb +46 -0
  392. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +53 -0
  393. data/test/unit_legacy/vagrant/hosts/linux_test.rb +54 -0
  394. data/test/unit_legacy/vagrant/plugin_test.rb +9 -0
  395. data/test/unit_legacy/vagrant/provisioners/base_test.rb +63 -0
  396. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +190 -0
  397. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +115 -0
  398. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +209 -0
  399. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +68 -0
  400. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +182 -0
  401. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +79 -0
  402. data/test/unit_legacy/vagrant/ssh/session_test.rb +40 -0
  403. data/test/unit_legacy/vagrant/ssh_test.rb +304 -0
  404. data/test/unit_legacy/vagrant/systems/base_test.rb +18 -0
  405. data/test/unit_legacy/vagrant/systems/linux_test.rb +104 -0
  406. data/test/unit_legacy/vagrant/util/busy_test.rb +106 -0
  407. data/test/unit_legacy/vagrant/util/counter_test.rb +29 -0
  408. data/test/unit_legacy/vagrant/util/platform_test.rb +18 -0
  409. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +43 -0
  410. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +145 -0
  411. data/test/unit_legacy/vagrant/vm_test.rb +300 -0
  412. data/vagrant-fixed-ssh.gemspec +70 -0
  413. metadata +712 -0
@@ -0,0 +1,115 @@
1
+ require "test_helper"
2
+
3
+ class ChefSoloProvisionerTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Provisioners::ChefSolo
6
+
7
+ @action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
8
+
9
+ @config = @klass::Config.new
10
+ @action = @klass.new(@action_env, @config)
11
+ @env = @action.env
12
+ @vm = @action.vm
13
+ end
14
+
15
+ context "config validation" do
16
+ setup do
17
+ @errors = Vagrant::Config::ErrorRecorder.new
18
+ @config.run_list = ["foo"]
19
+ @config.cookbooks_path = "cookbooks"
20
+ end
21
+
22
+ should "be invalid if run list is empty" do
23
+ @config.run_list = []
24
+ @config.validate(@errors)
25
+ assert !@errors.errors.empty?
26
+ end
27
+
28
+ should "be invalid if cookbooks path is empty" do
29
+ @config.cookbooks_path = nil
30
+ @config.validate(@errors)
31
+ assert !@errors.errors.empty?
32
+ end
33
+ end
34
+
35
+ context "provisioning" do
36
+ should "run the proper sequence of methods in order" do
37
+ prov_seq = sequence("prov_seq")
38
+ @action.expects(:verify_binary).with("chef-solo").once.in_sequence(prov_seq)
39
+ @action.expects(:chown_provisioning_folder).once.in_sequence(prov_seq)
40
+ @action.expects(:setup_json).once.in_sequence(prov_seq)
41
+ @action.expects(:setup_solo_config).once.in_sequence(prov_seq)
42
+ @action.expects(:run_chef_solo).once.in_sequence(prov_seq)
43
+ @action.provision!
44
+ end
45
+ end
46
+
47
+ context "creating expanded folder sets" do
48
+ should "expand VM folders properly" do
49
+ assert_equal [[:vm, nil, "/foo"]], @action.expanded_folders([:vm, "/foo"])
50
+ end
51
+
52
+ should "expand host folders properly" do
53
+ path = "foo"
54
+ local_path = File.expand_path(path, @env.root_path)
55
+ remote_path = "#{@action.config.provisioning_path}/chef-solo-1"
56
+ assert_equal [[:host, local_path, remote_path]], @action.expanded_folders([:host, path])
57
+ end
58
+
59
+ should "share roles and cookbooks in different folders" do
60
+ local_roles_path = File.expand_path('roles',@env.root_path)
61
+ local_cookbooks_path = File.expand_path('cookbooks',@env.root_path)
62
+ remote_roles_path = @action.expanded_folders([:host,local_roles_path])[0][2]
63
+ remote_cookbooks_path = @action.expanded_folders([:host,local_cookbooks_path])[0][2]
64
+ assert_not_equal remote_roles_path, remote_cookbooks_path
65
+ end
66
+ end
67
+
68
+ context "guest paths" do
69
+ should "extract the parts properly" do
70
+ structure = [[1,2,3],[1,2,3]]
71
+ assert_equal [3,3], @action.guest_paths(structure)
72
+ end
73
+ end
74
+
75
+ context "generating and uploading chef solo configuration file" do
76
+ setup do
77
+ @vm.ssh.stubs(:upload!)
78
+
79
+ @config.recipe_url = "foo/bar/baz"
80
+ @action.prepare
81
+ end
82
+
83
+ should "call setup_config with proper variables" do
84
+ @action.expects(:setup_config).with("chef_solo_solo", "solo.rb", {
85
+ :node_name => @config.node_name,
86
+ :provisioning_path => @config.provisioning_path,
87
+ :cookbooks_path => @action.guest_paths(@action.cookbook_folders),
88
+ :recipe_url => @config.recipe_url,
89
+ :roles_path => @action.guest_paths(@action.role_folders).first,
90
+ :data_bags_path => @action.guest_paths(@action.data_bags_folders).first,
91
+ :encrypted_data_bag_secret => @config.encrypted_data_bag_secret
92
+ })
93
+
94
+ @action.setup_solo_config
95
+ end
96
+ end
97
+
98
+ context "running chef solo" do
99
+ setup do
100
+ @ssh = mock("ssh")
101
+ @vm.ssh.stubs(:execute).yields(@ssh)
102
+ end
103
+
104
+ should "run chef solo" do
105
+ @ssh.expects(:sudo!).with("chef-solo -c #{@config.provisioning_path}/solo.rb -j #{@config.provisioning_path}/dna.json").once
106
+ @action.run_chef_solo
107
+ end
108
+
109
+ should "check the exit status if that is given" do
110
+ @ssh.stubs(:sudo!).yields(nil, :exit_status, :foo)
111
+ @ssh.expects(:check_exit_status).with(:foo, anything).once
112
+ @action.run_chef_solo
113
+ end
114
+ end
115
+ end
@@ -0,0 +1,209 @@
1
+ require "test_helper"
2
+
3
+ class ChefProvisionerTest < Test::Unit::TestCase
4
+ setup do
5
+ @action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
6
+
7
+ @klass = Vagrant::Provisioners::Chef
8
+ @config = @klass::Config.new
9
+ @action = @klass.new(@action_env, @config)
10
+ @env = @action.env
11
+ @vm = @action.vm
12
+ end
13
+
14
+ context "preparing" do
15
+ should "error the environment" do
16
+ assert_raises(@klass::ChefError) {
17
+ @action.prepare
18
+ }
19
+ end
20
+ end
21
+
22
+ context "config" do
23
+ should "not include the 'json' key in the config dump" do
24
+ result = @config.to_json
25
+ assert result !~ /"json":/
26
+ end
27
+
28
+ should "not include the 'run_list' key in json if not accessed" do
29
+ result = @config.merged_json
30
+ assert !result.has_key?(:run_list)
31
+ end
32
+
33
+ should "include the 'run_list' key in json if it is set" do
34
+ @config.run_list << "foo"
35
+ result = @config.merged_json
36
+ assert result.has_key?(:run_list)
37
+ end
38
+
39
+ should "provide accessors to the run list" do
40
+ @config.run_list << "foo"
41
+ assert !@config.run_list.empty?
42
+ assert_equal ["foo"], @config.run_list
43
+ end
44
+
45
+ should "provide a writer for the run list" do
46
+ data = mock("data")
47
+
48
+ assert_nothing_raised {
49
+ @config.run_list = data
50
+ assert_equal data, @config.run_list
51
+ }
52
+ end
53
+
54
+ should "have an empty run list to begin with" do
55
+ assert @config.run_list.empty?
56
+ end
57
+
58
+ should "add a recipe to the run list" do
59
+ @config.add_recipe("foo")
60
+ assert_equal "recipe[foo]", @config.run_list[0]
61
+ end
62
+
63
+ should "not wrap the recipe in 'recipe[]' if it was in the name" do
64
+ @config.add_recipe("recipe[foo]")
65
+ assert_equal "recipe[foo]", @config.run_list[0]
66
+ end
67
+
68
+ should "add a role to the run list" do
69
+ @config.add_role("user")
70
+ assert_equal "role[user]", @config.run_list[0]
71
+ end
72
+
73
+ should "not wrap the role in 'role[]' if it was in the name" do
74
+ @config.add_role("role[user]")
75
+ assert_equal "role[user]", @config.run_list[0]
76
+ end
77
+ end
78
+
79
+ context "verifying binary" do
80
+ setup do
81
+ @ssh = mock("ssh")
82
+ @vm.ssh.stubs(:execute).yields(@ssh)
83
+ end
84
+
85
+ should "verify binary exists" do
86
+ binary = "foo"
87
+ @ssh.expects(:sudo!).with("which #{binary}", anything)
88
+ @action.verify_binary(binary)
89
+ end
90
+ end
91
+
92
+ context "chef binary path" do
93
+ should "return just the binary if no binary path is set" do
94
+ @config.binary_path = nil
95
+ assert_equal "foo", @action.chef_binary_path("foo")
96
+ end
97
+
98
+ should "return the joined binary path and binary if set" do
99
+ @config.binary_path = "/foo"
100
+ assert_equal File.join(@config.binary_path, "bar"), @action.chef_binary_path("bar")
101
+ end
102
+ end
103
+
104
+ context "permissions on provisioning folder" do
105
+ should "create and chown the folder to the ssh user" do
106
+ ssh_seq = sequence("ssh_seq")
107
+ ssh = mock("ssh")
108
+ ssh.expects(:sudo!).with("mkdir -p #{@config.provisioning_path}").once.in_sequence(ssh_seq)
109
+ ssh.expects(:sudo!).with("chown #{@env.config.ssh.username} #{@config.provisioning_path}").once.in_sequence(ssh_seq)
110
+ @vm.ssh.expects(:execute).yields(ssh)
111
+ @action.chown_provisioning_folder
112
+ end
113
+ end
114
+
115
+ context "generating and uploading chef configuration file" do
116
+ setup do
117
+ @vm.ssh.stubs(:upload!)
118
+
119
+ @template = "template"
120
+ @filename = "foo.rb"
121
+
122
+ Vagrant::Util::TemplateRenderer.stubs(:render).returns("foo")
123
+ end
124
+
125
+ should "render and upload file" do
126
+ template_data = mock("data")
127
+ string_io = mock("string_io")
128
+ Vagrant::Util::TemplateRenderer.expects(:render).with(@template, anything).returns(template_data)
129
+ StringIO.expects(:new).with(template_data).returns(string_io)
130
+ File.expects(:join).with(@config.provisioning_path, @filename).once.returns("bar")
131
+ @vm.ssh.expects(:upload!).with(string_io, "bar")
132
+
133
+ @action.setup_config(@template, @filename, {})
134
+ end
135
+
136
+ should "provide log level by default" do
137
+ Vagrant::Util::TemplateRenderer.expects(:render).returns("foo").with() do |template, vars|
138
+ assert vars.has_key?(:log_level)
139
+ assert_equal @config.log_level.to_sym, vars[:log_level]
140
+ true
141
+ end
142
+
143
+ @action.setup_config(@template, @filename, {})
144
+ end
145
+
146
+ should "allow custom template variables" do
147
+ custom = {
148
+ :foo => "bar",
149
+ :int => 7
150
+ }
151
+
152
+ Vagrant::Util::TemplateRenderer.expects(:render).returns("foo").with() do |template, vars|
153
+ custom.each do |key, value|
154
+ assert vars.has_key?(key)
155
+ assert_equal value, vars[key]
156
+ end
157
+
158
+ true
159
+ end
160
+
161
+ @action.setup_config(@template, @filename, custom)
162
+ end
163
+ end
164
+
165
+ context "generating and uploading json" do
166
+ def assert_json
167
+ @vm.ssh.expects(:upload!).with do |json, path|
168
+ data = JSON.parse(json.read)
169
+ yield data
170
+ true
171
+ end
172
+
173
+ @action.setup_json
174
+ end
175
+
176
+ should "merge in the extra json specified in the config" do
177
+ @config.json = { :foo => "BAR" }
178
+ assert_json do |data|
179
+ assert_equal "BAR", data["foo"]
180
+ end
181
+ end
182
+
183
+ should "add the directory as a special case to the JSON" do
184
+ assert_json do |data|
185
+ assert_equal @env.config.vm.shared_folders["v-root"][:guestpath], data["vagrant"]["directory"]
186
+ end
187
+ end
188
+
189
+ should "not add the directory if the 'v-root' shared folder doesn't exist" do
190
+ @env.config.vm.shared_folders.delete("v-root")
191
+ assert_json do |data|
192
+ assert !data["vagrant"].has_key?("directory")
193
+ end
194
+ end
195
+
196
+ should "add the config to the JSON" do
197
+ assert_json do |data|
198
+ assert_equal @env.config.ssh.username, data["vagrant"]["config"]["ssh"]["username"]
199
+ end
200
+ end
201
+
202
+ should "upload a StringIO to dna.json" do
203
+ StringIO.expects(:new).with(anything).returns("bar")
204
+ File.expects(:join).with(@config.provisioning_path, "dna.json").once.returns("baz")
205
+ @vm.ssh.expects(:upload!).with("bar", "baz").once
206
+ @action.setup_json
207
+ end
208
+ end
209
+ end
@@ -0,0 +1,68 @@
1
+ require "test_helper"
2
+
3
+ class PuppetServerProvisionerTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Provisioners::PuppetServer
6
+
7
+ @action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
8
+
9
+ @config = @klass::Config.new
10
+ @action = @klass.new(@action_env, @config)
11
+ @env = @action.env
12
+ @vm = @action.vm
13
+ end
14
+
15
+ context "provisioning" do
16
+ should "run the proper sequence of methods in order" do
17
+ prov_seq = sequence("prov_seq")
18
+ @action.expects(:verify_binary).with("puppetd").once.in_sequence(prov_seq)
19
+ @action.expects(:run_puppetd_client).once.in_sequence(prov_seq)
20
+ @action.provision!
21
+ end
22
+ end
23
+
24
+ context "verifying binary" do
25
+ setup do
26
+ @ssh = mock("ssh")
27
+ @shell = mock("shell")
28
+ @vm.ssh.stubs(:execute).yields(@ssh)
29
+ end
30
+
31
+ should "verify binary exists" do
32
+ binary = "foo"
33
+ @ssh.expects(:sudo!).with("which #{binary}", anything)
34
+ @action.verify_binary(binary)
35
+ end
36
+ end
37
+
38
+ context "running puppetd client" do
39
+ setup do
40
+ @cn = "puppet_node"
41
+ @ssh = mock("ssh")
42
+ @vm.ssh.stubs(:execute).yields(@ssh)
43
+ end
44
+
45
+ should "run the puppetd client" do
46
+ @ssh.expects(:sudo!).with("puppetd --server #{@config.puppet_server} --certname #{@cn}").once
47
+ @action.run_puppetd_client
48
+ end
49
+
50
+ should "run puppetd with given options when given as an array" do
51
+ @config.options = ["--modulepath", "modules", "--verbose"]
52
+ @ssh.expects(:sudo!).with("puppetd --modulepath modules --verbose --server #{@config.puppet_server} --certname #{@cn}").once
53
+ @action.run_puppetd_client
54
+ end
55
+
56
+ should "run puppetd with the options when given as a string" do
57
+ @config.options = "--modulepath modules --verbose"
58
+ @ssh.expects(:sudo!).with("puppetd --modulepath modules --verbose --server #{@config.puppet_server} --certname #{@cn}").once
59
+ @action.run_puppetd_client
60
+ end
61
+
62
+ should "check the exit status if that is given" do
63
+ @ssh.stubs(:sudo!).yields(nil, :exit_status, :foo)
64
+ @ssh.expects(:check_exit_status).with(:foo, anything).once
65
+ @action.run_puppetd_client
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,182 @@
1
+ require "test_helper"
2
+
3
+ class PuppetProvisionerTest < Test::Unit::TestCase
4
+ setup do
5
+ clean_paths
6
+
7
+ @klass = Vagrant::Provisioners::Puppet
8
+
9
+ @action_env = Vagrant::Action::Environment.new(vagrant_env.vms[:default].env)
10
+
11
+ @config = @klass::Config.new
12
+ @config.top = Vagrant::Config::Top.new(@action_env.env)
13
+ @config.top.vm.box = "foo"
14
+ @action = @klass.new(@action_env, @config)
15
+ @env = @action.env
16
+ @vm = @action.vm
17
+ end
18
+
19
+ context "config" do
20
+ setup do
21
+ @errors = Vagrant::Config::ErrorRecorder.new
22
+
23
+ # Set a box
24
+ @config.top.vm.box = "foo"
25
+
26
+ # Start in a valid state (verified by the first test)
27
+ @config.expanded_manifests_path.mkdir
28
+ File.open(@config.expanded_manifests_path.join(@config.computed_manifest_file), "w") { |f| f.puts "HELLO" }
29
+ end
30
+
31
+ should "expand the manifest path relative to the root path" do
32
+ assert_equal File.expand_path(@config.manifests_path, @env.root_path), @config.expanded_manifests_path.to_s
33
+ end
34
+
35
+ should "default the manifest file to the box name" do
36
+ assert_equal "#{@config.top.vm.box}.pp", @config.computed_manifest_file
37
+ end
38
+
39
+ should "use the custom manifest file if set" do
40
+ @config.manifest_file = "woot.pp"
41
+ assert_equal "woot.pp", @config.computed_manifest_file
42
+ end
43
+
44
+ should "return an empty array if no module path is set" do
45
+ @config.module_path = nil
46
+ assert_equal [], @config.expanded_module_paths
47
+ end
48
+
49
+ should "return array of module paths expanded relative to root path" do
50
+ @config.module_path = "foo"
51
+
52
+ result = @config.expanded_module_paths
53
+ assert result.is_a?(Array)
54
+ assert_equal 1, result.length
55
+ assert_equal File.expand_path(@config.module_path, @env.root_path), result[0].to_s
56
+ end
57
+
58
+ should "be valid" do
59
+ @config.validate(@errors)
60
+ assert @errors.errors.empty?
61
+ end
62
+
63
+ should "be invalid if the manifests path doesn't exist" do
64
+ @config.expanded_manifests_path.rmtree
65
+ @config.validate(@errors)
66
+ assert !@errors.errors.empty?
67
+ end
68
+
69
+ should "be invalid if a custom manifests path doesn't exist" do
70
+ @config.manifests_path = "dont_exist"
71
+ @config.validate(@errors)
72
+ assert !@errors.errors.empty?
73
+ end
74
+
75
+ should "be invalid if the manifest file doesn't exist" do
76
+ @config.expanded_manifests_path.join(@config.computed_manifest_file).unlink
77
+ @config.validate(@errors)
78
+ assert !@errors.errors.empty?
79
+ end
80
+
81
+ should "be invalid if a specified module path doesn't exist" do
82
+ @config.module_path = "foo"
83
+ @config.validate(@errors)
84
+ assert !@errors.errors.empty?
85
+ end
86
+
87
+ should "be valid if all module paths exist" do
88
+ @config.module_path = "foo"
89
+ @config.expanded_module_paths.first.mkdir
90
+ @config.validate(@errors)
91
+ assert @errors.errors.empty?
92
+ end
93
+ end
94
+
95
+ context "preparing" do
96
+ should "share manifests" do
97
+ pre_seq = sequence("prepare")
98
+ @action.expects(:set_module_paths).once.in_sequence(pre_seq)
99
+ @action.expects(:share_manifests).once.in_sequence(pre_seq)
100
+ @action.expects(:share_module_paths).once.in_sequence(pre_seq)
101
+ @action.prepare
102
+ end
103
+ end
104
+
105
+ context "provisioning" do
106
+ should "run the proper sequence of methods in order" do
107
+ prov_seq = sequence("prov_seq")
108
+ @action.expects(:verify_binary).with("puppet").once.in_sequence(prov_seq)
109
+ @action.expects(:run_puppet_client).once.in_sequence(prov_seq)
110
+ @action.provision!
111
+ end
112
+ end
113
+
114
+ context "share manifests folder" do
115
+ should "share manifest folder" do
116
+ @env.config.vm.expects(:share_folder).with("manifests", @action.manifests_guest_path, @config.expanded_manifests_path)
117
+ @action.share_manifests
118
+ end
119
+ end
120
+
121
+ context "sharing module paths" do
122
+ should "share all the module paths" do
123
+ @config.module_path = ["foo", "bar"]
124
+ @config.expanded_module_paths.each_with_index do |path, i|
125
+ @env.config.vm.expects(:share_folder).with("v-pp-m#{i}", File.join(@config.pp_path, "modules-#{i}"), path)
126
+ end
127
+
128
+ @action.set_module_paths
129
+ @action.share_module_paths
130
+ end
131
+ end
132
+
133
+ context "verifying binary" do
134
+ setup do
135
+ @ssh = mock("ssh")
136
+ @vm.ssh.stubs(:execute).yields(@ssh)
137
+ end
138
+
139
+ should "verify binary exists" do
140
+ binary = "foo"
141
+ @ssh.expects(:sudo!).with("which #{binary}", anything)
142
+ @action.verify_binary(binary)
143
+ end
144
+ end
145
+
146
+ context "running puppet client" do
147
+ setup do
148
+ @ssh = mock("ssh")
149
+ @vm.ssh.stubs(:execute).yields(@ssh)
150
+ @action.set_module_paths
151
+ end
152
+
153
+ def expect_puppet_command(command)
154
+ @ssh.expects(:sudo!).with(["cd #{@action.manifests_guest_path}", command])
155
+ end
156
+
157
+ should "cd into the pp_path directory and run puppet" do
158
+ expect_puppet_command("puppet apply #{@config.computed_manifest_file}")
159
+ @action.run_puppet_client
160
+ end
161
+
162
+ should "cd into the pp_path directory and run puppet with given options when given as an array" do
163
+ @config.options = ["--modulepath", "modules", "--verbose"]
164
+ expect_puppet_command("puppet apply --modulepath modules --verbose #{@config.computed_manifest_file}")
165
+ @action.run_puppet_client
166
+ end
167
+
168
+ should "cd into the pp_path directory and run puppet with the options when given as a string" do
169
+ @config.options = "--modulepath modules --verbose"
170
+ expect_puppet_command("puppet apply --modulepath modules --verbose #{@config.computed_manifest_file}")
171
+ @action.run_puppet_client
172
+ end
173
+
174
+ should "cd into the pp_path and run puppet with module paths if set" do
175
+ @config.module_path = "foo"
176
+ expect_puppet_command("puppet apply --modulepath '#{File.join(@config.pp_path, 'modules-0')}' #{@config.computed_manifest_file}")
177
+
178
+ @action.set_module_paths
179
+ @action.run_puppet_client
180
+ end
181
+ end
182
+ end