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,106 @@
1
+ require "test_helper"
2
+
3
+ class BusyUtilTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Util::Busy
6
+ end
7
+
8
+ context "registering" do
9
+ setup do
10
+ @callback = lambda { puts "FOO" }
11
+ Signal.stubs(:trap)
12
+ end
13
+
14
+ teardown do
15
+ @klass.registered.clear
16
+ end
17
+
18
+ should "trap the signal on the first registration" do
19
+ Signal.expects(:trap).with("INT").once
20
+ @klass.register(@callback)
21
+ @klass.register(lambda { puts "BAR" })
22
+ end
23
+
24
+ should "not register the same callback multiple times" do
25
+ @klass.register(@callback)
26
+ @klass.register(@callback)
27
+ @klass.register(@callback)
28
+ assert_equal 1, @klass.registered.length
29
+ assert_equal @callback, @klass.registered.first
30
+ end
31
+ end
32
+
33
+ context "unregistering" do
34
+ setup do
35
+ Signal.stubs(:trap)
36
+
37
+ @callback = lambda { puts "FOO" }
38
+ end
39
+
40
+ teardown do
41
+ @klass.registered.clear
42
+ end
43
+
44
+ should "remove the callback and set the trap to DEFAULT when removing final" do
45
+ @klass.register(@callback)
46
+ Signal.expects(:trap).with("INT", "DEFAULT").once
47
+ @klass.unregister(@callback)
48
+ assert @klass.registered.empty?
49
+ end
50
+
51
+ should "not reset signal trap if not final callback" do
52
+ @klass.register(@callback)
53
+ @klass.register(lambda { puts "BAR" })
54
+ Signal.expects(:trap).never
55
+ @klass.unregister(@callback)
56
+ end
57
+ end
58
+
59
+ context "marking for busy" do
60
+ setup do
61
+ @callback = lambda { "foo" }
62
+ end
63
+
64
+ should "register, call the block, then unregister" do
65
+ waiter = mock("waiting")
66
+ proc = lambda { waiter.ping! }
67
+
68
+ seq = sequence('seq')
69
+ @klass.expects(:register).with(@callback).in_sequence(seq)
70
+ waiter.expects(:ping!).in_sequence(seq)
71
+ @klass.expects(:unregister).with(@callback).in_sequence(seq)
72
+
73
+ @klass.busy(@callback, &proc)
74
+ end
75
+
76
+ should "unregister callback even if block raises exception" do
77
+ waiter = mock("waiting")
78
+ proc = lambda { waiter.ping! }
79
+
80
+ seq = sequence('seq')
81
+ @klass.expects(:register).with(@callback).in_sequence(seq)
82
+ waiter.expects(:ping!).raises(Exception.new("uh oh!")).in_sequence(seq)
83
+ @klass.expects(:unregister).with(@callback).in_sequence(seq)
84
+
85
+ assert_raises(Exception) { @klass.busy(@callback, &proc) }
86
+ end
87
+ end
88
+
89
+ context "firing callbacks" do
90
+ setup do
91
+ Signal.stubs(:trap)
92
+ end
93
+
94
+ teardown do
95
+ @klass.registered.clear
96
+ end
97
+
98
+ should "just call the registered callbacks" do
99
+ waiting = mock("waiting")
100
+ waiting.expects(:ping!).once
101
+
102
+ @klass.register(lambda { waiting.ping! })
103
+ @klass.fire_callbacks
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,29 @@
1
+ require "test_helper"
2
+
3
+ class CounterUtilTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Class.new do
6
+ extend Vagrant::Util::Counter
7
+ end
8
+ end
9
+
10
+ context "basic counter" do
11
+ should "get and update the counter" do
12
+ assert_equal 1, @klass.get_and_update_counter
13
+ assert_equal 2, @klass.get_and_update_counter
14
+ end
15
+ end
16
+
17
+ context "multiple classes with a counter" do
18
+ setup do
19
+ @klass2 = Class.new do
20
+ extend Vagrant::Util::Counter
21
+ end
22
+ end
23
+
24
+ should "not affect other classes" do
25
+ assert_equal 1, @klass.get_and_update_counter
26
+ assert_equal 1, @klass2.get_and_update_counter
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ require "test_helper"
2
+
3
+ class PlatformTest < Test::Unit::TestCase
4
+ context "file options" do
5
+ should "include add binary bit to options on windows platform" do
6
+ # This constant is not defined on non-windows platforms, so define it here
7
+ File::BINARY = 4096 unless defined?(File::BINARY)
8
+
9
+ Vagrant::Util::Platform.stubs(:windows?).returns(true)
10
+ assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY|File::BINARY
11
+ end
12
+
13
+ should "not include binary bit on other platforms" do
14
+ Vagrant::Util::Platform.stubs(:windows?).returns(false)
15
+ assert_equal Vagrant::Util::Platform.tar_file_options, File::CREAT|File::EXCL|File::WRONLY
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,43 @@
1
+ require "test_helper"
2
+
3
+ class StackedProcRunnerUtilTest < Test::Unit::TestCase
4
+ class TestClass
5
+ include Vagrant::Util::StackedProcRunner
6
+ end
7
+
8
+ setup do
9
+ @instance = TestClass.new
10
+ @instance.proc_stack.clear
11
+ end
12
+
13
+ should "not run the procs right away" do
14
+ obj = mock("obj")
15
+ obj.expects(:foo).never
16
+ @instance.push_proc { |config| obj.foo }
17
+ @instance.push_proc { |config| obj.foo }
18
+ @instance.push_proc { |config| obj.foo }
19
+ end
20
+
21
+ should "run the blocks when run_procs! is ran" do
22
+ obj = mock("obj")
23
+ obj.expects(:foo).times(2)
24
+ @instance.push_proc { obj.foo }
25
+ @instance.push_proc { obj.foo }
26
+ @instance.run_procs!
27
+ end
28
+
29
+ should "run the blocks with the same arguments" do
30
+ passed_config = mock("config")
31
+ @instance.push_proc { |config| assert passed_config.equal?(config) }
32
+ @instance.push_proc { |config| assert passed_config.equal?(config) }
33
+ @instance.run_procs!(passed_config)
34
+ end
35
+
36
+ should "not clear the blocks after running" do
37
+ obj = mock("obj")
38
+ obj.expects(:foo).times(2)
39
+ @instance.push_proc { obj.foo }
40
+ @instance.run_procs!
41
+ @instance.run_procs!
42
+ end
43
+ end
@@ -0,0 +1,145 @@
1
+ require "test_helper"
2
+
3
+ class TemplateRendererUtilTest < Test::Unit::TestCase
4
+ context "initializing" do
5
+ should "set the template to the given argument" do
6
+ r = Vagrant::Util::TemplateRenderer.new("foo")
7
+ assert_equal "foo", r.template
8
+ end
9
+
10
+ should "set any additional variables" do
11
+ r = Vagrant::Util::TemplateRenderer.new("foo", {:bar => :baz})
12
+ assert_equal :baz, r.bar
13
+ end
14
+ end
15
+
16
+ context "rendering" do
17
+ setup do
18
+ @template = "foo"
19
+ @r = Vagrant::Util::TemplateRenderer.new(@template)
20
+ @r.stubs(:full_template_path).returns(@template + "!")
21
+
22
+ @contents = "bar"
23
+
24
+ @file = mock("file")
25
+ @file.stubs(:read).returns(@contents)
26
+ File.stubs(:open).yields(@file)
27
+ end
28
+
29
+ should "open the template file for reading" do
30
+ File.expects(:open).with(@r.full_template_path, 'r').once
31
+ @r.render
32
+ end
33
+
34
+ should "set the template to the file contents, render, then set it back" do
35
+ result = "bar"
36
+
37
+ template_seq = sequence("template_seq")
38
+ @r.expects(:template=).with(@file.read).in_sequence(template_seq)
39
+ @r.expects(:render_string).returns(result).in_sequence(template_seq)
40
+ @r.expects(:template=).with(@template).in_sequence(template_seq)
41
+ assert_equal result, @r.render
42
+ end
43
+
44
+ should "render the ERB file in the context of the renderer" do
45
+ result = "bar"
46
+ template = "<%= foo %>"
47
+ @r.foo = result
48
+ @file.expects(:read).returns(template)
49
+ assert_equal result, @r.render
50
+ end
51
+ end
52
+
53
+ context "rendering as string" do
54
+ setup do
55
+ @result = "foo"
56
+ @erb = mock("erb")
57
+ @erb.stubs(:result).returns(@result)
58
+
59
+ @r = Vagrant::Util::TemplateRenderer.new("foo")
60
+ end
61
+
62
+ should "simply render the template as a string" do
63
+ Erubis::Eruby.expects(:new).with(@r.template, :trim => true).returns(@erb)
64
+ @erb.expects(:result).returns(@result)
65
+ assert_equal @result, @r.render_string
66
+ end
67
+ end
68
+
69
+ context "the full template path" do
70
+ setup do
71
+ @template = "foo"
72
+ @r = Vagrant::Util::TemplateRenderer.new(@template)
73
+ end
74
+
75
+ should "be the ERB file in the templates directory" do
76
+ result = Vagrant.source_root.join("templates", "#{@template}.erb")
77
+ assert_equal result.to_s, @r.full_template_path
78
+ end
79
+
80
+ should "remove duplicate path separators" do
81
+ @r.template = "foo///bar"
82
+ result = Vagrant.source_root.join("templates", "foo", "bar.erb")
83
+ assert_equal result.to_s, @r.full_template_path
84
+ end
85
+ end
86
+
87
+ context "class methods" do
88
+ context "render_with method" do
89
+ setup do
90
+ @template = "foo"
91
+ @r = Vagrant::Util::TemplateRenderer.new(@template)
92
+ @r.stubs(:render)
93
+
94
+ @method = :rawr
95
+
96
+ Vagrant::Util::TemplateRenderer.stubs(:new).with(@template, {}).returns(@r)
97
+ end
98
+
99
+ should "use the second argument as the template" do
100
+ Vagrant::Util::TemplateRenderer.expects(:new).with(@template, {}).returns(@r)
101
+ Vagrant::Util::TemplateRenderer.render_with(@method, @template)
102
+ end
103
+
104
+ should "send in additional argument to the renderer" do
105
+ data = {:hey => :foo}
106
+ Vagrant::Util::TemplateRenderer.expects(:new).with(@template, data).returns(@r)
107
+ Vagrant::Util::TemplateRenderer.render_with(@method, @template, data)
108
+ end
109
+
110
+ should "yield a block if given with the renderer as the argument" do
111
+ @r.expects(:yielded=).with(true).once
112
+ Vagrant::Util::TemplateRenderer.render_with(@method, @template) do |r|
113
+ r.yielded = true
114
+ end
115
+ end
116
+
117
+ should "render the result using the given method" do
118
+ result = mock('result')
119
+ @r.expects(@method).returns(result)
120
+ assert_equal result, Vagrant::Util::TemplateRenderer.render_with(@method, @template)
121
+ end
122
+
123
+ should "convert the given method to a sym prior to calling" do
124
+ @r.expects(@method.to_sym).returns(nil)
125
+ Vagrant::Util::TemplateRenderer.render_with(@method.to_s, @template)
126
+ end
127
+ end
128
+
129
+ context "render method" do
130
+ should "call render_with the render! method" do
131
+ args = ["foo", "bar", "baz"]
132
+ Vagrant::Util::TemplateRenderer.expects(:render_with).with(:render, *args)
133
+ Vagrant::Util::TemplateRenderer.render(*args)
134
+ end
135
+ end
136
+
137
+ context "render_string method" do
138
+ should "call render_with the render! method" do
139
+ args = ["foo", "bar", "baz"]
140
+ Vagrant::Util::TemplateRenderer.expects(:render_with).with(:render_string, *args)
141
+ Vagrant::Util::TemplateRenderer.render_string(*args)
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,300 @@
1
+ require "test_helper"
2
+
3
+ class VMTest < Test::Unit::TestCase
4
+ setup do
5
+ @env = vagrant_env
6
+ end
7
+
8
+ context "finding a VM" do
9
+ should "return return an uncreated VM object if the VM is not found" do
10
+ VirtualBox::VM.expects(:find).returns(nil)
11
+ result = Vagrant::VM.find("foo")
12
+ assert result.is_a?(Vagrant::VM)
13
+ assert !result.created?
14
+ end
15
+
16
+ should "return a Vagrant::VM object for that VM if found" do
17
+ VirtualBox::VM.expects(:find).with("foo").returns("bar")
18
+ result = Vagrant::VM.find("foo", @env)
19
+ assert result.is_a?(Vagrant::VM)
20
+ assert_equal "bar", result.vm
21
+ end
22
+ end
23
+
24
+ context "vagrant VM instance" do
25
+ setup do
26
+ @vm_name = "foo"
27
+ @mock_vm = mock("vm")
28
+ @mock_vm.stubs(:running?).returns(false)
29
+ @vm = Vagrant::VM.new(:env => @env, :vm => @mock_vm, :name => @vm_name)
30
+ @mock_vm.stubs(:uuid).returns("foo")
31
+ end
32
+
33
+ context "checking if created" do
34
+ should "return true if the VM object is not nil" do
35
+ @vm.stubs(:vm).returns(:foo)
36
+ assert @vm.created?
37
+ end
38
+
39
+ should "return false if the VM object is nil" do
40
+ @vm.stubs(:vm).returns(nil)
41
+ assert !@vm.created?
42
+ end
43
+ end
44
+
45
+ context "setting the VM" do
46
+ setup do
47
+ @raw_vm = mock("vm")
48
+ @raw_vm.stubs(:uuid).returns("foobar")
49
+ end
50
+
51
+ should "set the VM" do
52
+ @vm.vm = @raw_vm
53
+ assert_equal @raw_vm, @vm.vm
54
+ end
55
+
56
+ should "add the VM to the active list" do
57
+ assert @env.local_data.empty?
58
+ @vm.vm = @raw_vm
59
+ assert_equal @raw_vm.uuid, @env.local_data[:active][@vm.name.to_s]
60
+ end
61
+
62
+ should "remove the VM from the active list if nil is given" do
63
+ @env.local_data[:active] = { @vm.name.to_s => "foo" }
64
+
65
+ assert @env.local_data[:active].has_key?(@vm.name.to_s) # sanity
66
+ @vm.vm = nil
67
+
68
+ # This becomes empty because vm= will commit the local data which
69
+ # actually prunes out the empty values.
70
+ assert @env.local_data.empty?
71
+ end
72
+ end
73
+
74
+ context "accessing the SSH object" do
75
+ setup do
76
+ # Reset this to nil to force the reload
77
+ @vm.instance_variable_set(:@ssh, nil)
78
+
79
+ @ssh = mock("ssh")
80
+ Vagrant::SSH.stubs(:new).returns(@ssh)
81
+ end
82
+
83
+ should "load it the first time, and only load it once" do
84
+ Vagrant::SSH.expects(:new).with(@vm.env).once.returns(@ssh)
85
+ @vm.ssh
86
+ @vm.ssh
87
+ @vm.ssh
88
+ end
89
+ end
90
+
91
+ context "loading associated system" do
92
+ should "error and exit if system is not specified" do
93
+ @vm.env.config.vm.system = nil
94
+
95
+ assert_raises(Vagrant::Errors::VMSystemError) {
96
+ @vm.load_system!
97
+ }
98
+ end
99
+
100
+ should "load the given system if specified" do
101
+ fake_class = Class.new(Vagrant::Systems::Base)
102
+
103
+ assert_nothing_raised { @vm.load_system!(fake_class) }
104
+ assert @vm.system.is_a?(fake_class)
105
+ end
106
+
107
+ context "with a class" do
108
+ should "initialize class if given" do
109
+ @vm.env.config.vm.system = Vagrant::Systems::Linux
110
+
111
+ assert_nothing_raised { @vm.load_system!}
112
+ assert @vm.system.is_a?(Vagrant::Systems::Linux)
113
+ end
114
+
115
+ should "raise error if class has invalid parent" do
116
+ @vm.env.config.vm.system = Class.new
117
+ assert_raises(Vagrant::Errors::VMSystemError) {
118
+ @vm.load_system!
119
+ }
120
+ end
121
+ end
122
+
123
+ context "with a symbol" do
124
+ should "initialize proper symbols" do
125
+ valid = {
126
+ :linux => Vagrant::Systems::Linux,
127
+ :solaris => Vagrant::Systems::Solaris
128
+ }
129
+
130
+ valid.each do |symbol, klass|
131
+ @vm.env.config.vm.system = symbol
132
+
133
+ assert_nothing_raised { @vm.load_system! }
134
+ assert @vm.system.is_a?(klass)
135
+ assert_equal @vm, @vm.system.vm
136
+ end
137
+ end
138
+
139
+ should "error and exit with invalid symbol" do
140
+ @vm.env.config.vm.system = :shall_never_exist
141
+
142
+ assert_raises(Vagrant::Errors::VMSystemError) {
143
+ @vm.load_system!
144
+ }
145
+ end
146
+ end
147
+
148
+ context "loading the distro" do
149
+ setup do
150
+ @vm.vm.stubs(:running?).returns(true)
151
+ end
152
+
153
+ should "not replace the distro if it is nil" do
154
+ @vm.env.config.vm.system = Class.new(Vagrant::Systems::Base)
155
+
156
+ @vm.load_system!
157
+ assert @vm.system.is_a?(@vm.env.config.vm.system)
158
+ end
159
+
160
+ should "replace the distro if it is not nil" do
161
+ @vm.env.config.vm.system = Class.new(Vagrant::Systems::Base) do
162
+ def distro_dispatch
163
+ :linux
164
+ end
165
+ end
166
+
167
+ @vm.load_system!
168
+ assert @vm.system.is_a?(Vagrant::Systems::Linux)
169
+ end
170
+ end
171
+ end
172
+
173
+ context "uuid" do
174
+ should "call UUID on VM object" do
175
+ uuid = mock("uuid")
176
+ @mock_vm.expects(:uuid).once.returns(uuid)
177
+ assert_equal uuid, @vm.uuid
178
+ end
179
+
180
+ should "return nil if vm is nil" do
181
+ @vm.expects(:vm).returns(nil)
182
+ assert @vm.uuid.nil?
183
+ end
184
+ end
185
+
186
+ context "reloading" do
187
+ should "load the same VM and set it" do
188
+ new_vm = mock("vm")
189
+ VirtualBox::VM.expects(:find).with(@mock_vm.uuid).returns(new_vm)
190
+ @vm.reload!
191
+ assert_equal new_vm, @vm.vm
192
+ end
193
+ end
194
+
195
+ context "packaging" do
196
+ should "execute the package action" do
197
+ @vm.env.actions.expects(:run).once.with() do |action, options|
198
+ assert_equal :package, action
199
+ assert_equal :bar, options[:foo]
200
+ true
201
+ end
202
+
203
+ @vm.package(:foo => :bar)
204
+ end
205
+ end
206
+
207
+ context "upping" do
208
+ should "execute the up action" do
209
+ @vm.env.actions.expects(:run).with(:up, nil).once
210
+ @vm.up
211
+ end
212
+
213
+ should "forward options to the action sequence" do
214
+ @vm.env.actions.expects(:run).with(:up, :foo => :bar).once
215
+ @vm.up(:foo => :bar)
216
+ end
217
+ end
218
+
219
+ context "halting" do
220
+ should "execute the halt action" do
221
+ @vm.env.actions.expects(:run).with(:halt, :foo => :bar).once
222
+ @vm.halt({:foo => :bar})
223
+ end
224
+ end
225
+
226
+ context "reloading action" do
227
+ should "execute the reload action" do
228
+ @vm.env.actions.expects(:run).with(:reload).once
229
+ @vm.reload
230
+ end
231
+ end
232
+
233
+ context "provisioning" do
234
+ should "execute the provision action" do
235
+ @vm.env.actions.expects(:run).with(:provision).once
236
+ @vm.provision
237
+ end
238
+ end
239
+
240
+ context "destroying" do
241
+ should "execute the destroy action" do
242
+ @vm.env.actions.expects(:run).with(:destroy).once
243
+ @vm.destroy
244
+ end
245
+ end
246
+
247
+ context "suspending" do
248
+ should "execute the suspend action" do
249
+ @vm.env.actions.expects(:run).with(:suspend).once
250
+ @vm.suspend
251
+ end
252
+ end
253
+
254
+ context "resuming" do
255
+ should "execute the resume action" do
256
+ @vm.env.actions.expects(:run).with(:resume).once
257
+ @vm.resume
258
+ end
259
+ end
260
+
261
+ context "starting" do
262
+ setup do
263
+ @mock_vm.stubs(:running?).returns(false)
264
+ @mock_vm.stubs(:saved?).returns(false)
265
+ @mock_vm.stubs(:accessible?).returns(true)
266
+ end
267
+
268
+ should "not do anything if the VM is already running" do
269
+ @mock_vm.stubs(:running?).returns(true)
270
+ @vm.expects(:execute!).never
271
+ @vm.start
272
+ end
273
+
274
+ should "execute the resume action if saved" do
275
+ @mock_vm.expects(:saved?).returns(true)
276
+ @vm.expects(:resume).once
277
+ @vm.env.actions.expects(:run).with(:start, nil).never
278
+ @vm.start
279
+ end
280
+
281
+ should "execute the start action" do
282
+ @vm.env.actions.expects(:run).with(:start, nil).once
283
+ @vm.start
284
+ end
285
+
286
+ should "forward options to the action sequence" do
287
+ @vm.env.actions.expects(:run).with(:start, :foo => :bar).once
288
+ @vm.start(:foo => :bar)
289
+ end
290
+
291
+ should "raise an exception if the VM is not accessible" do
292
+ @mock_vm.stubs(:accessible?).returns(false)
293
+
294
+ assert_raises(Vagrant::Errors::VMInaccessible) {
295
+ @vm.start
296
+ }
297
+ end
298
+ end
299
+ end
300
+ end