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,5 @@
1
+ # VAGRANT-BEGIN: <%= uuid %>
2
+ <% folders.each do |name, opts| %>
3
+ "<%= opts[:hostpath] %>" <%= ip %><% if opts[:map_uid] -%> -mapall=<%= [opts[:map_uid],opts[:map_gid]].compact.join(":") %><% end -%>
4
+ <% end %>
5
+ # VAGRANT-END: <%= uuid %>
@@ -0,0 +1,5 @@
1
+ # VAGRANT-BEGIN: <%= uuid %>
2
+ <% folders.each do |name, opts| %>
3
+ <%= opts[:hostpath] %> <%= ip %><% if opts[:map_uid] -%> -alldirs -mapall=<%= [opts[:map_uid],opts[:map_gid]].compact.join(":") %><% end -%>
4
+ <% end %>
5
+ # VAGRANT-END: <%= uuid %>
@@ -0,0 +1,5 @@
1
+ # VAGRANT-BEGIN: <%= uuid %>
2
+ <% folders.each do |name, opts| %>
3
+ "<%= opts[:hostpath] %>" <%= ip %>(rw,no_subtree_check,all_squash<% if opts[:map_uid] %>,anonuid=<%= opts[:map_uid] %><% end %><% if opts[:map_gid] %>,anongid=<%= opts[:map_gid] %><% end %>,fsid=<%= opts[:uuid] %>)
4
+ <% end %>
5
+ # VAGRANT-END: <%= uuid %>
@@ -0,0 +1,11 @@
1
+ Vagrant::Config.run do |config|
2
+ # This Vagrantfile is auto-generated by `vagrant package` to contain
3
+ # the MAC address of the box. Custom configuration should be placed in
4
+ # the actual `Vagrantfile` in this box.
5
+ config.vm.base_mac = "<%= base_mac %>"
6
+ end
7
+
8
+ # Load include vagrant file if it exists after the auto-generated
9
+ # so it can override any of the settings
10
+ include_vagrantfile = File.expand_path("../include/_Vagrantfile", __FILE__)
11
+ load include_vagrantfile if File.exist?(include_vagrantfile)
@@ -0,0 +1,32 @@
1
+ log_level <%= log_level.inspect %>
2
+ log_location STDOUT
3
+ <% if node_name %>
4
+ node_name "<%= node_name %>"
5
+ <% end %>
6
+ ssl_verify_mode :verify_none
7
+ chef_server_url "<%= chef_server_url %>"
8
+
9
+ validation_client_name "<%= validation_client_name %>"
10
+ validation_key "<%= validation_key %>"
11
+ client_key "<%= client_key %>"
12
+
13
+ encrypted_data_bag_secret "<%= encrypted_data_bag_secret %>"
14
+
15
+ <% unless environment.nil? %>
16
+ environment "<%= environment %>"
17
+ <% end %>
18
+
19
+ file_cache_path "<%= file_cache_path %>"
20
+ file_backup_path "<%= file_backup_path %>"
21
+
22
+ http_proxy <%= http_proxy.inspect %>
23
+ http_proxy_user <%= http_proxy_user.inspect %>
24
+ http_proxy_pass <%= http_proxy_pass.inspect %>
25
+ https_proxy <%= https_proxy.inspect %>
26
+ https_proxy_user <%= https_proxy_user.inspect %>
27
+ https_proxy_pass <%= https_proxy_pass.inspect %>
28
+ no_proxy <%= no_proxy.inspect %>
29
+
30
+ pid_file "/var/run/chef/chef-client.pid"
31
+
32
+ Mixlib::Log::Formatter.show_time = true
@@ -0,0 +1,25 @@
1
+ <% if node_name %>
2
+ node_name "<%= node_name %>"
3
+ <% end %>
4
+ file_cache_path "<%= provisioning_path %>"
5
+ cookbook_path <%= cookbooks_path.inspect %>
6
+ role_path <%= roles_path.inspect %>
7
+ log_level <%= log_level.inspect %>
8
+
9
+ encrypted_data_bag_secret "<%= encrypted_data_bag_secret %>"
10
+
11
+ <% if data_bags_path -%>
12
+ data_bag_path <%= data_bags_path.inspect %>
13
+ <% end %>
14
+
15
+ <% if recipe_url -%>
16
+ recipe_url "<%= recipe_url %>"
17
+ <% end -%>
18
+
19
+ http_proxy <%= http_proxy.inspect %>
20
+ http_proxy_user <%= http_proxy_user.inspect %>
21
+ http_proxy_pass <%= http_proxy_pass.inspect %>
22
+ https_proxy <%= https_proxy.inspect %>
23
+ https_proxy_user <%= https_proxy_user.inspect %>
24
+ https_proxy_pass <%= https_proxy_pass.inspect %>
25
+ no_proxy <%= no_proxy.inspect %>
@@ -0,0 +1,48 @@
1
+ require "rubygems"
2
+ require "rspec/autorun"
3
+
4
+ require "log4r"
5
+
6
+ # Add the test directory to the load path
7
+ $:.unshift File.expand_path("../../", __FILE__)
8
+
9
+ # Load in the supporting files for our tests
10
+ require "acceptance/support/shared/base_context"
11
+ require "acceptance/support/config"
12
+ require "acceptance/support/virtualbox"
13
+ require "acceptance/support/matchers/match_output"
14
+ require "acceptance/support/matchers/succeed"
15
+
16
+ # Do not buffer output
17
+ $stdout.sync = true
18
+ $stderr.sync = true
19
+
20
+ # If VirtualBox is currently running, fail.
21
+ if Acceptance::VirtualBox.find_vboxsvc
22
+ $stderr.puts "VirtualBox must be closed and remain closed for the duration of the tests."
23
+ abort
24
+ end
25
+
26
+ # Enable logging if requested
27
+ if ENV["ACCEPTANCE_LOG"]
28
+ logger = Log4r::Logger.new("test")
29
+ logger.outputters = Log4r::Outputter.stdout
30
+ logger.level = Log4r.const_get(ENV["ACCEPTANCE_LOG"].upcase)
31
+ logger = nil
32
+ end
33
+
34
+ # Parse the command line options and load the global configuration.
35
+ if !ENV.has_key?("ACCEPTANCE_CONFIG")
36
+ $stderr.puts "A configuration file must be passed into the acceptance test."
37
+ abort
38
+ elsif !File.file?(ENV["ACCEPTANCE_CONFIG"])
39
+ $stderr.puts "The configuration file must exist."
40
+ abort
41
+ end
42
+
43
+ $acceptance_options = Acceptance::Config.new(ENV["ACCEPTANCE_CONFIG"])
44
+
45
+ # Configure RSpec
46
+ RSpec.configure do |c|
47
+ c.expect_with :rspec, :stdlib
48
+ end
@@ -0,0 +1,99 @@
1
+ require File.expand_path("../base", __FILE__)
2
+
3
+ describe "vagrant box" do
4
+ include_context "acceptance"
5
+
6
+ it "has no boxes by default" do
7
+ result = execute("vagrant", "box", "list")
8
+ result.stdout.should match_output(:no_boxes)
9
+ end
10
+
11
+ it "can add a box from a file" do
12
+ require_box("default")
13
+
14
+ # Add the box, which we expect to succeed
15
+ result = execute("vagrant", "box", "add", "foo", box_path("default"))
16
+ result.should succeed
17
+
18
+ # Verify that the box now shows up in the list of available boxes
19
+ result = execute("vagrant", "box", "list")
20
+ result.stdout.should match_output(:box_installed, "foo")
21
+ end
22
+
23
+ it "errors if attempting to add a box with the same name" do
24
+ require_box("default")
25
+
26
+ # Add the box, which we expect to succeed
27
+ assert_execute("vagrant", "box", "add", "foo", box_path("default"))
28
+
29
+ # Adding it again should not succeed
30
+ result = execute("vagrant", "box", "add", "foo", box_path("default"))
31
+ result.should_not succeed
32
+ result.stderr.should match_output(:box_already_exists, "foo")
33
+ end
34
+
35
+ it "overwrites a box when adding with `--force`" do
36
+ require_box("default")
37
+
38
+ # Add the box, which we expect to succeed
39
+ assert_execute("vagrant", "box", "add", "foo", box_path("default"))
40
+
41
+ # Adding it again should not succeed
42
+ assert_execute("vagrant", "box", "add", "foo", box_path("default"), "--force")
43
+ end
44
+
45
+ it "gives an error if the file doesn't exist" do
46
+ result = execute("vagrant", "box", "add", "foo", "/tmp/nope/nope/nope/nonono.box")
47
+ result.should_not succeed
48
+ result.stderr.should match_output(:box_path_doesnt_exist)
49
+ end
50
+
51
+ it "gives an error if the file is not a valid box" do
52
+ invalid = environment.workdir.join("nope.txt")
53
+ invalid.open("w+") do |f|
54
+ f.write("INVALID!")
55
+ end
56
+
57
+ result = execute("vagrant", "box", "add", "foo", invalid.to_s)
58
+ result.should_not succeed
59
+ result.stderr.should match_output(:box_invalid)
60
+ end
61
+
62
+ it "can add a box from an HTTP server" do
63
+ pending("Need to setup HTTP server functionality")
64
+ end
65
+
66
+ it "can remove a box" do
67
+ require_box("default")
68
+
69
+ # Add the box, remove the box, then verify that the box no longer
70
+ # shows up in the list of available boxes.
71
+ execute("vagrant", "box", "add", "foo", box_path("default"))
72
+ execute("vagrant", "box", "remove", "foo")
73
+ result = execute("vagrant", "box", "list")
74
+ result.should succeed
75
+ result.stdout.should match_output(:no_boxes)
76
+ end
77
+
78
+ it "can repackage a box" do
79
+ require_box("default")
80
+
81
+ original_size = File.size(box_path("default"))
82
+ logger.debug("Original package size: #{original_size}")
83
+
84
+ # Add the box, repackage it, and verify that a package.box is
85
+ # dumped of relatively similar size.
86
+ execute("vagrant", "box", "add", "foo", box_path("default"))
87
+ execute("vagrant", "box", "repackage", "foo")
88
+
89
+ # By default, repackage should dump into package.box into the CWD
90
+ repackaged_file = environment.workdir.join("package.box")
91
+ repackaged_file.file?.should be, "package.box should exist in cwd of environment"
92
+
93
+ # Compare the sizes
94
+ repackaged_size = repackaged_file.size
95
+ logger.debug("Repackaged size: #{repackaged_size}")
96
+ size_diff = (repackaged_size - original_size).abs
97
+ size_diff.should be < 1000, "Sizes should be very similar"
98
+ end
99
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path("../base", __FILE__)
2
+ require "acceptance/support/shared/command_examples"
3
+
4
+ describe "vagrant destroy" do
5
+ include_context "acceptance"
6
+ it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "destroy"]
7
+
8
+ it "succeeds and ignores if the VM is not created" do
9
+ require_box("default")
10
+
11
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
12
+ assert_execute("vagrant", "init")
13
+
14
+ result = assert_execute("vagrant", "destroy")
15
+ result.stdout.should match_output(:vm_not_created_warning)
16
+ end
17
+
18
+ it "is able to destroy a running virtual machine" do
19
+ require_box("default")
20
+
21
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
22
+ assert_execute("vagrant", "init")
23
+ assert_execute("vagrant", "up")
24
+
25
+ # Destroy the VM and assert that it worked properly (seemingly)
26
+ result = assert_execute("vagrant", "destroy")
27
+ result.stdout.should match_output(:vm_destroyed)
28
+
29
+ # Assert that the VM no longer is created
30
+ result = assert_execute("vagrant", "status")
31
+ result.stdout.should match_output(:status, "default", "not created")
32
+ end
33
+
34
+ # TODO:
35
+ # it is able to destroy a halted virtual machine
36
+ # it is able to destroy a suspended virtual machine
37
+ end
@@ -0,0 +1,72 @@
1
+ require File.expand_path("../base", __FILE__)
2
+ require "acceptance/support/shared/command_examples"
3
+
4
+ describe "vagrant halt" do
5
+ include_context "acceptance"
6
+ it_behaves_like "a command that requires a Vagrantfile", ["vagrant", "halt"]
7
+
8
+ it "succeeds and ignores if the VM is not created" do
9
+ require_box("default")
10
+
11
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
12
+ assert_execute("vagrant", "init")
13
+
14
+ result = assert_execute("vagrant", "halt")
15
+ result.stdout.should match_output(:vm_not_created_warning)
16
+ end
17
+
18
+ it "is able to halt a running virtual machine" do
19
+ require_box("default")
20
+
21
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
22
+ assert_execute("vagrant", "init")
23
+ assert_execute("vagrant", "up")
24
+
25
+ # Halt the VM and assert that it worked properly (seemingly)
26
+ result = assert_execute("vagrant", "halt")
27
+ result.stdout.should match_output(:vm_halt_graceful)
28
+
29
+ # Assert that the VM is no longer running
30
+ result = assert_execute("vagrant", "status")
31
+ result.stdout.should match_output(:status, "default", "poweroff")
32
+ end
33
+
34
+ it "is able to force halt a running virtual machine" do
35
+ require_box("default")
36
+
37
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
38
+ assert_execute("vagrant", "init")
39
+ assert_execute("vagrant", "up")
40
+
41
+ # Halt the VM and assert that it worked properly (seemingly)
42
+ result = assert_execute("vagrant", "halt", "--force")
43
+ result.stdout.should match_output(:vm_halt_force)
44
+
45
+ # Assert that the VM is no longer running
46
+ result = assert_execute("vagrant", "status")
47
+ result.stdout.should match_output(:status, "default", "poweroff")
48
+ end
49
+
50
+ it "is able to come back up after the machine has been halted" do
51
+ require_box("default")
52
+
53
+ assert_execute("vagrant", "box", "add", "base", box_path("default"))
54
+ assert_execute("vagrant", "init")
55
+ assert_execute("vagrant", "up")
56
+ assert_execute("vagrant", "halt")
57
+
58
+ # Assert that the VM is no longer running
59
+ result = assert_execute("vagrant", "status")
60
+ result.stdout.should match_output(:status, "default", "poweroff")
61
+
62
+ assert_execute("vagrant", "up")
63
+
64
+ # Assert that the VM is once again running
65
+ result = assert_execute("vagrant", "status")
66
+ result.stdout.should match_output(:status, "default", "running")
67
+ end
68
+
69
+ # TODO:
70
+ # halt behavior on suspend machine
71
+ # halt behavior if machine is already powered off
72
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path("../base", __FILE__)
2
+
3
+ describe "vagrant init" do
4
+ include_context "acceptance"
5
+
6
+ it "creates a Vagrantfile in the working directory" do
7
+ vagrantfile = environment.workdir.join("Vagrantfile")
8
+ vagrantfile.exist?.should_not be, "Vagrantfile shouldn't exist initially"
9
+
10
+ result = execute("vagrant", "init")
11
+ result.should succeed
12
+ vagrantfile.exist?.should be, "Vagrantfile should exist"
13
+ end
14
+
15
+ it "creates a Vagrantfile with the box set to the given argument" do
16
+ vagrantfile = environment.workdir.join("Vagrantfile")
17
+
18
+ result = execute("vagrant", "init", "foo")
19
+ result.should succeed
20
+ vagrantfile.read.should match(/config.vm.box = "foo"$/)
21
+ end
22
+
23
+ it "creates a Vagrantfile with the box URL set to the given argument" do
24
+ vagrantfile = environment.workdir.join("Vagrantfile")
25
+
26
+ result = execute("vagrant", "init", "foo", "bar")
27
+ result.should succeed
28
+
29
+ contents = vagrantfile.read
30
+ contents.should match(/config.vm.box = "foo"$/)
31
+ contents.should match(/config.vm.box_url = "bar"$/)
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ require "net/http"
4
+ require "uri"
5
+
6
+ require "acceptance/support/network_tests"
7
+ require "acceptance/support/shared/command_examples"
8
+ require "support/tempdir"
9
+
10
+ describe "vagrant host only networking" do
11
+ include Acceptance::NetworkTests
12
+
13
+ include_context "acceptance"
14
+
15
+ def initialize_environment(env=nil)
16
+ require_box("default")
17
+
18
+ env ||= environment
19
+ env.execute("vagrant", "box", "add", "base", box_path("default")).should succeed
20
+ end
21
+
22
+ it "creates a network with a static IP" do
23
+ initialize_environment
24
+
25
+ environment.workdir.join("Vagrantfile").open("w+") do |f|
26
+ f.puts(<<VFILE)
27
+ Vagrant::Config.run do |config|
28
+ config.vm.box = "base"
29
+ config.vm.network :hostonly, "192.168.33.10"
30
+ end
31
+ VFILE
32
+ end
33
+
34
+ assert_execute("vagrant", "up")
35
+ assert_host_to_vm_network("http://192.168.33.10:8000/", 8000)
36
+ end
37
+ end
@@ -0,0 +1,125 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ require "net/http"
4
+ require "uri"
5
+
6
+ require "acceptance/support/network_tests"
7
+ require "acceptance/support/shared/command_examples"
8
+ require "support/tempdir"
9
+
10
+ describe "vagrant port forwarding" do
11
+ include Acceptance::NetworkTests
12
+
13
+ include_context "acceptance"
14
+
15
+ def initialize_environment(env=nil)
16
+ require_box("default")
17
+
18
+ env ||= environment
19
+ env.execute("vagrant", "box", "add", "base", box_path("default")).should succeed
20
+ end
21
+
22
+ it "forwards ports properly" do
23
+ initialize_environment
24
+
25
+ guest_port = 3000
26
+ host_port = 5000
27
+
28
+ environment.workdir.join("Vagrantfile").open("w+") do |f|
29
+ f.puts(<<VFILE)
30
+ Vagrant::Config.run do |config|
31
+ config.vm.box = "base"
32
+ config.vm.forward_port #{guest_port}, #{host_port}
33
+ end
34
+ VFILE
35
+ end
36
+
37
+ assert_execute("vagrant", "up")
38
+ assert_host_to_vm_network("http://localhost:#{host_port}/", guest_port)
39
+ end
40
+
41
+ it "properly overrides port forwarding from the same port" do
42
+ initialize_environment
43
+
44
+ guest_port = 3000
45
+ host_port = 5000
46
+
47
+ environment.workdir.join("Vagrantfile").open("w+") do |f|
48
+ f.puts(<<VFILE)
49
+ Vagrant::Config.run do |config|
50
+ config.vm.box = "base"
51
+ config.vm.forward_port #{guest_port}, #{host_port - 1}
52
+ config.vm.forward_port #{guest_port}, #{host_port}
53
+ end
54
+ VFILE
55
+ end
56
+
57
+ assert_execute("vagrant", "up")
58
+ assert_host_to_vm_network("http://localhost:#{host_port}/", guest_port)
59
+ end
60
+
61
+ it "detects and corrects port collisions" do
62
+ # The two environments need to share a VBOX_USER_HOME so that the
63
+ # VM's go into the same place.
64
+ env_vars = { "VBOX_USER_HOME" => Tempdir.new("vagrant").to_s }
65
+ environment = new_environment(env_vars)
66
+ environment2 = new_environment(env_vars)
67
+
68
+ # For this test we create two isolated environments and `vagrant up`
69
+ # in each. SSH would collide, so this verifies that it won't!
70
+ begin
71
+ initialize_environment(environment)
72
+ initialize_environment(environment2)
73
+
74
+ # Build both environments up.
75
+ environment.execute("vagrant", "init").should succeed
76
+ environment.execute("vagrant", "up").should succeed
77
+ environment2.execute("vagrant", "init").should succeed
78
+ environment2.execute("vagrant", "up").should succeed
79
+
80
+ # Touch files in both environments
81
+ environment.execute("vagrant", "ssh", "-c", "touch /vagrant/foo").should succeed
82
+ environment2.execute("vagrant", "ssh", "-c", "touch /vagrant/bar").should succeed
83
+
84
+ # Verify that the files exist in each folder, properly
85
+ environment.workdir.join("foo").exist?.should be
86
+ environment2.workdir.join("bar").exist?.should be
87
+ ensure
88
+ environment.close
89
+ environment2.close
90
+ end
91
+ end
92
+
93
+ it "refuses to resume if there is a port collision" do
94
+ # The two environments need to share a VBOX_USER_HOME so that the
95
+ # VM's go into the same place.
96
+ env_vars = { "VBOX_USER_HOME" => Tempdir.new("vagrant").path }
97
+ environment = new_environment(env_vars)
98
+ environment2 = new_environment(env_vars)
99
+
100
+ # For this test we `vagrant up` one environment, suspend it,
101
+ # `vagrant up` another environment, and then come back to the first
102
+ # and try to resume. SSH would collide so it should error.
103
+ begin
104
+ # Bring up the first environment and suspend it
105
+ initialize_environment(environment)
106
+ environment.execute("vagrant", "init").should succeed
107
+ environment.execute("vagrant", "up").should succeed
108
+ environment.execute("vagrant", "suspend").should succeed
109
+
110
+ # Bring up the second environment
111
+ initialize_environment(environment2)
112
+ environment2.execute("vagrant", "init").should succeed
113
+ environment2.execute("vagrant", "up").should succeed
114
+
115
+ # Attempt to bring up the first environment again, but it should
116
+ # result in an error.
117
+ result = environment.execute("vagrant", "up")
118
+ result.should_not succeed
119
+ result.stderr.should match_output(:resume_port_collision)
120
+ ensure
121
+ environment.close
122
+ environment2.close
123
+ end
124
+ end
125
+ end