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,79 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Config::Loader do
4
+ include_context "unit"
5
+
6
+ let(:instance) { described_class.new }
7
+
8
+ it "should ignore non-existent load order keys" do
9
+ instance.load_order = [:foo]
10
+ instance.load
11
+ end
12
+
13
+ it "should load and return the configuration" do
14
+ proc = Proc.new do |config|
15
+ config.vagrant.dotfile_name = "foo"
16
+ end
17
+
18
+ instance.load_order = [:proc]
19
+ instance.set(:proc, proc)
20
+ config = instance.load
21
+
22
+ config.vagrant.dotfile_name.should == "foo"
23
+ end
24
+
25
+ it "should only run the same proc once" do
26
+ count = 0
27
+ proc = Proc.new do |config|
28
+ config.vagrant.dotfile_name = "foo"
29
+ count += 1
30
+ end
31
+
32
+ instance.load_order = [:proc]
33
+ instance.set(:proc, proc)
34
+
35
+ 5.times do
36
+ result = instance.load
37
+
38
+ # Verify the config result
39
+ result.vagrant.dotfile_name.should == "foo"
40
+
41
+ # Verify the count is only one
42
+ count.should == 1
43
+ end
44
+ end
45
+
46
+ it "should only load configuration files once" do
47
+ $_config_data = 0
48
+
49
+ # We test both setting a file multiple times as well as multiple
50
+ # loads, since both should not cache the data.
51
+ file = temporary_file("$_config_data += 1")
52
+ instance.load_order = [:file]
53
+ 5.times { instance.set(:file, file) }
54
+ 5.times { instance.load }
55
+
56
+ $_config_data.should == 1
57
+ end
58
+
59
+ it "should not clear the cache if setting to the same value multiple times" do
60
+ $_config_data = 0
61
+
62
+ file = temporary_file("$_config_data += 1")
63
+
64
+ instance.load_order = [:proc]
65
+ instance.set(:proc, file)
66
+ 5.times { instance.load }
67
+
68
+ instance.set(:proc, file)
69
+ 5.times { instance.load }
70
+
71
+ $_config_data.should == 1
72
+ end
73
+
74
+ it "should raise proper error if there is a syntax error in a Vagrantfile" do
75
+ instance.load_order = [:file]
76
+ expect { instance.set(:file, temporary_file("Vagrant:^Config")) }.
77
+ to raise_exception(Vagrant::Errors::VagrantfileSyntaxError)
78
+ end
79
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Config::SSHConfig do
4
+ include_context "unit"
5
+
6
+ [:forward_agent, :forward_x11].each do |bool_setting|
7
+ it "merges boolean #{bool_setting} properly" do
8
+ a = described_class.new
9
+ a.send("#{bool_setting}=", true)
10
+
11
+ b = described_class.new
12
+
13
+ c = a.merge(b)
14
+ c.send(bool_setting).should be
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,69 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "vagrant/registry"
4
+
5
+ describe Vagrant::Config::Top do
6
+ include_context "unit"
7
+
8
+ let(:registry) { Vagrant::Registry.new }
9
+ let(:instance) { described_class.new(registry) }
10
+
11
+ it "should load in the proper config class" do
12
+ registry.register(:foo, Object)
13
+
14
+ instance.foo.should be_kind_of(Object)
15
+ end
16
+
17
+ it "should load the proper config class only once" do
18
+ registry.register(:foo, Object)
19
+
20
+ obj = instance.foo
21
+ instance.foo.should eql(obj)
22
+ end
23
+
24
+ it "still raises a method missing error if invalid key" do
25
+ expect { instance.foo }.to raise_error(NoMethodError)
26
+ end
27
+
28
+ describe "merging" do
29
+ let(:foo_class) do
30
+ Class.new do
31
+ attr_accessor :one
32
+ attr_accessor :two
33
+
34
+ def merge(other)
35
+ result = self.class.new
36
+ result.one = other.one || one
37
+ result.two = other.two || two
38
+ result
39
+ end
40
+ end
41
+ end
42
+
43
+ it "merges each key by calling `merge` on the class" do
44
+ registry.register(:foo, foo_class)
45
+
46
+ instance.foo.one = 1
47
+ instance.foo.two = 2
48
+
49
+ another = described_class.new(registry)
50
+ another.foo.one = 2
51
+
52
+ result = instance.merge(another)
53
+ result.foo.one.should == 2
54
+ result.foo.two.should == 2
55
+ end
56
+
57
+ it "merges keys that aren't in the source instance" do
58
+ reg = Vagrant::Registry.new
59
+ reg.register(:foo, foo_class)
60
+
61
+ another = described_class.new(reg)
62
+ another.foo.one = 2
63
+
64
+ result = instance.merge(another)
65
+ result.foo.one.should == 2
66
+ result.foo.two.should be_nil
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,71 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Config::VMConfig do
4
+ include_context "unit"
5
+
6
+ it "merges by appending forwarded ports" do
7
+ a = described_class.new
8
+ a.forward_port 80, 8080
9
+
10
+ b = described_class.new
11
+ b.forward_port 100, 1000
12
+
13
+ c = a.merge(b)
14
+ c.forwarded_ports.length.should == 2
15
+ c.forwarded_ports[0][:guestport].should == 80
16
+ c.forwarded_ports[0][:hostport].should == 8080
17
+ c.forwarded_ports[1][:guestport].should == 100
18
+ c.forwarded_ports[1][:hostport].should == 1000
19
+ end
20
+
21
+ it "merges by merging shared folders" do
22
+ a = described_class.new
23
+ a.share_folder "a", "/guest", "/host"
24
+ a.share_folder "b", "/guest", "/host"
25
+
26
+ b = described_class.new
27
+ b.share_folder "c", "/guest", "/host"
28
+
29
+ c = a.merge(b)
30
+ c.shared_folders.has_key?("a").should be
31
+ c.shared_folders.has_key?("b").should be
32
+ c.shared_folders.has_key?("c").should be
33
+ end
34
+
35
+ it "merges by appending networks" do
36
+ a = described_class.new
37
+ a.network :hostonly, "192.168.33.10"
38
+
39
+ b = described_class.new
40
+ b.network :hostonly, "192.168.33.11"
41
+
42
+ c = a.merge(b)
43
+ c.networks.length.should == 2
44
+ c.networks[0].should == [:hostonly, ["192.168.33.10"]]
45
+ c.networks[1].should == [:hostonly, ["192.168.33.11"]]
46
+ end
47
+
48
+ it "merges by appending provisioners" do
49
+ a = described_class.new
50
+ a.provision :foo
51
+
52
+ b = described_class.new
53
+ b.provision :bar
54
+
55
+ c = a.merge(b)
56
+ c.provisioners.length.should == 2
57
+ c.provisioners[0].shortcut.should == :foo
58
+ c.provisioners[1].shortcut.should == :bar
59
+ end
60
+
61
+ it "merges by appending customizations" do
62
+ a = described_class.new
63
+ a.customize "a"
64
+
65
+ b = described_class.new
66
+ b.customize "b"
67
+
68
+ c = a.merge(b)
69
+ c.customizations.should == ["a", "b"]
70
+ end
71
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ describe Vagrant::Config do
4
+ it "should not execute the proc on configuration" do
5
+ described_class.run do
6
+ raise Exception, "Failure."
7
+ end
8
+ end
9
+
10
+ it "should capture configuration procs" do
11
+ receiver = double()
12
+
13
+ procs = described_class.capture_configures do
14
+ described_class.run do
15
+ receiver.hello!
16
+ end
17
+ end
18
+
19
+ # Verify the structure of the result
20
+ procs.should be_kind_of(Array)
21
+ procs.length.should == 1
22
+
23
+ # Verify that the proper proc was captured
24
+ receiver.should_receive(:hello!).once
25
+ procs[0].call
26
+ end
27
+ end
@@ -0,0 +1,79 @@
1
+ require File.expand_path("../../base", __FILE__)
2
+
3
+ require 'pathname'
4
+
5
+ describe Vagrant::DataStore do
6
+ include_context "unit"
7
+
8
+ let(:db_file) do
9
+ # We create a tempfile and force an explicit close/unlink
10
+ # but save the path so that we can re-use it multiple times
11
+ temp = Tempfile.new("vagrant")
12
+ result = Pathname.new(temp.path)
13
+ temp.close
14
+ temp.unlink
15
+
16
+ result
17
+ end
18
+
19
+ let(:instance) { described_class.new(db_file) }
20
+
21
+ it "initializes a new DB file" do
22
+ instance[:data] = true
23
+ instance.commit
24
+ instance[:data].should == true
25
+
26
+ test = described_class.new(db_file)
27
+ test[:data].should == true
28
+ end
29
+
30
+ it "initializes empty if the file contains invalid data" do
31
+ db_file.open("w+") { |f| f.write("NOPE!") }
32
+ described_class.new(db_file).should be_empty
33
+ end
34
+
35
+ it "initializes empty if the file doesn't exist" do
36
+ described_class.new("NOPENOPENOPENOPENPEPEPEPE").should be_empty
37
+ end
38
+
39
+ it "raises an error if the path given is a directory" do
40
+ db_file.delete if db_file.exist?
41
+ db_file.mkdir
42
+
43
+ expect { described_class.new(db_file) }.
44
+ to raise_error(Vagrant::Errors::DotfileIsDirectory)
45
+ end
46
+
47
+ it "cleans nil and empties when committing" do
48
+ instance[:data] = { :bar => nil }
49
+ instance[:another] = {}
50
+ instance.commit
51
+
52
+ # The instance is now empty because the data was nil
53
+ instance.should be_empty
54
+ end
55
+
56
+ it "deletes the data file if the store is empty when saving" do
57
+ instance[:data] = true
58
+ instance.commit
59
+
60
+ another = described_class.new(db_file)
61
+ another[:data] = nil
62
+ another.commit
63
+
64
+ # The file should no longer exist
65
+ db_file.should_not be_exist
66
+ end
67
+
68
+ it "works if the DB file is nil" do
69
+ store = described_class.new(nil)
70
+ store[:foo] = "bar"
71
+ store[:foo].should == "bar"
72
+ end
73
+
74
+ it "throws an exception if attempting to commit a data store with no file" do
75
+ store = described_class.new(nil)
76
+ expect { store.commit }.
77
+ to raise_error(StandardError)
78
+ end
79
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Downloaders::Base do
4
+ let(:ui) { double("ui") }
5
+ let(:instance) { described_class.new(ui) }
6
+
7
+ it "should not match anything by default" do
8
+ described_class.match?("foo").should_not be
9
+ end
10
+
11
+ it "should implement `prepare`" do
12
+ instance.prepare("foo").should be_nil
13
+ end
14
+
15
+ it "should implement `download!`" do
16
+ instance.download!("foo", "bar").should be_nil
17
+ end
18
+ end
@@ -0,0 +1,75 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ require "tempfile"
4
+
5
+ describe Vagrant::Downloaders::File do
6
+ let(:ui) { double("ui") }
7
+ let(:instance) { described_class.new(ui) }
8
+
9
+ describe "matching" do
10
+ it "should match an existing file" do
11
+ described_class.match?(__FILE__).should be
12
+ end
13
+
14
+ it "should not match non-existent files" do
15
+ described_class.match?(File.join(__FILE__, "nowaywaywaywayayway")).should_not be
16
+ end
17
+
18
+ it "should match files where the path needs to be expanded" do
19
+ old_home = ENV["HOME"]
20
+ begin
21
+ # Create a temporary file
22
+ temp = Tempfile.new("vagrant")
23
+
24
+ # Set our home directory to be this directory so we can use
25
+ # "~" paths
26
+ ENV["HOME"] = File.dirname(temp.path)
27
+
28
+ # Test that we can find the temp file
29
+ described_class.match?("~/#{File.basename(temp.path)}").should be
30
+ ensure
31
+ ENV["HOME"] = old_home
32
+ end
33
+ end
34
+ end
35
+
36
+ describe "preparing" do
37
+ it "should raise an exception if the file does not exist" do
38
+ path = File.join(__FILE__, "nopenopenope")
39
+ File.exist?(path).should_not be
40
+
41
+ expect { instance.prepare(path) }.to raise_error(Vagrant::Errors::DownloaderFileDoesntExist)
42
+ end
43
+
44
+ it "should raise an exception if the file is a directory" do
45
+ path = File.dirname(__FILE__)
46
+ File.should be_directory(path)
47
+
48
+ expect { instance.prepare(path) }.to raise_error(Vagrant::Errors::DownloaderFileDoesntExist)
49
+ end
50
+
51
+ it "should find files that use shell expansions" do
52
+ old_home = ENV["HOME"]
53
+ begin
54
+ # Create a temporary file
55
+ temp = Tempfile.new("vagrant")
56
+
57
+ # Set our home directory to be this directory so we can use
58
+ # "~" paths
59
+ ENV["HOME"] = File.dirname(temp.path)
60
+
61
+ # Test that we can find the temp file
62
+ expect { instance.prepare("~/#{File.basename(temp.path)}") }.
63
+ to_not raise_error
64
+ ensure
65
+ ENV["HOME"] = old_home
66
+ end
67
+ end
68
+ end
69
+
70
+ describe "downloading" do
71
+ it "should copy the source to the destination" do
72
+ pending "setup paths"
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Downloaders::HTTP do
4
+ let(:ui) { double("ui") }
5
+ let(:instance) { described_class.new(ui) }
6
+
7
+ describe "matching" do
8
+ it "should match URLs" do
9
+ described_class.match?("http://google.com/foo.box").should be
10
+ described_class.match?("https://google.com/foo.box").should be
11
+ described_class.match?("http://foo:bar@google.com/foo.box").should be
12
+ described_class.match?("http://google.com:8500/foo.box").should be
13
+ end
14
+ end
15
+
16
+ describe "downloading" do
17
+ # Integration tests only.
18
+ end
19
+ end