vagrantup 1.0.7 → 1.1.0

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 (623) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -0
  3. data/LICENSE +2 -2
  4. data/README.md +11 -13
  5. data/bin/vagrant +29 -5
  6. data/config/default.rb +14 -9
  7. data/contrib/bash/completion.sh +3 -0
  8. data/keys/README.md +3 -3
  9. data/lib/vagrant.rb +156 -102
  10. data/lib/vagrant/action.rb +26 -47
  11. data/lib/vagrant/action/builder.rb +49 -23
  12. data/lib/vagrant/action/builtin/box_add.rb +85 -0
  13. data/lib/vagrant/action/builtin/call.rb +67 -0
  14. data/lib/vagrant/action/builtin/config_validate.rb +30 -0
  15. data/lib/vagrant/action/builtin/confirm.rb +38 -0
  16. data/lib/vagrant/action/builtin/env_set.rb +24 -0
  17. data/lib/vagrant/action/builtin/graceful_halt.rb +73 -0
  18. data/lib/vagrant/action/builtin/handle_box_url.rb +43 -0
  19. data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +117 -0
  20. data/lib/vagrant/action/builtin/lock.rb +57 -0
  21. data/lib/vagrant/action/builtin/nfs.rb +117 -0
  22. data/lib/vagrant/action/builtin/provision.rb +70 -0
  23. data/lib/vagrant/action/builtin/set_hostname.rb +27 -0
  24. data/lib/vagrant/action/builtin/ssh_exec.rb +42 -0
  25. data/lib/vagrant/action/builtin/ssh_run.rb +43 -0
  26. data/lib/vagrant/action/general/package.rb +19 -18
  27. data/lib/vagrant/action/hook.rb +103 -0
  28. data/lib/vagrant/action/runner.rb +21 -5
  29. data/lib/vagrant/action/warden.rb +20 -9
  30. data/lib/vagrant/box.rb +75 -26
  31. data/lib/vagrant/box_collection.rb +301 -35
  32. data/lib/vagrant/cli.rb +20 -14
  33. data/lib/vagrant/config.rb +23 -9
  34. data/lib/vagrant/config/loader.rb +131 -36
  35. data/lib/vagrant/config/v1.rb +9 -0
  36. data/lib/vagrant/config/v1/dummy_config.rb +13 -0
  37. data/lib/vagrant/config/v1/loader.rb +105 -0
  38. data/lib/vagrant/config/v1/root.rb +60 -0
  39. data/lib/vagrant/config/v2.rb +9 -0
  40. data/lib/vagrant/config/v2/dummy_config.rb +13 -0
  41. data/lib/vagrant/config/v2/loader.rb +141 -0
  42. data/lib/vagrant/config/v2/root.rb +105 -0
  43. data/lib/vagrant/config/v2/util.rb +21 -0
  44. data/lib/vagrant/config/version_base.rb +80 -0
  45. data/lib/vagrant/downloaders/base.rb +0 -3
  46. data/lib/vagrant/downloaders/file.rb +10 -4
  47. data/lib/vagrant/downloaders/http.rb +29 -10
  48. data/lib/vagrant/environment.rb +447 -240
  49. data/lib/vagrant/errors.rb +138 -97
  50. data/lib/vagrant/hosts.rb +3 -12
  51. data/lib/vagrant/machine.rb +325 -0
  52. data/lib/vagrant/machine_state.rb +45 -0
  53. data/lib/vagrant/plugin.rb +3 -78
  54. data/lib/vagrant/plugin/v1.rb +19 -0
  55. data/lib/vagrant/plugin/v1/command.rb +169 -0
  56. data/lib/vagrant/plugin/v1/communicator.rb +98 -0
  57. data/lib/vagrant/plugin/v1/config.rb +112 -0
  58. data/lib/vagrant/plugin/v1/errors.rb +15 -0
  59. data/lib/vagrant/plugin/v1/guest.rb +92 -0
  60. data/lib/vagrant/plugin/v1/host.rb +66 -0
  61. data/lib/vagrant/plugin/v1/manager.rb +131 -0
  62. data/lib/vagrant/plugin/v1/plugin.rb +229 -0
  63. data/lib/vagrant/plugin/v1/provider.rb +68 -0
  64. data/lib/vagrant/plugin/v1/provisioner.rb +50 -0
  65. data/lib/vagrant/plugin/v2.rb +22 -0
  66. data/lib/vagrant/plugin/v2/command.rb +234 -0
  67. data/lib/vagrant/plugin/v2/communicator.rb +98 -0
  68. data/lib/vagrant/plugin/v2/components.rb +29 -0
  69. data/lib/vagrant/plugin/v2/config.rb +101 -0
  70. data/lib/vagrant/plugin/v2/errors.rb +15 -0
  71. data/lib/vagrant/plugin/v2/guest.rb +92 -0
  72. data/lib/vagrant/plugin/v2/host.rb +66 -0
  73. data/lib/vagrant/plugin/v2/manager.rb +158 -0
  74. data/lib/vagrant/plugin/v2/plugin.rb +217 -0
  75. data/lib/vagrant/plugin/v2/provider.rb +69 -0
  76. data/lib/vagrant/plugin/v2/provisioner.rb +47 -0
  77. data/lib/vagrant/registry.rb +43 -17
  78. data/lib/vagrant/ssh.rb +15 -9
  79. data/lib/vagrant/ui.rb +7 -5
  80. data/lib/vagrant/util/is_port_open.rb +1 -1
  81. data/lib/vagrant/util/platform.rb +19 -0
  82. data/lib/vagrant/util/retryable.rb +8 -2
  83. data/lib/vagrant/util/safe_exec.rb +2 -2
  84. data/lib/vagrant/util/scoped_hash_override.rb +45 -0
  85. data/lib/vagrant/util/ssh.rb +126 -0
  86. data/lib/vagrant/util/string_block_editor.rb +75 -0
  87. data/lib/vagrant/util/subprocess.rb +33 -10
  88. data/lib/vagrant/util/which.rb +43 -0
  89. data/lib/vagrant/version.rb +1 -1
  90. data/plugins/README.md +5 -0
  91. data/plugins/commands/box/command/add.rb +46 -0
  92. data/plugins/commands/box/command/list.rb +41 -0
  93. data/plugins/commands/box/command/remove.rb +37 -0
  94. data/plugins/commands/box/command/repackage.rb +43 -0
  95. data/plugins/commands/box/command/root.rb +75 -0
  96. data/plugins/commands/box/plugin.rb +15 -0
  97. data/plugins/commands/destroy/command.rb +31 -0
  98. data/plugins/commands/destroy/plugin.rb +18 -0
  99. data/plugins/commands/halt/command.rb +33 -0
  100. data/plugins/commands/halt/plugin.rb +18 -0
  101. data/{lib/vagrant/command/init.rb → plugins/commands/init/command.rb} +4 -4
  102. data/plugins/commands/init/plugin.rb +18 -0
  103. data/plugins/commands/package/command.rb +83 -0
  104. data/plugins/commands/package/plugin.rb +18 -0
  105. data/plugins/commands/plugin/action.rb +52 -0
  106. data/plugins/commands/plugin/action/bundler_check.rb +25 -0
  107. data/plugins/commands/plugin/action/install_gem.rb +70 -0
  108. data/plugins/commands/plugin/action/license_plugin.rb +54 -0
  109. data/plugins/commands/plugin/action/list_plugins.rb +54 -0
  110. data/plugins/commands/plugin/action/prune_gems.rb +149 -0
  111. data/plugins/commands/plugin/action/uninstall_plugin.rb +23 -0
  112. data/plugins/commands/plugin/command/base.rb +22 -0
  113. data/plugins/commands/plugin/command/install.rb +39 -0
  114. data/plugins/commands/plugin/command/license.rb +31 -0
  115. data/plugins/commands/plugin/command/list.rb +28 -0
  116. data/plugins/commands/plugin/command/root.rb +75 -0
  117. data/plugins/commands/plugin/command/uninstall.rb +28 -0
  118. data/plugins/commands/plugin/gem_helper.rb +74 -0
  119. data/plugins/commands/plugin/plugin.rb +22 -0
  120. data/plugins/commands/plugin/state_file.rb +57 -0
  121. data/plugins/commands/provision/command.rb +34 -0
  122. data/plugins/commands/provision/plugin.rb +18 -0
  123. data/plugins/commands/reload/command.rb +37 -0
  124. data/plugins/commands/reload/plugin.rb +18 -0
  125. data/plugins/commands/resume/command.rb +25 -0
  126. data/plugins/commands/resume/plugin.rb +17 -0
  127. data/{lib/vagrant/command/ssh.rb → plugins/commands/ssh/command.rb} +17 -41
  128. data/plugins/commands/ssh/plugin.rb +17 -0
  129. data/{lib/vagrant/command/ssh_config.rb → plugins/commands/ssh_config/command.rb} +14 -16
  130. data/plugins/commands/ssh_config/plugin.rb +18 -0
  131. data/plugins/commands/status/command.rb +39 -0
  132. data/plugins/commands/status/plugin.rb +18 -0
  133. data/plugins/commands/suspend/command.rb +25 -0
  134. data/plugins/commands/suspend/plugin.rb +18 -0
  135. data/plugins/commands/up/command.rb +45 -0
  136. data/plugins/commands/up/plugin.rb +17 -0
  137. data/{lib/vagrant/command → plugins/commands/up}/start_mixins.rb +6 -6
  138. data/{lib/vagrant/communication/ssh.rb → plugins/communicators/ssh/communicator.rb} +139 -52
  139. data/plugins/communicators/ssh/plugin.rb +19 -0
  140. data/plugins/guests/arch/guest.rb +41 -0
  141. data/plugins/guests/arch/plugin.rb +15 -0
  142. data/{lib/vagrant/guest/debian.rb → plugins/guests/debian/guest.rb} +21 -13
  143. data/plugins/guests/debian/plugin.rb +15 -0
  144. data/{lib/vagrant/guest/fedora.rb → plugins/guests/fedora/guest.rb} +19 -14
  145. data/plugins/guests/fedora/plugin.rb +15 -0
  146. data/plugins/guests/freebsd/config.rb +13 -0
  147. data/plugins/guests/freebsd/guest.rb +70 -0
  148. data/plugins/guests/freebsd/plugin.rb +20 -0
  149. data/plugins/guests/gentoo/guest.rb +51 -0
  150. data/plugins/guests/gentoo/plugin.rb +15 -0
  151. data/plugins/guests/linux/config.rb +13 -0
  152. data/{lib/vagrant/guest/linux.rb → plugins/guests/linux/guest.rb} +35 -34
  153. data/plugins/guests/linux/plugin.rb +20 -0
  154. data/plugins/guests/openbsd/guest.rb +13 -0
  155. data/plugins/guests/openbsd/plugin.rb +15 -0
  156. data/{lib/vagrant/guest/redhat.rb → plugins/guests/redhat/guest.rb} +22 -15
  157. data/plugins/guests/redhat/plugin.rb +15 -0
  158. data/plugins/guests/solaris/config.rb +18 -0
  159. data/plugins/guests/solaris/guest.rb +73 -0
  160. data/plugins/guests/solaris/plugin.rb +20 -0
  161. data/plugins/guests/suse/guest.rb +24 -0
  162. data/plugins/guests/suse/plugin.rb +15 -0
  163. data/plugins/guests/ubuntu/guest.rb +44 -0
  164. data/plugins/guests/ubuntu/plugin.rb +15 -0
  165. data/{lib/vagrant/hosts/arch.rb → plugins/hosts/arch/host.rb} +18 -5
  166. data/plugins/hosts/arch/plugin.rb +15 -0
  167. data/{lib/vagrant/hosts/bsd.rb → plugins/hosts/bsd/host.rb} +16 -11
  168. data/plugins/hosts/bsd/plugin.rb +15 -0
  169. data/{lib/vagrant/hosts/fedora.rb → plugins/hosts/fedora/host.rb} +8 -4
  170. data/plugins/hosts/fedora/plugin.rb +15 -0
  171. data/{lib/vagrant/hosts/freebsd.rb → plugins/hosts/freebsd/host.rb} +10 -8
  172. data/plugins/hosts/freebsd/plugin.rb +15 -0
  173. data/{lib/vagrant/hosts/gentoo.rb → plugins/hosts/gentoo/host.rb} +7 -3
  174. data/plugins/hosts/gentoo/plugin.rb +15 -0
  175. data/{lib/vagrant/hosts/linux.rb → plugins/hosts/linux/host.rb} +12 -11
  176. data/plugins/hosts/linux/plugin.rb +15 -0
  177. data/{lib/vagrant/hosts/opensuse.rb → plugins/hosts/opensuse/host.rb} +8 -4
  178. data/plugins/hosts/opensuse/plugin.rb +15 -0
  179. data/{lib/vagrant/hosts/windows.rb → plugins/hosts/windows/host.rb} +5 -4
  180. data/plugins/hosts/windows/plugin.rb +15 -0
  181. data/plugins/kernel_v1/config/nfs.rb +20 -0
  182. data/plugins/kernel_v1/config/package.rb +17 -0
  183. data/plugins/kernel_v1/config/ssh.rb +46 -0
  184. data/plugins/kernel_v1/config/vagrant.rb +31 -0
  185. data/plugins/kernel_v1/config/vm.rb +184 -0
  186. data/plugins/kernel_v1/plugin.rb +44 -0
  187. data/plugins/kernel_v2/config/nfs.rb +10 -0
  188. data/plugins/kernel_v2/config/package.rb +9 -0
  189. data/plugins/kernel_v2/config/ssh.rb +35 -0
  190. data/plugins/kernel_v2/config/vagrant.rb +9 -0
  191. data/plugins/kernel_v2/config/vm.rb +314 -0
  192. data/plugins/kernel_v2/config/vm_provisioner.rb +40 -0
  193. data/plugins/kernel_v2/config/vm_subvm.rb +30 -0
  194. data/plugins/kernel_v2/plugin.rb +44 -0
  195. data/plugins/providers/virtualbox/action.rb +308 -0
  196. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/boot.rb +12 -16
  197. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_accessible.rb +5 -5
  198. data/plugins/providers/virtualbox/action/check_created.rb +21 -0
  199. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/check_guest_additions.rb +18 -11
  200. data/plugins/providers/virtualbox/action/check_running.rb +21 -0
  201. data/plugins/providers/virtualbox/action/check_virtualbox.rb +22 -0
  202. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clean_machine_folder.rb +5 -5
  203. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_forwarded_ports.rb +4 -4
  204. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_network_interfaces.rb +4 -4
  205. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/clear_shared_folders.rb +4 -5
  206. data/plugins/providers/virtualbox/action/created.rb +20 -0
  207. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/customize.rb +7 -7
  208. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/destroy.rb +5 -5
  209. data/plugins/providers/virtualbox/action/destroy_confirm.rb +17 -0
  210. data/plugins/providers/virtualbox/action/destroy_unused_network_interfaces.rb +16 -0
  211. data/plugins/providers/virtualbox/action/discard_state.rb +20 -0
  212. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/export.rb +7 -7
  213. data/plugins/providers/virtualbox/action/forced_halt.rb +25 -0
  214. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/forward_ports.rb +29 -42
  215. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/import.rb +15 -12
  216. data/plugins/providers/virtualbox/action/is_paused.rb +20 -0
  217. data/plugins/providers/virtualbox/action/is_running.rb +20 -0
  218. data/plugins/providers/virtualbox/action/is_saved.rb +20 -0
  219. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/match_mac_address.rb +5 -5
  220. data/plugins/providers/virtualbox/action/message_not_created.rb +16 -0
  221. data/plugins/providers/virtualbox/action/message_not_running.rb +16 -0
  222. data/plugins/providers/virtualbox/action/message_will_not_destroy.rb +17 -0
  223. data/plugins/providers/virtualbox/action/network.rb +366 -0
  224. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package.rb +4 -7
  225. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/package_vagrantfile.rb +5 -8
  226. data/plugins/providers/virtualbox/action/prepare_forwarded_port_collision_params.rb +35 -0
  227. data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +51 -0
  228. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/prune_nfs_exports.rb +5 -5
  229. data/plugins/providers/virtualbox/action/resume.rb +25 -0
  230. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/sane_defaults.rb +41 -32
  231. data/plugins/providers/virtualbox/action/set_name.rb +40 -0
  232. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/setup_package_files.rb +5 -8
  233. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/share_folders.rb +24 -25
  234. data/{lib/vagrant/action/vm → plugins/providers/virtualbox/action}/suspend.rb +5 -5
  235. data/plugins/providers/virtualbox/config.rb +82 -0
  236. data/plugins/providers/virtualbox/driver/base.rb +344 -0
  237. data/plugins/providers/virtualbox/driver/meta.rb +142 -0
  238. data/plugins/providers/virtualbox/driver/version_4_0.rb +485 -0
  239. data/plugins/providers/virtualbox/driver/version_4_1.rb +485 -0
  240. data/plugins/providers/virtualbox/driver/version_4_2.rb +475 -0
  241. data/plugins/providers/virtualbox/model/forwarded_port.rb +58 -0
  242. data/plugins/providers/virtualbox/plugin.rb +42 -0
  243. data/plugins/providers/virtualbox/provider.rb +92 -0
  244. data/plugins/providers/virtualbox/util/compile_forwarded_ports.rb +31 -0
  245. data/plugins/provisioners/chef/config/base.rb +65 -0
  246. data/plugins/provisioners/chef/config/chef_client.rb +39 -0
  247. data/plugins/provisioners/chef/config/chef_solo.rb +87 -0
  248. data/plugins/provisioners/chef/plugin.rb +33 -0
  249. data/plugins/provisioners/chef/provisioner/base.rb +91 -0
  250. data/plugins/provisioners/chef/provisioner/chef_client.rb +103 -0
  251. data/plugins/provisioners/chef/provisioner/chef_solo.rb +182 -0
  252. data/plugins/provisioners/puppet/config/puppet.rb +70 -0
  253. data/plugins/provisioners/puppet/config/puppet_server.rb +16 -0
  254. data/plugins/provisioners/puppet/plugin.rb +33 -0
  255. data/plugins/provisioners/puppet/provisioner/puppet.rb +110 -0
  256. data/plugins/provisioners/puppet/provisioner/puppet_server.rb +67 -0
  257. data/plugins/provisioners/shell/config.rb +46 -0
  258. data/plugins/provisioners/shell/plugin.rb +23 -0
  259. data/plugins/provisioners/shell/provisioner.rb +66 -0
  260. data/templates/commands/init/Vagrantfile.erb +33 -21
  261. data/templates/commands/ssh_config/config.erb +1 -0
  262. data/templates/config/messages.erb +14 -0
  263. data/templates/config/validation_failed.erb +3 -3
  264. data/templates/guests/arch/network_dhcp.erb +4 -7
  265. data/templates/guests/arch/network_static.erb +6 -7
  266. data/templates/guests/debian/network_dhcp.erb +5 -0
  267. data/templates/locales/en.yml +336 -100
  268. data/templates/rgloader.rb +9 -0
  269. data/test/acceptance/support/isolated_environment.rb +3 -2
  270. data/test/support/tempdir.rb +13 -4
  271. data/test/unit/base.rb +6 -0
  272. data/test/unit/support/dummy_provider.rb +16 -0
  273. data/test/unit/support/isolated_environment.rb +132 -0
  274. data/test/unit/support/shared/base_context.rb +74 -0
  275. data/test/unit/vagrant/action/builder_test.rb +88 -48
  276. data/test/unit/vagrant/action/builtin/call_test.rb +145 -0
  277. data/test/unit/vagrant/action/builtin/confirm_test.rb +36 -0
  278. data/test/unit/vagrant/action/builtin/env_set_test.rb +20 -0
  279. data/test/unit/vagrant/action/builtin/graceful_halt_test.rb +61 -0
  280. data/test/unit/vagrant/action/builtin/lock_test.rb +98 -0
  281. data/test/unit/vagrant/action/builtin/ssh_exec_test.rb +57 -0
  282. data/test/unit/vagrant/action/hook_test.rb +101 -0
  283. data/test/unit/vagrant/action/runner_test.rb +15 -9
  284. data/test/unit/vagrant/box_collection_test.rb +219 -38
  285. data/test/unit/vagrant/box_test.rb +94 -19
  286. data/test/unit/vagrant/cli_test.rb +27 -0
  287. data/test/unit/vagrant/config/loader_test.rb +154 -49
  288. data/test/unit/vagrant/config/v1/dummy_config_test.rb +24 -0
  289. data/test/unit/vagrant/config/v1/loader_test.rb +145 -0
  290. data/test/unit/vagrant/config/v1/root_test.rb +40 -0
  291. data/test/unit/vagrant/config/v2/dummy_config_test.rb +24 -0
  292. data/test/unit/vagrant/config/v2/loader_test.rb +151 -0
  293. data/test/unit/vagrant/config/v2/root_test.rb +97 -0
  294. data/test/unit/vagrant/config/v2/util_test.rb +21 -0
  295. data/test/unit/vagrant/config_test.rb +40 -1
  296. data/test/unit/vagrant/downloaders/base_test.rb +0 -4
  297. data/test/unit/vagrant/downloaders/file_test.rb +21 -9
  298. data/test/unit/vagrant/downloaders/http_test.rb +4 -0
  299. data/test/unit/vagrant/environment_test.rb +414 -63
  300. data/test/unit/vagrant/hosts_test.rb +10 -9
  301. data/test/unit/vagrant/machine_state_test.rb +26 -0
  302. data/test/unit/vagrant/machine_test.rb +418 -0
  303. data/test/unit/vagrant/{command/base_test.rb → plugin/v1/command_test.rb} +2 -9
  304. data/test/unit/vagrant/plugin/v1/communicator_test.rb +9 -0
  305. data/test/unit/vagrant/plugin/v1/config_test.rb +50 -0
  306. data/test/unit/vagrant/plugin/v1/host_test.rb +5 -0
  307. data/test/unit/vagrant/plugin/v1/manager_test.rb +114 -0
  308. data/test/unit/vagrant/plugin/v1/plugin_test.rb +267 -0
  309. data/test/unit/vagrant/plugin/v1/provider_test.rb +18 -0
  310. data/test/unit/vagrant/plugin/v2/command_test.rb +238 -0
  311. data/test/unit/vagrant/plugin/v2/communicator_test.rb +9 -0
  312. data/test/unit/vagrant/plugin/v2/components_test.rb +17 -0
  313. data/test/unit/vagrant/plugin/v2/config_test.rb +60 -0
  314. data/test/unit/vagrant/plugin/v2/host_test.rb +5 -0
  315. data/test/unit/vagrant/plugin/v2/manager_test.rb +157 -0
  316. data/test/unit/vagrant/plugin/v2/plugin_test.rb +287 -0
  317. data/test/unit/vagrant/plugin/v2/provider_test.rb +18 -0
  318. data/test/unit/vagrant/registry_test.rb +59 -5
  319. data/test/unit/vagrant/util/scoped_hash_override_test.rb +48 -0
  320. data/test/unit/vagrant/util/ssh_test.rb +30 -0
  321. data/test/unit/vagrant/util/string_block_editor_test.rb +98 -0
  322. data/test/unit/vagrant/util/which_test.rb +43 -0
  323. data/test/unit/vagrant_test.rb +42 -13
  324. data/vagrant.gemspec +6 -7
  325. data/vagrant.gemspecbak +6 -7
  326. metadata +273 -358
  327. data/lib/vagrant/action/box/destroy.rb +0 -25
  328. data/lib/vagrant/action/box/download.rb +0 -84
  329. data/lib/vagrant/action/box/package.rb +0 -19
  330. data/lib/vagrant/action/box/unpackage.rb +0 -61
  331. data/lib/vagrant/action/box/verify.rb +0 -23
  332. data/lib/vagrant/action/builtin.rb +0 -171
  333. data/lib/vagrant/action/env/set.rb +0 -21
  334. data/lib/vagrant/action/environment.rb +0 -12
  335. data/lib/vagrant/action/general/check_virtualbox.rb +0 -28
  336. data/lib/vagrant/action/general/validate.rb +0 -18
  337. data/lib/vagrant/action/vm/check_box.rb +0 -33
  338. data/lib/vagrant/action/vm/check_port_collisions.rb +0 -89
  339. data/lib/vagrant/action/vm/default_name.rb +0 -22
  340. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +0 -20
  341. data/lib/vagrant/action/vm/discard_state.rb +0 -22
  342. data/lib/vagrant/action/vm/halt.rb +0 -32
  343. data/lib/vagrant/action/vm/host_name.rb +0 -21
  344. data/lib/vagrant/action/vm/network.rb +0 -403
  345. data/lib/vagrant/action/vm/nfs.rb +0 -196
  346. data/lib/vagrant/action/vm/provision.rb +0 -61
  347. data/lib/vagrant/action/vm/provisioner_cleanup.rb +0 -26
  348. data/lib/vagrant/action/vm/resume.rb +0 -20
  349. data/lib/vagrant/command.rb +0 -24
  350. data/lib/vagrant/command/base.rb +0 -167
  351. data/lib/vagrant/command/box.rb +0 -58
  352. data/lib/vagrant/command/box_add.rb +0 -37
  353. data/lib/vagrant/command/box_list.rb +0 -28
  354. data/lib/vagrant/command/box_remove.rb +0 -27
  355. data/lib/vagrant/command/box_repackage.rb +0 -27
  356. data/lib/vagrant/command/destroy.rb +0 -64
  357. data/lib/vagrant/command/gem.rb +0 -39
  358. data/lib/vagrant/command/halt.rb +0 -39
  359. data/lib/vagrant/command/package.rb +0 -75
  360. data/lib/vagrant/command/provision.rb +0 -40
  361. data/lib/vagrant/command/reload.rb +0 -39
  362. data/lib/vagrant/command/resume.rb +0 -33
  363. data/lib/vagrant/command/status.rb +0 -36
  364. data/lib/vagrant/command/suspend.rb +0 -33
  365. data/lib/vagrant/command/up.rb +0 -40
  366. data/lib/vagrant/communication.rb +0 -7
  367. data/lib/vagrant/communication/base.rb +0 -56
  368. data/lib/vagrant/config/base.rb +0 -82
  369. data/lib/vagrant/config/error_recorder.rb +0 -19
  370. data/lib/vagrant/config/nfs.rb +0 -8
  371. data/lib/vagrant/config/package.rb +0 -7
  372. data/lib/vagrant/config/ssh.rb +0 -27
  373. data/lib/vagrant/config/top.rb +0 -72
  374. data/lib/vagrant/config/vagrant.rb +0 -14
  375. data/lib/vagrant/config/vm.rb +0 -168
  376. data/lib/vagrant/config/vm/provisioner.rb +0 -52
  377. data/lib/vagrant/config/vm/sub_vm.rb +0 -17
  378. data/lib/vagrant/data_store.rb +0 -92
  379. data/lib/vagrant/driver.rb +0 -8
  380. data/lib/vagrant/driver/virtualbox.rb +0 -134
  381. data/lib/vagrant/driver/virtualbox_4_0.rb +0 -459
  382. data/lib/vagrant/driver/virtualbox_4_1.rb +0 -459
  383. data/lib/vagrant/driver/virtualbox_4_2.rb +0 -606
  384. data/lib/vagrant/driver/virtualbox_base.rb +0 -326
  385. data/lib/vagrant/guest.rb +0 -18
  386. data/lib/vagrant/guest/arch.rb +0 -56
  387. data/lib/vagrant/guest/base.rb +0 -99
  388. data/lib/vagrant/guest/freebsd.rb +0 -86
  389. data/lib/vagrant/guest/gentoo.rb +0 -46
  390. data/lib/vagrant/guest/linux/config.rb +0 -19
  391. data/lib/vagrant/guest/linux/error.rb +0 -9
  392. data/lib/vagrant/guest/openbsd.rb +0 -20
  393. data/lib/vagrant/guest/solaris.rb +0 -118
  394. data/lib/vagrant/guest/suse.rb +0 -17
  395. data/lib/vagrant/guest/ubuntu.rb +0 -23
  396. data/lib/vagrant/hosts/base.rb +0 -66
  397. data/lib/vagrant/provisioners.rb +0 -12
  398. data/lib/vagrant/provisioners/base.rb +0 -44
  399. data/lib/vagrant/provisioners/chef.rb +0 -168
  400. data/lib/vagrant/provisioners/chef_client.rb +0 -132
  401. data/lib/vagrant/provisioners/chef_solo.rb +0 -234
  402. data/lib/vagrant/provisioners/puppet.rb +0 -176
  403. data/lib/vagrant/provisioners/puppet_server.rb +0 -78
  404. data/lib/vagrant/provisioners/shell.rb +0 -103
  405. data/lib/vagrant/vm.rb +0 -195
  406. data/test/buildbot/README.md +0 -72
  407. data/test/buildbot/buildbot_config/__init__.py +0 -0
  408. data/test/buildbot/buildbot_config/config/__init__.py +0 -0
  409. data/test/buildbot/buildbot_config/config/loader.py +0 -24
  410. data/test/buildbot/buildbot_config/config/master.py +0 -24
  411. data/test/buildbot/buildbot_config/config/slave.py +0 -22
  412. data/test/buildbot/buildbot_config/master/__init__.py +0 -6
  413. data/test/buildbot/buildbot_config/master/builders.py +0 -78
  414. data/test/buildbot/buildbot_config/master/buildsteps.py +0 -100
  415. data/test/buildbot/buildbot_config/master/change_sources.py +0 -8
  416. data/test/buildbot/buildbot_config/master/schedulers.py +0 -32
  417. data/test/buildbot/buildbot_config/master/slaves.py +0 -60
  418. data/test/buildbot/buildbot_config/master/status.py +0 -52
  419. data/test/buildbot/master/Makefile.sample +0 -28
  420. data/test/buildbot/master/buildbot.tac +0 -36
  421. data/test/buildbot/master/master.cfg +0 -67
  422. data/test/buildbot/master/public_html/bg_gradient.jpg +0 -0
  423. data/test/buildbot/master/public_html/default.css +0 -545
  424. data/test/buildbot/master/public_html/favicon.ico +0 -0
  425. data/test/buildbot/master/public_html/robots.txt +0 -10
  426. data/test/buildbot/master/public_html/static/css/bootstrap-1.4.0.min.css +0 -356
  427. data/test/buildbot/master/public_html/static/css/prettify.css +0 -97
  428. data/test/buildbot/master/public_html/static/css/syntax.css +0 -60
  429. data/test/buildbot/master/public_html/static/css/vagrant.base.css +0 -205
  430. data/test/buildbot/master/public_html/static/images/base_box_mac.jpg +0 -0
  431. data/test/buildbot/master/public_html/static/images/getting-started/success.jpg +0 -0
  432. data/test/buildbot/master/public_html/static/images/icons/error.png +0 -0
  433. data/test/buildbot/master/public_html/static/images/vagrant_chilling.png +0 -0
  434. data/test/buildbot/master/public_html/static/images/vagrant_holding.png +0 -0
  435. data/test/buildbot/master/public_html/static/images/vagrant_looking.png +0 -0
  436. data/test/buildbot/master/public_html/static/images/windows/alter_path.jpg +0 -0
  437. data/test/buildbot/master/public_html/static/images/windows/edit_path.jpg +0 -0
  438. data/test/buildbot/master/public_html/static/images/windows/environment_variables_button.jpg +0 -0
  439. data/test/buildbot/master/public_html/static/images/windows/port_and_ppk_path.jpg +0 -0
  440. data/test/buildbot/master/public_html/static/images/windows/ppk_selection.jpg +0 -0
  441. data/test/buildbot/master/public_html/static/images/windows/putty_first_screen.jpg +0 -0
  442. data/test/buildbot/master/public_html/static/images/windows/save_result.jpg +0 -0
  443. data/test/buildbot/master/public_html/static/images/windows/vbox_manage_default_location.jpg +0 -0
  444. data/test/buildbot/master/public_html/static/js/bootstrap-tabs.js +0 -80
  445. data/test/buildbot/master/public_html/static/js/jquery-1.7.min.js +0 -4
  446. data/test/buildbot/master/templates/authfail.html +0 -9
  447. data/test/buildbot/master/templates/build.html +0 -205
  448. data/test/buildbot/master/templates/builder.html +0 -118
  449. data/test/buildbot/master/templates/builders.html +0 -33
  450. data/test/buildbot/master/templates/buildslave.html +0 -72
  451. data/test/buildbot/master/templates/buildslaves.html +0 -70
  452. data/test/buildbot/master/templates/change.html +0 -15
  453. data/test/buildbot/master/templates/layouts/base.html +0 -58
  454. data/test/buildbot/master/templates/macros/box.html +0 -37
  455. data/test/buildbot/master/templates/macros/build_line.html +0 -50
  456. data/test/buildbot/master/templates/macros/change.html +0 -81
  457. data/test/buildbot/master/templates/macros/forms.html +0 -300
  458. data/test/buildbot/master/templates/root.html +0 -42
  459. data/test/buildbot/master/templates/waterfall.html +0 -53
  460. data/test/buildbot/requirements.txt +0 -4
  461. data/test/buildbot/scripts/deploy.sh +0 -38
  462. data/test/buildbot/scripts/setup.sh +0 -107
  463. data/test/buildbot/slave/buildbot.tac +0 -43
  464. data/test/buildbot/slave/info/admin +0 -1
  465. data/test/buildbot/slave/info/host +0 -1
  466. data/test/buildbot/tests/__init__.py +0 -0
  467. data/test/buildbot/tests/master/__init__.py +0 -0
  468. data/test/buildbot/tests/master/test_slaves.py +0 -41
  469. data/test/buildbot/vendor/choices-0.4.0.tar.gz +0 -0
  470. data/test/unit/vagrant/action/environment_test.rb +0 -16
  471. data/test/unit/vagrant/config/base_test.rb +0 -48
  472. data/test/unit/vagrant/config/ssh_test.rb +0 -17
  473. data/test/unit/vagrant/config/top_test.rb +0 -69
  474. data/test/unit/vagrant/config/vm_test.rb +0 -71
  475. data/test/unit/vagrant/data_store_test.rb +0 -79
  476. data/test/unit_legacy/locales/en.yml +0 -8
  477. data/test/unit_legacy/test_helper.rb +0 -32
  478. data/test/unit_legacy/vagrant/action/box/destroy_test.rb +0 -18
  479. data/test/unit_legacy/vagrant/action/box/download_test.rb +0 -125
  480. data/test/unit_legacy/vagrant/action/box/package_test.rb +0 -25
  481. data/test/unit_legacy/vagrant/action/box/unpackage_test.rb +0 -84
  482. data/test/unit_legacy/vagrant/action/box/verify_test.rb +0 -30
  483. data/test/unit_legacy/vagrant/action/env/set_test.rb +0 -24
  484. data/test/unit_legacy/vagrant/action/general/package_test.rb +0 -268
  485. data/test/unit_legacy/vagrant/action/general/validate_test.rb +0 -31
  486. data/test/unit_legacy/vagrant/action/vm/boot_test.rb +0 -66
  487. data/test/unit_legacy/vagrant/action/vm/check_accessible_test.rb +0 -61
  488. data/test/unit_legacy/vagrant/action/vm/check_box_test.rb +0 -61
  489. data/test/unit_legacy/vagrant/action/vm/check_guest_additions_test.rb +0 -9
  490. data/test/unit_legacy/vagrant/action/vm/clean_machine_folder_test.rb +0 -84
  491. data/test/unit_legacy/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -52
  492. data/test/unit_legacy/vagrant/action/vm/clear_nfs_exports_test.rb +0 -22
  493. data/test/unit_legacy/vagrant/action/vm/clear_shared_folders_test.rb +0 -40
  494. data/test/unit_legacy/vagrant/action/vm/customize_test.rb +0 -37
  495. data/test/unit_legacy/vagrant/action/vm/destroy_test.rb +0 -25
  496. data/test/unit_legacy/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -49
  497. data/test/unit_legacy/vagrant/action/vm/discard_state_test.rb +0 -45
  498. data/test/unit_legacy/vagrant/action/vm/export_test.rb +0 -107
  499. data/test/unit_legacy/vagrant/action/vm/forward_ports_helpers_test.rb +0 -77
  500. data/test/unit_legacy/vagrant/action/vm/forward_ports_test.rb +0 -197
  501. data/test/unit_legacy/vagrant/action/vm/halt_test.rb +0 -79
  502. data/test/unit_legacy/vagrant/action/vm/host_name_test.rb +0 -36
  503. data/test/unit_legacy/vagrant/action/vm/import_test.rb +0 -66
  504. data/test/unit_legacy/vagrant/action/vm/match_mac_address_test.rb +0 -40
  505. data/test/unit_legacy/vagrant/action/vm/modify_test.rb +0 -38
  506. data/test/unit_legacy/vagrant/action/vm/network_test.rb +0 -286
  507. data/test/unit_legacy/vagrant/action/vm/nfs_helpers_test.rb +0 -26
  508. data/test/unit_legacy/vagrant/action/vm/nfs_test.rb +0 -260
  509. data/test/unit_legacy/vagrant/action/vm/package_test.rb +0 -25
  510. data/test/unit_legacy/vagrant/action/vm/package_vagrantfile_test.rb +0 -46
  511. data/test/unit_legacy/vagrant/action/vm/provision_test.rb +0 -65
  512. data/test/unit_legacy/vagrant/action/vm/provisioner_cleanup_test.rb +0 -56
  513. data/test/unit_legacy/vagrant/action/vm/resume_test.rb +0 -35
  514. data/test/unit_legacy/vagrant/action/vm/share_folders_test.rb +0 -144
  515. data/test/unit_legacy/vagrant/action/vm/suspend_test.rb +0 -35
  516. data/test/unit_legacy/vagrant/action_test.rb +0 -89
  517. data/test/unit_legacy/vagrant/box_collection_test.rb +0 -45
  518. data/test/unit_legacy/vagrant/box_test.rb +0 -74
  519. data/test/unit_legacy/vagrant/cli_test.rb +0 -35
  520. data/test/unit_legacy/vagrant/command/base_test.rb +0 -23
  521. data/test/unit_legacy/vagrant/command/group_base_test.rb +0 -15
  522. data/test/unit_legacy/vagrant/command/helpers_test.rb +0 -88
  523. data/test/unit_legacy/vagrant/command/init_test.rb +0 -10
  524. data/test/unit_legacy/vagrant/command/package_test.rb +0 -27
  525. data/test/unit_legacy/vagrant/config/base_test.rb +0 -52
  526. data/test/unit_legacy/vagrant/config/error_recorder_test.rb +0 -18
  527. data/test/unit_legacy/vagrant/config/ssh_test.rb +0 -12
  528. data/test/unit_legacy/vagrant/config/vagrant_test.rb +0 -35
  529. data/test/unit_legacy/vagrant/config/vm/provisioner_test.rb +0 -92
  530. data/test/unit_legacy/vagrant/config/vm_test.rb +0 -47
  531. data/test/unit_legacy/vagrant/config_test.rb +0 -148
  532. data/test/unit_legacy/vagrant/downloaders/http_test.rb +0 -93
  533. data/test/unit_legacy/vagrant/environment_test.rb +0 -539
  534. data/test/unit_legacy/vagrant/errors_test.rb +0 -42
  535. data/test/unit_legacy/vagrant/hosts/base_test.rb +0 -46
  536. data/test/unit_legacy/vagrant/hosts/bsd_test.rb +0 -53
  537. data/test/unit_legacy/vagrant/hosts/linux_test.rb +0 -54
  538. data/test/unit_legacy/vagrant/plugin_test.rb +0 -9
  539. data/test/unit_legacy/vagrant/provisioners/base_test.rb +0 -63
  540. data/test/unit_legacy/vagrant/provisioners/chef_client_test.rb +0 -190
  541. data/test/unit_legacy/vagrant/provisioners/chef_solo_test.rb +0 -115
  542. data/test/unit_legacy/vagrant/provisioners/chef_test.rb +0 -209
  543. data/test/unit_legacy/vagrant/provisioners/puppet_server_test.rb +0 -68
  544. data/test/unit_legacy/vagrant/provisioners/puppet_test.rb +0 -182
  545. data/test/unit_legacy/vagrant/provisioners/shell_test.rb +0 -79
  546. data/test/unit_legacy/vagrant/ssh/session_test.rb +0 -40
  547. data/test/unit_legacy/vagrant/ssh_test.rb +0 -304
  548. data/test/unit_legacy/vagrant/systems/base_test.rb +0 -18
  549. data/test/unit_legacy/vagrant/systems/linux_test.rb +0 -104
  550. data/test/unit_legacy/vagrant/util/busy_test.rb +0 -106
  551. data/test/unit_legacy/vagrant/util/counter_test.rb +0 -29
  552. data/test/unit_legacy/vagrant/util/platform_test.rb +0 -18
  553. data/test/unit_legacy/vagrant/util/stacked_proc_runner_test.rb +0 -43
  554. data/test/unit_legacy/vagrant/util/template_renderer_test.rb +0 -145
  555. data/test/unit_legacy/vagrant/vm_test.rb +0 -300
  556. data/vagrant-1.1.4.gem +0 -0
  557. data/vagrantup-0.1.0.gem +0 -0
  558. data/vagrantup-0.1.1.gem +0 -0
  559. data/vagrantup-0.1.2.gem +0 -0
  560. data/vagrantup-0.1.3.gem +0 -0
  561. data/vagrantup-0.1.4.gem +0 -0
  562. data/vagrantup-0.2.0.gem +0 -0
  563. data/vagrantup-0.3.0.gem +0 -0
  564. data/vagrantup-0.3.1.gem +0 -0
  565. data/vagrantup-0.3.2.gem +0 -0
  566. data/vagrantup-0.3.3.gem +0 -0
  567. data/vagrantup-0.3.4.gem +0 -0
  568. data/vagrantup-0.4.0.gem +0 -0
  569. data/vagrantup-0.4.1.gem +0 -0
  570. data/vagrantup-0.4.3.dev.gem +0 -0
  571. data/vagrantup-0.5.0.gem +0 -0
  572. data/vagrantup-0.5.1.gem +0 -0
  573. data/vagrantup-0.5.2.gem +0 -0
  574. data/vagrantup-0.5.3.gem +0 -0
  575. data/vagrantup-0.5.4.gem +0 -0
  576. data/vagrantup-0.6.0.gem +0 -0
  577. data/vagrantup-0.6.1.gem +0 -0
  578. data/vagrantup-0.6.2.gem +0 -0
  579. data/vagrantup-0.6.3.gem +0 -0
  580. data/vagrantup-0.6.4.gem +0 -0
  581. data/vagrantup-0.6.5.gem +0 -0
  582. data/vagrantup-0.6.6.gem +0 -0
  583. data/vagrantup-0.6.7.gem +0 -0
  584. data/vagrantup-0.6.8.gem +0 -0
  585. data/vagrantup-0.6.9.gem +0 -0
  586. data/vagrantup-0.7.0.gem +0 -0
  587. data/vagrantup-0.7.1.gem +0 -0
  588. data/vagrantup-0.7.2.gem +0 -0
  589. data/vagrantup-0.7.3.gem +0 -0
  590. data/vagrantup-0.7.4.gem +0 -0
  591. data/vagrantup-0.7.5.gem +0 -0
  592. data/vagrantup-0.7.6.gem +0 -0
  593. data/vagrantup-0.7.7.gem +0 -0
  594. data/vagrantup-0.7.8.gem +0 -0
  595. data/vagrantup-0.8.0.gem +0 -0
  596. data/vagrantup-0.8.1.gem +0 -0
  597. data/vagrantup-0.8.10.gem +0 -0
  598. data/vagrantup-0.8.2.gem +0 -0
  599. data/vagrantup-0.8.3.gem +0 -0
  600. data/vagrantup-0.8.4.gem +0 -0
  601. data/vagrantup-0.8.5.gem +0 -0
  602. data/vagrantup-0.8.6.gem +0 -0
  603. data/vagrantup-0.8.7.gem +0 -0
  604. data/vagrantup-0.8.8.gem +0 -0
  605. data/vagrantup-0.8.9.gem +0 -0
  606. data/vagrantup-0.9.0.gem +0 -0
  607. data/vagrantup-0.9.1.gem +0 -0
  608. data/vagrantup-0.9.2.gem +0 -0
  609. data/vagrantup-0.9.3.gem +0 -0
  610. data/vagrantup-0.9.4.gem +0 -0
  611. data/vagrantup-0.9.5.gem +0 -0
  612. data/vagrantup-0.9.6.gem +0 -0
  613. data/vagrantup-0.9.7.gem +0 -0
  614. data/vagrantup-0.9.99.1.gem +0 -0
  615. data/vagrantup-0.9.99.2.gem +0 -0
  616. data/vagrantup-1.0.0.gem +0 -0
  617. data/vagrantup-1.0.1.gem +0 -0
  618. data/vagrantup-1.0.2.gem +0 -0
  619. data/vagrantup-1.0.3.gem +0 -0
  620. data/vagrantup-1.0.4.gem +0 -0
  621. data/vagrantup-1.0.5.gem +0 -0
  622. data/vagrantup-1.0.6.gem +0 -0
  623. data/vagrantup-1.1.4.gem +0 -0
@@ -1,29 +1,77 @@
1
1
  require File.expand_path("../../base", __FILE__)
2
+ require "json"
2
3
  require "pathname"
4
+ require "tempfile"
5
+ require "tmpdir"
3
6
 
4
7
  require "vagrant/util/file_mode"
5
8
 
6
- require "support/tempdir"
7
-
8
9
  describe Vagrant::Environment do
9
10
  include_context "unit"
10
11
 
11
- let(:home_path) { Pathname.new(Tempdir.new.path) }
12
- let(:instance) { described_class.new(:home_path => home_path) }
12
+ let(:env) do
13
+ isolated_environment.tap do |e|
14
+ e.box2("base", :virtualbox)
15
+ e.vagrantfile <<-VF
16
+ Vagrant.configure("2") do |config|
17
+ config.vm.box = "base"
18
+ end
19
+ VF
20
+ end
21
+ end
22
+
23
+ let(:instance) { env.create_vagrant_env }
24
+
25
+ describe "active machines" do
26
+ it "should be empty if the machines folder doesn't exist" do
27
+ folder = instance.local_data_path.join("machines")
28
+ folder.should_not be_exist
29
+
30
+ instance.active_machines.should be_empty
31
+ end
32
+
33
+ it "should return the name and provider of active machines" do
34
+ machines = instance.local_data_path.join("machines")
35
+
36
+ # Valid machine, with "foo" and virtualbox
37
+ machine_foo = machines.join("foo/virtualbox")
38
+ machine_foo.mkpath
39
+ machine_foo.join("id").open("w+") { |f| f.write("") }
40
+
41
+ # Invalid machine (no ID)
42
+ machine_bar = machines.join("bar/virtualbox")
43
+ machine_bar.mkpath
44
+
45
+ instance.active_machines.should == [[:foo, :virtualbox]]
46
+ end
47
+ end
13
48
 
14
49
  describe "current working directory" do
15
50
  it "is the cwd by default" do
16
- described_class.new.cwd.should == Pathname.new(Dir.pwd)
51
+ Dir.mktmpdir do |temp_dir|
52
+ Dir.chdir(temp_dir) do
53
+ with_temp_env("VAGRANT_CWD" => nil) do
54
+ described_class.new.cwd.should == Pathname.new(Dir.pwd)
55
+ end
56
+ end
57
+ end
17
58
  end
18
59
 
19
60
  it "is set to the cwd given" do
20
- directory = File.dirname(__FILE__)
21
- instance = described_class.new(:cwd => directory)
22
- instance.cwd.should == Pathname.new(directory)
61
+ Dir.mktmpdir do |directory|
62
+ instance = described_class.new(:cwd => directory)
63
+ instance.cwd.should == Pathname.new(directory)
64
+ end
23
65
  end
24
66
 
25
67
  it "is set to the environmental variable VAGRANT_CWD" do
26
- pending "A good temporary ENV thing"
68
+ Dir.mktmpdir do |directory|
69
+ instance = with_temp_env("VAGRANT_CWD" => directory) do
70
+ described_class.new
71
+ end
72
+
73
+ instance.cwd.should == Pathname.new(directory)
74
+ end
27
75
  end
28
76
 
29
77
  it "raises an exception if the CWD doesn't exist" do
@@ -34,13 +82,20 @@ describe Vagrant::Environment do
34
82
 
35
83
  describe "home path" do
36
84
  it "is set to the home path given" do
37
- dir = Tempdir.new.path
38
- instance = described_class.new(:home_path => dir)
39
- instance.home_path.should == Pathname.new(dir)
85
+ Dir.mktmpdir do |dir|
86
+ instance = described_class.new(:home_path => dir)
87
+ instance.home_path.should == Pathname.new(dir)
88
+ end
40
89
  end
41
90
 
42
91
  it "is set to the environmental variable VAGRANT_HOME" do
43
- pending "A good temporary ENV thing"
92
+ Dir.mktmpdir do |dir|
93
+ instance = with_temp_env("VAGRANT_HOME" => dir) do
94
+ described_class.new
95
+ end
96
+
97
+ instance.home_path.should == Pathname.new(dir)
98
+ end
44
99
  end
45
100
 
46
101
  it "is set to the DEFAULT_HOME by default" do
@@ -55,6 +110,80 @@ describe Vagrant::Environment do
55
110
  end
56
111
  end
57
112
 
113
+ describe "local data path" do
114
+ it "is set to the proper default" do
115
+ default = instance.root_path.join(described_class::DEFAULT_LOCAL_DATA)
116
+ instance.local_data_path.should == default
117
+ end
118
+
119
+ it "is expanded relative to the cwd" do
120
+ instance = described_class.new(:local_data_path => "foo")
121
+ instance.local_data_path.should == instance.cwd.join("foo")
122
+ end
123
+
124
+ it "is set to the given value" do
125
+ Dir.mktmpdir do |dir|
126
+ instance = described_class.new(:local_data_path => dir)
127
+ instance.local_data_path.to_s.should == dir
128
+ end
129
+ end
130
+
131
+ describe "upgrading V1 dotfiles" do
132
+ let(:v1_dotfile_tempfile) { Tempfile.new("vagrant") }
133
+ let(:v1_dotfile) { Pathname.new(v1_dotfile_tempfile.path) }
134
+ let(:local_data_path) { v1_dotfile_tempfile.path }
135
+ let(:instance) { described_class.new(:local_data_path => local_data_path) }
136
+
137
+ it "should be fine if dotfile is empty" do
138
+ v1_dotfile.open("w+") do |f|
139
+ f.write("")
140
+ end
141
+
142
+ expect { instance }.to_not raise_error
143
+ Pathname.new(local_data_path).should be_directory
144
+ end
145
+
146
+ it "should upgrade all active VMs" do
147
+ active_vms = {
148
+ "foo" => "foo_id",
149
+ "bar" => "bar_id"
150
+ }
151
+
152
+ v1_dotfile.open("w+") do |f|
153
+ f.write(JSON.dump({
154
+ "active" => active_vms
155
+ }))
156
+ end
157
+
158
+ expect { instance }.to_not raise_error
159
+
160
+ local_data_pathname = Pathname.new(local_data_path)
161
+ foo_id_file = local_data_pathname.join("machines/foo/virtualbox/id")
162
+ foo_id_file.should be_file
163
+ foo_id_file.read.should == "foo_id"
164
+
165
+ bar_id_file = local_data_pathname.join("machines/bar/virtualbox/id")
166
+ bar_id_file.should be_file
167
+ bar_id_file.read.should == "bar_id"
168
+ end
169
+
170
+ it "should raise an error if invalid JSON" do
171
+ v1_dotfile.open("w+") do |f|
172
+ f.write("bad")
173
+ end
174
+
175
+ expect { instance }.
176
+ to raise_error(Vagrant::Errors::DotfileUpgradeJSONError)
177
+ end
178
+ end
179
+ end
180
+
181
+ describe "default provider" do
182
+ it "should return virtualbox" do
183
+ instance.default_provider.should == :virtualbox
184
+ end
185
+ end
186
+
58
187
  describe "copying the private SSH key" do
59
188
  it "copies the SSH key into the home directory" do
60
189
  env = isolated_environment
@@ -86,41 +215,61 @@ describe Vagrant::Environment do
86
215
  end
87
216
  end
88
217
 
89
- describe "action registry" do
90
- it "has an action registry" do
91
- instance.action_registry.should be_kind_of(Vagrant::Registry)
218
+ describe "#hook" do
219
+ it "should call the action runner with the proper hook" do
220
+ hook_name = :foo
221
+
222
+ instance.action_runner.should_receive(:run).with do |callable, env|
223
+ env[:action_name].should == hook_name
224
+ end
225
+
226
+ instance.hook(hook_name)
92
227
  end
93
228
 
94
- it "should have the built-in actions in the registry" do
95
- instance.action_registry.get(:provision).should_not be_nil
229
+ it "should return the result of the action runner run" do
230
+ instance.action_runner.should_receive(:run).and_return(:foo)
231
+
232
+ instance.hook(:bar).should == :foo
96
233
  end
97
234
  end
98
235
 
99
- describe "primary VM" do
100
- before do
101
- # This is really nasty but we do this to remove the dependency on
102
- # having VirtualBox installed to run tests.
103
- Vagrant::Driver::VirtualBox.stub(:new) do |uuid|
104
- double("vm-#{uuid}")
105
- end
236
+ describe "primary machine name" do
237
+ it "should be the only machine if not a multi-machine environment" do
238
+ instance.primary_machine_name.should == instance.machine_names.first
106
239
  end
107
240
 
108
- it "should be the only VM if not a multi-VM environment" do
109
- instance.primary_vm.should == instance.vms.values.first
241
+ it "should be the machine marked as the primary" do
242
+ environment = isolated_environment do |env|
243
+ env.vagrantfile(<<-VF)
244
+ Vagrant.configure("2") do |config|
245
+ config.vm.box = "base"
246
+ config.vm.define :foo
247
+ config.vm.define :bar, :primary => true
248
+ end
249
+ VF
250
+
251
+ env.box2("base", :virtualbox)
252
+ end
253
+
254
+ env = environment.create_vagrant_env
255
+ env.primary_machine_name.should == :bar
110
256
  end
111
257
 
112
- it "should be the VM marked as the primary" do
258
+ it "should be nil if no primary is specified in a multi-machine environment" do
113
259
  environment = isolated_environment do |env|
114
260
  env.vagrantfile(<<-VF)
115
- Vagrant::Config.run do |config|
261
+ Vagrant.configure("2") do |config|
262
+ config.vm.box = "base"
116
263
  config.vm.define :foo
117
- config.vm.define :bar, :primary => true
264
+ config.vm.define :bar
118
265
  end
119
266
  VF
267
+
268
+ env.box2("base", :virtualbox)
120
269
  end
121
270
 
122
271
  env = environment.create_vagrant_env
123
- env.primary_vm.should == env.vms[:bar]
272
+ env.primary_machine_name.should be_nil
124
273
  end
125
274
  end
126
275
 
@@ -128,93 +277,295 @@ VF
128
277
  it "should load global configuration" do
129
278
  environment = isolated_environment do |env|
130
279
  env.vagrantfile(<<-VF)
131
- Vagrant::Config.run do |config|
132
- config.vagrant.dotfile_name = "foo"
280
+ Vagrant.configure("2") do |config|
281
+ config.ssh.port = 200
133
282
  end
134
283
  VF
135
284
  end
136
285
 
137
286
  env = environment.create_vagrant_env
138
- env.config.global.vagrant.dotfile_name.should == "foo"
287
+ env.config_global.ssh.port.should == 200
139
288
  end
140
289
 
141
290
  it "should load from a custom Vagrantfile" do
142
291
  environment = isolated_environment do |env|
143
292
  env.file("non_standard_name", <<-VF)
144
- Vagrant::Config.run do |config|
145
- config.vagrant.dotfile_name = "custom"
293
+ Vagrant.configure("2") do |config|
294
+ config.ssh.port = 200
146
295
  end
147
296
  VF
148
297
  end
149
298
 
150
299
  env = environment.create_vagrant_env(:vagrantfile_name => "non_standard_name")
151
- env.config.global.vagrant.dotfile_name.should == "custom"
300
+ env.config_global.ssh.port.should == 200
152
301
  end
153
302
 
154
- it "should load VM configuration" do
303
+ it "should load from a custom Vagrantfile specified by env var" do
304
+ environment = isolated_environment do |env|
305
+ env.file("some_other_name", <<-VF)
306
+ Vagrant.configure("2") do |config|
307
+ config.ssh.port = 400
308
+ end
309
+ VF
310
+ end
311
+
312
+ env = with_temp_env("VAGRANT_VAGRANTFILE" => "some_other_name") do
313
+ environment.create_vagrant_env
314
+ end
315
+
316
+ env.config_global.ssh.port.should == 400
317
+ end
318
+ end
319
+
320
+ describe "ui" do
321
+ it "should be a silent UI by default" do
322
+ described_class.new.ui.should be_kind_of(Vagrant::UI::Silent)
323
+ end
324
+
325
+ it "should be a UI given in the constructor" do
326
+ # Create a custom UI for our test
327
+ class CustomUI < Vagrant::UI::Interface; end
328
+
329
+ instance = described_class.new(:ui_class => CustomUI)
330
+ instance.ui.should be_kind_of(CustomUI)
331
+ end
332
+ end
333
+
334
+ describe "#unload" do
335
+ it "should run the unload hook" do
336
+ instance.should_receive(:hook).with(:environment_unload).once
337
+ instance.unload
338
+ end
339
+ end
340
+
341
+ describe "getting a machine" do
342
+ # A helper to register a provider for use in tests.
343
+ def register_provider(name, config_class=nil)
344
+ provider_cls = Class.new(Vagrant.plugin("2", :provider))
345
+
346
+ register_plugin("2") do |p|
347
+ p.provider(name) { provider_cls }
348
+
349
+ if config_class
350
+ p.config(name, :provider) { config_class }
351
+ end
352
+ end
353
+
354
+ provider_cls
355
+ end
356
+
357
+ it "should return a machine object with the correct provider" do
358
+ # Create a provider
359
+ foo_provider = register_provider("foo")
360
+
361
+ # Create the configuration
362
+ isolated_env = isolated_environment do |e|
363
+ e.vagrantfile(<<-VF)
364
+ Vagrant.configure("2") do |config|
365
+ config.vm.box = "base"
366
+ config.vm.define "foo"
367
+ end
368
+ VF
369
+
370
+ e.box2("base", :foo)
371
+ end
372
+
373
+ # Verify that we can get the machine
374
+ env = isolated_env.create_vagrant_env
375
+ machine = env.machine(:foo, :foo)
376
+ machine.should be_kind_of(Vagrant::Machine)
377
+ machine.name.should == :foo
378
+ machine.provider.should be_kind_of(foo_provider)
379
+ machine.provider_config.should be_nil
380
+ end
381
+
382
+ it "should return a machine object with the machine configuration" do
383
+ # Create a provider
384
+ foo_config = Class.new(Vagrant.plugin("2", :config)) do
385
+ attr_accessor :value
386
+ end
387
+
388
+ foo_provider = register_provider("foo", foo_config)
389
+
390
+ # Create the configuration
391
+ isolated_env = isolated_environment do |e|
392
+ e.vagrantfile(<<-VF)
393
+ Vagrant.configure("2") do |config|
394
+ config.vm.box = "base"
395
+ config.vm.define "foo"
396
+
397
+ config.vm.provider :foo do |fooconfig|
398
+ fooconfig.value = 100
399
+ end
400
+ end
401
+ VF
402
+
403
+ e.box2("base", :foo)
404
+ end
405
+
406
+ # Verify that we can get the machine
407
+ env = isolated_env.create_vagrant_env
408
+ machine = env.machine(:foo, :foo)
409
+ machine.should be_kind_of(Vagrant::Machine)
410
+ machine.name.should == :foo
411
+ machine.provider.should be_kind_of(foo_provider)
412
+ machine.provider_config.value.should == 100
413
+ end
414
+
415
+ it "should cache the machine objects by name and provider" do
416
+ # Create a provider
417
+ foo_provider = register_provider("foo")
418
+ bar_provider = register_provider("bar")
419
+
420
+ # Create the configuration
421
+ isolated_env = isolated_environment do |e|
422
+ e.vagrantfile(<<-VF)
423
+ Vagrant.configure("2") do |config|
424
+ config.vm.box = "base"
425
+ config.vm.define "vm1"
426
+ config.vm.define "vm2"
427
+ end
428
+ VF
429
+
430
+ e.box2("base", :foo)
431
+ e.box2("base", :bar)
432
+ end
433
+
434
+ env = isolated_env.create_vagrant_env
435
+ vm1_foo = env.machine(:vm1, :foo)
436
+ vm1_bar = env.machine(:vm1, :bar)
437
+ vm2_foo = env.machine(:vm2, :foo)
438
+
439
+ vm1_foo.should eql(env.machine(:vm1, :foo))
440
+ vm1_bar.should eql(env.machine(:vm1, :bar))
441
+ vm1_foo.should_not eql(vm1_bar)
442
+ vm2_foo.should eql(env.machine(:vm2, :foo))
443
+ end
444
+
445
+ it "should load a machine without a box" do
446
+ register_provider("foo")
447
+
155
448
  environment = isolated_environment do |env|
156
449
  env.vagrantfile(<<-VF)
157
- Vagrant::Config.run do |config|
158
- config.vagrant.dotfile_name = "foo"
450
+ Vagrant.configure("2") do |config|
451
+ config.vm.box = "i-dont-exist"
159
452
  end
160
453
  VF
161
454
  end
162
455
 
163
456
  env = environment.create_vagrant_env
164
- env.config.for_vm(:default).vm.name.should == :default
457
+ machine = env.machine(:default, :foo)
458
+ machine.box.should be_nil
165
459
  end
166
460
 
167
- it "should load VM configuration with multiple VMs" do
461
+ it "should load the machine configuration" do
462
+ register_provider("foo")
463
+
168
464
  environment = isolated_environment do |env|
169
465
  env.vagrantfile(<<-VF)
170
- Vagrant::Config.run do |config|
171
- config.vm.define :foo do |vm|
172
- vm.ssh.port = 100
173
- end
466
+ Vagrant.configure("2") do |config|
467
+ config.ssh.port = 1
468
+ config.vm.box = "base"
174
469
 
175
- config.vm.define :bar do |vm|
176
- vm.ssh.port = 200
470
+ config.vm.define "vm1" do |inner|
471
+ inner.ssh.port = 100
177
472
  end
178
473
  end
179
474
  VF
475
+
476
+ env.box2("base", :foo)
180
477
  end
181
478
 
182
479
  env = environment.create_vagrant_env
183
- env.config.for_vm(:foo).ssh.port.should == 100
184
- env.config.for_vm(:bar).ssh.port.should == 200
480
+ machine = env.machine(:vm1, :foo)
481
+ machine.config.ssh.port.should == 100
482
+ machine.config.vm.box.should == "base"
185
483
  end
186
484
 
187
- it "should load box configuration" do
485
+ it "should load the box configuration for a V2 box" do
486
+ register_provider("foo")
487
+
188
488
  environment = isolated_environment do |env|
189
489
  env.vagrantfile(<<-VF)
190
- Vagrant::Config.run do |config|
490
+ Vagrant.configure("2") do |config|
191
491
  config.vm.box = "base"
192
492
  end
193
493
  VF
194
494
 
195
- env.box("base", <<-VF)
196
- Vagrant::Config.run do |config|
495
+ env.box2("base", :foo, :vagrantfile => <<-VF)
496
+ Vagrant.configure("2") do |config|
197
497
  config.ssh.port = 100
198
498
  end
199
499
  VF
200
500
  end
201
501
 
202
502
  env = environment.create_vagrant_env
203
- env.config.for_vm(:default).ssh.port.should == 100
503
+ machine = env.machine(:default, :foo)
504
+ machine.config.ssh.port.should == 100
505
+ end
506
+
507
+ it "should reload the cache if refresh is set" do
508
+ # Create a provider
509
+ foo_provider = register_provider("foo")
510
+
511
+ # Create the configuration
512
+ isolated_env = isolated_environment do |e|
513
+ e.vagrantfile(<<-VF)
514
+ Vagrant.configure("2") do |config|
515
+ config.vm.box = "base"
516
+ end
517
+ VF
518
+
519
+ e.box2("base", :foo)
520
+ end
521
+
522
+ env = isolated_env.create_vagrant_env
523
+ vm1 = env.machine(:default, :foo)
524
+ vm2 = env.machine(:default, :foo, true)
525
+ vm3 = env.machine(:default, :foo)
526
+
527
+ vm1.should_not eql(vm2)
528
+ vm2.should eql(vm3)
529
+ end
530
+
531
+ it "should raise an error if the VM is not found" do
532
+ expect { instance.machine("i-definitely-dont-exist", :virtualbox) }.
533
+ to raise_error(Vagrant::Errors::MachineNotFound)
534
+ end
535
+
536
+ it "should raise an error if the provider is not found" do
537
+ expect { instance.machine(:default, :lol_no) }.
538
+ to raise_error(Vagrant::Errors::ProviderNotFound)
204
539
  end
205
540
  end
206
541
 
207
- describe "ui" do
208
- it "should be a silent UI by default" do
209
- described_class.new.ui.should be_kind_of(Vagrant::UI::Silent)
542
+ describe "getting machine names" do
543
+ it "should return the default machine if no multi-VM is used" do
544
+ # Create the config
545
+ isolated_env = isolated_environment do |e|
546
+ e.vagrantfile(<<-VF)
547
+ Vagrant.configure("2") do |config|
548
+ end
549
+ VF
550
+ end
551
+
552
+ env = isolated_env.create_vagrant_env
553
+ env.machine_names.should == [:default]
210
554
  end
211
555
 
212
- it "should be a UI given in the constructor" do
213
- # Create a custom UI for our test
214
- class CustomUI < Vagrant::UI::Interface; end
556
+ it "should return the machine names in order" do
557
+ # Create the config
558
+ isolated_env = isolated_environment do |e|
559
+ e.vagrantfile(<<-VF)
560
+ Vagrant.configure("2") do |config|
561
+ config.vm.define "foo"
562
+ config.vm.define "bar"
563
+ end
564
+ VF
565
+ end
215
566
 
216
- instance = described_class.new(:ui_class => CustomUI)
217
- instance.ui.should be_kind_of(CustomUI)
567
+ env = isolated_env.create_vagrant_env
568
+ env.machine_names.should == [:foo, :bar]
218
569
  end
219
570
  end
220
571
  end