vagrant 0.8.10 → 0.9.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 (324) hide show
  1. data/CHANGELOG.md +77 -1
  2. data/Gemfile +0 -14
  3. data/LICENSE +1 -1
  4. data/bin/vagrant +47 -20
  5. data/config/default.rb +6 -14
  6. data/lib/vagrant.rb +132 -5
  7. data/lib/vagrant/action.rb +45 -123
  8. data/lib/vagrant/action/box/destroy.rb +7 -3
  9. data/lib/vagrant/action/box/download.rb +8 -8
  10. data/lib/vagrant/action/box/package.rb +2 -2
  11. data/lib/vagrant/action/box/unpackage.rb +13 -7
  12. data/lib/vagrant/action/box/verify.rb +5 -5
  13. data/lib/vagrant/action/builder.rb +23 -19
  14. data/lib/vagrant/action/builtin.rb +117 -79
  15. data/lib/vagrant/action/env/set.rb +7 -4
  16. data/lib/vagrant/action/environment.rb +3 -41
  17. data/lib/vagrant/action/general/package.rb +14 -29
  18. data/lib/vagrant/action/general/validate.rb +2 -2
  19. data/lib/vagrant/action/runner.rb +53 -0
  20. data/lib/vagrant/action/vm/boot.rb +9 -9
  21. data/lib/vagrant/action/vm/check_accessible.rb +2 -2
  22. data/lib/vagrant/action/vm/check_box.rb +10 -12
  23. data/lib/vagrant/action/vm/check_guest_additions.rb +8 -8
  24. data/lib/vagrant/action/vm/check_port_collisions.rb +85 -0
  25. data/lib/vagrant/action/vm/clean_machine_folder.rb +4 -4
  26. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +3 -11
  27. data/lib/vagrant/action/vm/clear_network_interfaces.rb +31 -0
  28. data/lib/vagrant/action/vm/clear_shared_folders.rb +2 -11
  29. data/lib/vagrant/action/vm/customize.rb +19 -9
  30. data/lib/vagrant/action/vm/destroy.rb +4 -4
  31. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +2 -12
  32. data/lib/vagrant/action/vm/discard_state.rb +4 -4
  33. data/lib/vagrant/action/vm/export.rb +13 -8
  34. data/lib/vagrant/action/vm/forward_ports.rb +55 -102
  35. data/lib/vagrant/action/vm/halt.rb +9 -6
  36. data/lib/vagrant/action/vm/host_name.rb +4 -4
  37. data/lib/vagrant/action/vm/import.rb +19 -10
  38. data/lib/vagrant/action/vm/match_mac_address.rb +4 -9
  39. data/lib/vagrant/action/vm/network.rb +300 -94
  40. data/lib/vagrant/action/vm/nfs.rb +41 -26
  41. data/lib/vagrant/action/vm/package.rb +1 -1
  42. data/lib/vagrant/action/vm/package_vagrantfile.rb +5 -2
  43. data/lib/vagrant/action/vm/provision.rb +42 -13
  44. data/lib/vagrant/action/vm/provisioner_cleanup.rb +2 -2
  45. data/lib/vagrant/action/vm/{clear_nfs_exports.rb → prune_nfs_exports.rb} +7 -7
  46. data/lib/vagrant/action/vm/resume.rb +4 -4
  47. data/lib/vagrant/action/vm/setup_package_files.rb +54 -0
  48. data/lib/vagrant/action/vm/share_folders.rb +63 -39
  49. data/lib/vagrant/action/vm/suspend.rb +4 -4
  50. data/lib/vagrant/action/warden.rb +13 -6
  51. data/lib/vagrant/box.rb +9 -55
  52. data/lib/vagrant/box_collection.rb +22 -17
  53. data/lib/vagrant/cli.rb +62 -47
  54. data/lib/vagrant/command.rb +18 -20
  55. data/lib/vagrant/command/base.rb +135 -90
  56. data/lib/vagrant/command/box.rb +46 -21
  57. data/lib/vagrant/command/box_add.rb +33 -0
  58. data/lib/vagrant/command/box_list.rb +25 -0
  59. data/lib/vagrant/command/box_remove.rb +23 -0
  60. data/lib/vagrant/command/box_repackage.rb +23 -0
  61. data/lib/vagrant/command/destroy.rb +16 -5
  62. data/lib/vagrant/command/halt.rb +25 -7
  63. data/lib/vagrant/command/init.rb +30 -7
  64. data/lib/vagrant/command/package.rb +49 -18
  65. data/lib/vagrant/command/provision.rb +22 -9
  66. data/lib/vagrant/command/reload.rb +18 -5
  67. data/lib/vagrant/command/resume.rb +18 -5
  68. data/lib/vagrant/command/ssh.rb +69 -31
  69. data/lib/vagrant/command/ssh_config.rb +37 -22
  70. data/lib/vagrant/command/status.rb +22 -20
  71. data/lib/vagrant/command/suspend.rb +18 -5
  72. data/lib/vagrant/command/up.rb +41 -8
  73. data/lib/vagrant/communication.rb +7 -0
  74. data/lib/vagrant/communication/base.rb +56 -0
  75. data/lib/vagrant/communication/ssh.rb +200 -0
  76. data/lib/vagrant/config.rb +29 -103
  77. data/lib/vagrant/config/base.rb +18 -26
  78. data/lib/vagrant/config/container.rb +37 -0
  79. data/lib/vagrant/config/error_recorder.rb +1 -1
  80. data/lib/vagrant/config/loader.rb +125 -0
  81. data/lib/vagrant/config/nfs.rb +1 -3
  82. data/lib/vagrant/config/package.rb +1 -3
  83. data/lib/vagrant/config/ssh.rb +31 -16
  84. data/lib/vagrant/config/top.rb +36 -25
  85. data/lib/vagrant/config/vagrant.rb +2 -5
  86. data/lib/vagrant/config/vm.rb +115 -56
  87. data/lib/vagrant/config/vm/provisioner.rb +16 -20
  88. data/lib/vagrant/config/vm/sub_vm.rb +1 -1
  89. data/lib/vagrant/data_store.rb +23 -15
  90. data/lib/vagrant/downloaders/base.rb +7 -5
  91. data/lib/vagrant/downloaders/file.rb +4 -4
  92. data/lib/vagrant/downloaders/http.rb +4 -5
  93. data/lib/vagrant/driver.rb +7 -0
  94. data/lib/vagrant/driver/virtualbox.rb +121 -0
  95. data/lib/vagrant/driver/virtualbox_4_0.rb +411 -0
  96. data/lib/vagrant/driver/virtualbox_4_1.rb +411 -0
  97. data/lib/vagrant/driver/virtualbox_base.rb +284 -0
  98. data/lib/vagrant/environment.rb +221 -240
  99. data/lib/vagrant/errors.rb +74 -25
  100. data/lib/vagrant/guest.rb +16 -0
  101. data/lib/vagrant/guest/arch.rb +48 -0
  102. data/lib/vagrant/{systems → guest}/base.rb +30 -18
  103. data/lib/vagrant/guest/debian.rb +61 -0
  104. data/lib/vagrant/{systems → guest}/freebsd.rb +11 -18
  105. data/lib/vagrant/guest/gentoo.rb +32 -0
  106. data/lib/vagrant/guest/linux.rb +78 -0
  107. data/lib/vagrant/{systems → guest}/linux/config.rb +2 -4
  108. data/lib/vagrant/guest/linux/error.rb +9 -0
  109. data/lib/vagrant/guest/redhat.rb +66 -0
  110. data/lib/vagrant/guest/solaris.rb +114 -0
  111. data/lib/vagrant/{systems → guest}/suse.rb +2 -2
  112. data/lib/vagrant/guest/ubuntu.rb +23 -0
  113. data/lib/vagrant/hosts.rb +23 -6
  114. data/lib/vagrant/hosts/arch.rb +7 -3
  115. data/lib/vagrant/hosts/base.rb +36 -46
  116. data/lib/vagrant/hosts/bsd.rb +53 -16
  117. data/lib/vagrant/hosts/fedora.rb +14 -0
  118. data/lib/vagrant/hosts/freebsd.rb +6 -36
  119. data/lib/vagrant/hosts/linux.rb +45 -20
  120. data/lib/vagrant/hosts/windows.rb +16 -0
  121. data/lib/vagrant/provisioners.rb +10 -7
  122. data/lib/vagrant/provisioners/base.rb +11 -34
  123. data/lib/vagrant/provisioners/chef.rb +30 -26
  124. data/lib/vagrant/provisioners/chef_client.rb +37 -23
  125. data/lib/vagrant/provisioners/chef_solo.rb +61 -16
  126. data/lib/vagrant/provisioners/puppet.rb +70 -38
  127. data/lib/vagrant/provisioners/puppet_server.rb +12 -13
  128. data/lib/vagrant/provisioners/shell.rb +24 -24
  129. data/lib/vagrant/registry.rb +49 -0
  130. data/lib/vagrant/ssh.rb +82 -153
  131. data/lib/vagrant/ui.rb +118 -50
  132. data/lib/vagrant/util/busy.rb +1 -1
  133. data/lib/vagrant/util/file_mode.rb +12 -0
  134. data/lib/vagrant/util/network_ip.rb +28 -0
  135. data/lib/vagrant/util/platform.rb +1 -0
  136. data/lib/vagrant/util/subprocess.rb +227 -0
  137. data/lib/vagrant/version.rb +1 -1
  138. data/lib/vagrant/vm.rb +111 -97
  139. data/tasks/acceptance.rake +3 -3
  140. data/tasks/test.rake +7 -2
  141. data/templates/commands/init/Vagrantfile.erb +11 -4
  142. data/templates/{ssh_config.erb → commands/ssh_config/config.erb} +0 -0
  143. data/templates/guests/arch/network_dhcp.erb +7 -0
  144. data/templates/guests/arch/network_static.erb +7 -0
  145. data/templates/guests/debian/network_dhcp.erb +6 -0
  146. data/templates/guests/debian/network_static.erb +7 -0
  147. data/templates/guests/gentoo/network_dhcp.erb +4 -0
  148. data/templates/guests/gentoo/network_static.erb +4 -0
  149. data/templates/guests/redhat/network_dhcp.erb +6 -0
  150. data/templates/guests/redhat/network_static.erb +7 -0
  151. data/templates/locales/en.yml +241 -122
  152. data/templates/{chef_server_client.erb → provisioners/chef_client/client.erb} +0 -0
  153. data/templates/{chef_solo_solo.erb → provisioners/chef_solo/solo.erb} +0 -0
  154. data/test/acceptance/base.rb +10 -10
  155. data/test/acceptance/box_test.rb +28 -6
  156. data/test/acceptance/destroy_test.rb +1 -1
  157. data/test/acceptance/halt_test.rb +4 -4
  158. data/test/acceptance/init_test.rb +3 -3
  159. data/test/acceptance/networking/host_only_test.rb +37 -0
  160. data/test/acceptance/networking/port_forward_test.rb +125 -0
  161. data/test/acceptance/package_test.rb +46 -0
  162. data/test/acceptance/provisioning/basic_test.rb +61 -0
  163. data/test/acceptance/provisioning/chef_solo_test.rb +37 -0
  164. data/test/acceptance/provisioning/shell_test.rb +53 -0
  165. data/test/acceptance/resume_test.rb +1 -1
  166. data/test/acceptance/skeletons/chef_solo_basic/README.md +3 -0
  167. data/test/acceptance/skeletons/chef_solo_basic/cookbooks/basic/recipes/default.rb +5 -0
  168. data/test/acceptance/skeletons/chef_solo_json/README.md +3 -0
  169. data/test/acceptance/skeletons/chef_solo_json/cookbooks/basic/recipes/default.rb +6 -0
  170. data/test/acceptance/skeletons/provisioner_multi/README.md +3 -0
  171. data/test/acceptance/skeletons/provisioner_multi/cookbooks/basic/recipes/default.rb +5 -0
  172. data/test/acceptance/ssh_test.rb +7 -2
  173. data/test/acceptance/support/config.rb +1 -1
  174. data/test/acceptance/support/isolated_environment.rb +41 -150
  175. data/test/acceptance/support/matchers/match_output.rb +1 -1
  176. data/test/acceptance/support/matchers/succeed.rb +14 -0
  177. data/test/acceptance/support/network_tests.rb +29 -0
  178. data/test/acceptance/support/output.rb +9 -1
  179. data/test/acceptance/support/shared/base_context.rb +16 -9
  180. data/test/acceptance/support/shared/command_examples.rb +4 -4
  181. data/test/acceptance/suspend_test.rb +1 -1
  182. data/test/acceptance/up_basic_test.rb +26 -7
  183. data/test/acceptance/up_with_box_url.rb +1 -1
  184. data/test/acceptance/vagrant_test.rb +1 -1
  185. data/test/acceptance/version_test.rb +0 -5
  186. data/test/support/isolated_environment.rb +46 -0
  187. data/test/{acceptance/support → support}/tempdir.rb +0 -0
  188. data/test/unit/base.rb +21 -0
  189. data/test/unit/support/isolated_environment.rb +39 -0
  190. data/test/unit/support/shared/base_context.rb +30 -0
  191. data/test/unit/vagrant/action/builder_test.rb +126 -177
  192. data/test/unit/vagrant/action/environment_test.rb +10 -21
  193. data/test/unit/vagrant/action/runner_test.rb +65 -0
  194. data/test/unit/vagrant/action/warden_test.rb +64 -97
  195. data/test/unit/vagrant/box_collection_test.rb +44 -33
  196. data/test/unit/vagrant/box_test.rb +25 -65
  197. data/test/unit/vagrant/command/base_test.rb +141 -14
  198. data/test/unit/vagrant/config/base_test.rb +16 -43
  199. data/test/unit/vagrant/config/loader_test.rb +79 -0
  200. data/test/unit/vagrant/config/top_test.rb +69 -0
  201. data/test/unit/vagrant/config/vm_test.rb +62 -47
  202. data/test/unit/vagrant/config_test.rb +16 -151
  203. data/test/unit/vagrant/data_store_test.rb +43 -61
  204. data/test/unit/vagrant/downloaders/base_test.rb +12 -22
  205. data/test/unit/vagrant/downloaders/file_test.rb +58 -31
  206. data/test/unit/vagrant/downloaders/http_test.rb +12 -86
  207. data/test/unit/vagrant/environment_test.rb +107 -536
  208. data/test/unit/vagrant/hosts_test.rb +36 -0
  209. data/test/unit/vagrant/registry_test.rb +56 -0
  210. data/test/unit/vagrant/util/file_checksum_test.rb +23 -0
  211. data/test/unit/vagrant/util/hash_with_indifferent_access_test.rb +23 -24
  212. data/test/unit/vagrant/util/network_ip_test.rb +17 -0
  213. data/test/unit/vagrant/util/retryable_test.rb +90 -34
  214. data/test/unit/vagrant_test.rb +27 -0
  215. data/test/{unit → unit_legacy}/locales/en.yml +0 -0
  216. data/test/{unit → unit_legacy}/test_helper.rb +0 -0
  217. data/test/{unit → unit_legacy}/vagrant/action/box/destroy_test.rb +0 -0
  218. data/test/{unit → unit_legacy}/vagrant/action/box/download_test.rb +0 -0
  219. data/test/{unit → unit_legacy}/vagrant/action/box/package_test.rb +0 -0
  220. data/test/{unit → unit_legacy}/vagrant/action/box/unpackage_test.rb +0 -0
  221. data/test/{unit → unit_legacy}/vagrant/action/box/verify_test.rb +0 -0
  222. data/test/{unit → unit_legacy}/vagrant/action/env/set_test.rb +0 -0
  223. data/test/{unit → unit_legacy}/vagrant/action/general/package_test.rb +0 -0
  224. data/test/{unit → unit_legacy}/vagrant/action/general/validate_test.rb +0 -0
  225. data/test/{unit → unit_legacy}/vagrant/action/vm/boot_test.rb +0 -0
  226. data/test/{unit → unit_legacy}/vagrant/action/vm/check_accessible_test.rb +0 -0
  227. data/test/{unit → unit_legacy}/vagrant/action/vm/check_box_test.rb +0 -0
  228. data/test/{unit → unit_legacy}/vagrant/action/vm/check_guest_additions_test.rb +0 -0
  229. data/test/{unit → unit_legacy}/vagrant/action/vm/clean_machine_folder_test.rb +0 -0
  230. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_forwarded_ports_test.rb +0 -0
  231. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_nfs_exports_test.rb +0 -0
  232. data/test/{unit → unit_legacy}/vagrant/action/vm/clear_shared_folders_test.rb +0 -0
  233. data/test/{unit → unit_legacy}/vagrant/action/vm/customize_test.rb +0 -0
  234. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_test.rb +0 -0
  235. data/test/{unit → unit_legacy}/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +0 -0
  236. data/test/{unit → unit_legacy}/vagrant/action/vm/discard_state_test.rb +0 -0
  237. data/test/{unit → unit_legacy}/vagrant/action/vm/export_test.rb +0 -0
  238. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_helpers_test.rb +0 -0
  239. data/test/{unit → unit_legacy}/vagrant/action/vm/forward_ports_test.rb +0 -0
  240. data/test/{unit → unit_legacy}/vagrant/action/vm/halt_test.rb +0 -0
  241. data/test/{unit → unit_legacy}/vagrant/action/vm/host_name_test.rb +0 -0
  242. data/test/{unit → unit_legacy}/vagrant/action/vm/import_test.rb +0 -0
  243. data/test/{unit → unit_legacy}/vagrant/action/vm/match_mac_address_test.rb +0 -0
  244. data/test/{unit → unit_legacy}/vagrant/action/vm/modify_test.rb +0 -0
  245. data/test/{unit → unit_legacy}/vagrant/action/vm/network_test.rb +0 -0
  246. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_helpers_test.rb +0 -0
  247. data/test/{unit → unit_legacy}/vagrant/action/vm/nfs_test.rb +0 -0
  248. data/test/{unit → unit_legacy}/vagrant/action/vm/package_test.rb +0 -0
  249. data/test/{unit → unit_legacy}/vagrant/action/vm/package_vagrantfile_test.rb +0 -0
  250. data/test/{unit → unit_legacy}/vagrant/action/vm/provision_test.rb +0 -0
  251. data/test/{unit → unit_legacy}/vagrant/action/vm/provisioner_cleanup_test.rb +0 -0
  252. data/test/{unit → unit_legacy}/vagrant/action/vm/resume_test.rb +0 -0
  253. data/test/{unit → unit_legacy}/vagrant/action/vm/share_folders_test.rb +0 -0
  254. data/test/{unit → unit_legacy}/vagrant/action/vm/suspend_test.rb +0 -0
  255. data/test/{unit → unit_legacy}/vagrant/action_test.rb +0 -0
  256. data/test/unit_legacy/vagrant/box_collection_test.rb +45 -0
  257. data/test/unit_legacy/vagrant/box_test.rb +74 -0
  258. data/test/{unit → unit_legacy}/vagrant/cli_test.rb +0 -0
  259. data/test/unit_legacy/vagrant/command/base_test.rb +23 -0
  260. data/test/{unit → unit_legacy}/vagrant/command/group_base_test.rb +0 -0
  261. data/test/{unit → unit_legacy}/vagrant/command/helpers_test.rb +0 -0
  262. data/test/{unit → unit_legacy}/vagrant/command/init_test.rb +0 -0
  263. data/test/{unit → unit_legacy}/vagrant/command/package_test.rb +0 -0
  264. data/test/unit_legacy/vagrant/config/base_test.rb +52 -0
  265. data/test/{unit → unit_legacy}/vagrant/config/error_recorder_test.rb +0 -0
  266. data/test/{unit → unit_legacy}/vagrant/config/ssh_test.rb +0 -0
  267. data/test/{unit → unit_legacy}/vagrant/config/vagrant_test.rb +0 -0
  268. data/test/{unit → unit_legacy}/vagrant/config/vm/provisioner_test.rb +0 -0
  269. data/test/unit_legacy/vagrant/config/vm_test.rb +47 -0
  270. data/test/unit_legacy/vagrant/config_test.rb +148 -0
  271. data/test/unit_legacy/vagrant/downloaders/http_test.rb +93 -0
  272. data/test/unit_legacy/vagrant/environment_test.rb +539 -0
  273. data/test/{unit → unit_legacy}/vagrant/errors_test.rb +0 -0
  274. data/test/{unit → unit_legacy}/vagrant/hosts/base_test.rb +0 -0
  275. data/test/{unit → unit_legacy}/vagrant/hosts/bsd_test.rb +0 -0
  276. data/test/{unit → unit_legacy}/vagrant/hosts/linux_test.rb +0 -0
  277. data/test/{unit → unit_legacy}/vagrant/plugin_test.rb +0 -0
  278. data/test/{unit → unit_legacy}/vagrant/provisioners/base_test.rb +0 -0
  279. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_client_test.rb +0 -0
  280. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_solo_test.rb +0 -0
  281. data/test/{unit → unit_legacy}/vagrant/provisioners/chef_test.rb +0 -0
  282. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_server_test.rb +0 -0
  283. data/test/{unit → unit_legacy}/vagrant/provisioners/puppet_test.rb +0 -0
  284. data/test/{unit → unit_legacy}/vagrant/provisioners/shell_test.rb +0 -0
  285. data/test/{unit → unit_legacy}/vagrant/ssh/session_test.rb +0 -0
  286. data/test/{unit → unit_legacy}/vagrant/ssh_test.rb +0 -0
  287. data/test/{unit → unit_legacy}/vagrant/systems/base_test.rb +0 -0
  288. data/test/{unit → unit_legacy}/vagrant/systems/linux_test.rb +0 -0
  289. data/test/{unit → unit_legacy}/vagrant/util/busy_test.rb +0 -0
  290. data/test/{unit → unit_legacy}/vagrant/util/counter_test.rb +0 -0
  291. data/test/{unit → unit_legacy}/vagrant/util/platform_test.rb +0 -0
  292. data/test/{unit → unit_legacy}/vagrant/util/stacked_proc_runner_test.rb +0 -0
  293. data/test/{unit → unit_legacy}/vagrant/util/template_renderer_test.rb +0 -0
  294. data/test/{unit → unit_legacy}/vagrant/vm_test.rb +0 -0
  295. data/vagrant.gemspec +7 -9
  296. metadata +214 -216
  297. data/keys/vagrant.ppk +0 -26
  298. data/lib/vagrant/action/box.rb +0 -11
  299. data/lib/vagrant/action/env.rb +0 -7
  300. data/lib/vagrant/action/general.rb +0 -8
  301. data/lib/vagrant/action/vm.rb +0 -34
  302. data/lib/vagrant/action/vm/forward_ports_helpers.rb +0 -28
  303. data/lib/vagrant/action/vm/modify.rb +0 -37
  304. data/lib/vagrant/action/vm/nfs_helpers.rb +0 -11
  305. data/lib/vagrant/command/group_base.rb +0 -107
  306. data/lib/vagrant/command/helpers.rb +0 -33
  307. data/lib/vagrant/command/named_base.rb +0 -14
  308. data/lib/vagrant/command/upgrade_to_060.rb +0 -45
  309. data/lib/vagrant/command/version.rb +0 -13
  310. data/lib/vagrant/ssh/session.rb +0 -136
  311. data/lib/vagrant/systems.rb +0 -13
  312. data/lib/vagrant/systems/arch.rb +0 -34
  313. data/lib/vagrant/systems/debian.rb +0 -36
  314. data/lib/vagrant/systems/gentoo.rb +0 -27
  315. data/lib/vagrant/systems/linux.rb +0 -82
  316. data/lib/vagrant/systems/linux/error.rb +0 -9
  317. data/lib/vagrant/systems/redhat.rb +0 -48
  318. data/lib/vagrant/systems/solaris.rb +0 -113
  319. data/lib/vagrant/systems/ubuntu.rb +0 -17
  320. data/templates/network_entry_arch.erb +0 -9
  321. data/templates/network_entry_debian.erb +0 -8
  322. data/templates/network_entry_gentoo.erb +0 -5
  323. data/templates/network_entry_redhat.erb +0 -9
  324. data/test/unit/vagrant/ui_test.rb +0 -29
@@ -1,27 +1,16 @@
1
- require "test_helper"
1
+ require File.expand_path("../../../base", __FILE__)
2
2
 
3
- class ActionEnvironmentTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Action::Environment
6
- @instance = @klass.new(vagrant_env)
7
- end
8
-
9
- should "be a hash with indifferent access" do
10
- assert @instance.is_a?(Vagrant::Util::HashWithIndifferentAccess)
11
- end
12
-
13
- should "default values to those on the env" do
14
- @instance.env.stubs(:key).returns("value")
15
- assert_equal "value", @instance["key"]
16
- end
3
+ describe Vagrant::Action::Environment do
4
+ let(:instance) { described_class.new }
17
5
 
18
- should "setup the UI" do
19
- assert_equal @instance.env.ui, @instance.ui
6
+ it "should be a hash" do
7
+ instance.should be_empty
8
+ instance["foo"] = "bar"
9
+ instance["foo"].should == "bar"
20
10
  end
21
11
 
22
- should "report interrupted if interrupt error" do
23
- assert !@instance.interrupted?
24
- @instance.interrupt!
25
- assert @instance.interrupted?
12
+ it "should be a hash accessible by string or symbol" do
13
+ instance["foo"] = "bar"
14
+ instance[:foo].should == "bar"
26
15
  end
27
16
  end
@@ -0,0 +1,65 @@
1
+ require File.expand_path("../../../base", __FILE__)
2
+
3
+ describe Vagrant::Action::Runner do
4
+ let(:registry) do
5
+ d = double("registry")
6
+ d.stub(:get)
7
+ d
8
+ end
9
+
10
+ let(:instance) { described_class.new(registry) }
11
+
12
+ it "should raise an error if an invalid callable is given" do
13
+ expect { instance.run(7) }.to raise_error(ArgumentError, /must be a callable/)
14
+ end
15
+
16
+ it "should be able to use a Proc as a callable" do
17
+ callable = Proc.new { raise Exception, "BOOM" }
18
+ expect { instance.run(callable) }.to raise_error(Exception, "BOOM")
19
+ end
20
+
21
+ it "should be able to use a Class as a callable" do
22
+ callable = Class.new do
23
+ def initialize(app, env)
24
+ end
25
+
26
+ def call(env)
27
+ raise Exception, "BOOM"
28
+ end
29
+ end
30
+
31
+ expect { instance.run(callable) }.to raise_error(Exception, "BOOM")
32
+ end
33
+
34
+ it "should pass options into hash given to callable" do
35
+ result = nil
36
+ callable = lambda do |env|
37
+ result = env["data"]
38
+ end
39
+
40
+ instance.run(callable, "data" => "foo")
41
+ result.should == "foo"
42
+ end
43
+
44
+ it "should pass global options into the hash" do
45
+ result = nil
46
+ callable = lambda do |env|
47
+ result = env["data"]
48
+ end
49
+
50
+ instance = described_class.new(registry, "data" => "bar")
51
+ instance.run(callable)
52
+ result.should == "bar"
53
+ end
54
+
55
+ it "should yield the block passed to the init method to get lazy loaded globals" do
56
+ result = nil
57
+ callable = lambda do |env|
58
+ result = env["data"]
59
+ end
60
+
61
+ instance = described_class.new(registry) { { "data" => "bar" } }
62
+ instance.run(callable)
63
+ result.should == "bar"
64
+ end
65
+ end
@@ -1,125 +1,92 @@
1
- require "test_helper"
2
- require "logger"
1
+ require File.expand_path("../../../base", __FILE__)
3
2
 
4
- class ActionWardenTest < Test::Unit::TestCase
5
- setup do
6
- @klass = Vagrant::Action::Warden
7
- @instance = @klass.new([], {})
8
- end
3
+ describe Vagrant::Action::Warden do
4
+ let(:data) { { :data => [] } }
5
+ let(:instance) { described_class.new }
9
6
 
10
- context "initializing" do
11
- should "finalize the middleware" do
12
- env = new_env
13
- middleware = [1,2,3]
14
- middleware.each do |m|
15
- @klass.any_instance.expects(:finalize_action).with(m, env).returns(m)
16
- end
17
- @warden = @klass.new(middleware, env)
18
- assert_equal @warden.actions, [1,2,3]
19
- end
7
+ # This returns a proc that can be used with the builder
8
+ # that simply appends data to an array in the env.
9
+ def appender_proc(data)
10
+ Proc.new { |env| env[:data] << data }
20
11
  end
21
12
 
22
- context "setting up middleware" do
23
- should "make non-classes lambdas" do
24
- env = new_env
25
- env.expects(:foo).once
13
+ it "calls the actions like normal" do
14
+ instance = described_class.new([appender_proc(1), appender_proc(2)], data)
15
+ instance.call(data)
26
16
 
27
- func = lambda { |x| x.foo }
28
- @instance.finalize_action(func, env).call(env)
29
- end
30
-
31
- should "raise exception if given invalid middleware" do
32
- assert_raises(RuntimeError) {
33
- @instance.finalize_action(7, nil)
34
- }
35
- end
17
+ data[:data].should == [1, 2]
36
18
  end
37
19
 
38
- context "calling" do
39
- should "return if there are no actions to execute" do
40
- @instance.actions.expects(:pop).never
41
- assert !@instance.call(new_env)
42
- end
20
+ it "starts a recovery sequence when an exception is raised" do
21
+ class Action
22
+ def initialize(app, env)
23
+ @app = app
24
+ end
43
25
 
44
- should "move the last action to the front of the stack" do
45
- @instance.actions << lambda { |env| }
46
- assert @instance.stack.empty?
47
- @instance.call(new_env)
48
- assert !@instance.stack.empty?
49
- assert @instance.actions.empty?
50
- end
26
+ def call(env)
27
+ @app.call(env)
28
+ end
51
29
 
52
- should "call the next action" do
53
- env = new_env
54
- action = mock('action')
55
- action.expects(:call).with(env)
56
- @instance.actions << action
57
- @instance.call(env)
30
+ def recover(env)
31
+ env[:recover] << 1
32
+ end
58
33
  end
59
34
 
60
- should "begin recovery sequence when the called action raises an exception" do
61
- class Foo
62
- def initialize(*args); end
63
- def call(env)
64
- raise "An exception"
65
- end
35
+ class ActionTwo
36
+ def initialize(app, env)
37
+ @app = app
66
38
  end
67
39
 
68
- @instance.actions << Foo.new
69
- @instance.expects(:begin_rescue).with() do |env|
70
- assert env["vagrant.error"].is_a?(RuntimeError)
71
- true
40
+ def call(env)
41
+ @app.call(env)
72
42
  end
73
- assert_raises(RuntimeError) { @instance.call(new_env) }
74
- end
75
43
 
76
- should "not begin recovery sequence if a SystemExit is raised" do
77
- class Foo
78
- def initialize(*args); end
79
- def call(env)
80
- # Raises a system exit
81
- abort
82
- end
44
+ def recover(env)
45
+ env[:recover] << 2
83
46
  end
84
-
85
- @instance.actions << Foo.new
86
- @instance.expects(:begin_rescue).never
87
- assert_raises(SystemExit) { @instance.call(new_env) }
88
47
  end
89
48
 
90
- should "raise interrupt if the environment is interupted" do
91
- env = new_env
92
- env.expects(:interrupted?).returns(true)
93
- @instance.actions << lambda { |env| }
49
+ error_proc = Proc.new { raise "ERROR!" }
94
50
 
95
- assert_raises(Vagrant::Errors::VagrantInterrupt) {
96
- @instance.call(env)
97
- }
98
- end
51
+ data = { :recover => [] }
52
+ instance = described_class.new([Action, ActionTwo, error_proc], data)
53
+
54
+ # The error should be raised back up
55
+ expect { instance.call(data) }.
56
+ to raise_error(RuntimeError)
57
+
58
+ # Verify the recovery process goes in reverse order
59
+ data[:recover].should == [2, 1]
60
+
61
+ # Verify that the error is available in the data
62
+ data["vagrant.error"].should be_kind_of(RuntimeError)
99
63
  end
100
64
 
101
- context "recover" do
102
- should "call recover on all items in the stack" do
103
- env = new_env
104
- seq = sequence("sequence")
105
- @instance.stack = [rescueable_mock("action"), rescueable_mock("another")]
106
- @instance.stack.each do |action|
107
- action.expects(:recover).with(env).in_sequence(seq)
65
+ it "does not do a recovery sequence if SystemExit is raised" do
66
+ class Action
67
+ def initialize(app, env)
68
+ @app = app
69
+ end
70
+
71
+ def call(env)
72
+ @app.call(env)
108
73
  end
109
74
 
110
- @instance.begin_rescue(env)
75
+ def recover(env)
76
+ env[:recover] = true
77
+ end
111
78
  end
112
- end
113
79
 
114
- def new_env
115
- env = Vagrant::Action::Environment.new(nil)
116
- env["logger"] = Logger.new(nil)
117
- env
118
- end
80
+ # Make a proc that just calls "abort" which raises a
81
+ # SystemExit exception.
82
+ error_proc = Proc.new { abort }
83
+
84
+ instance = described_class.new([Action, error_proc], data)
85
+
86
+ # The SystemExit should come through
87
+ expect { instance.call(data) }.to raise_error(SystemExit)
119
88
 
120
- def rescueable_mock(name)
121
- mock_action = mock(name)
122
- mock_action.stubs(:respond_to?).with(:recover).returns(true)
123
- mock_action
89
+ # The recover should not have been called
90
+ data.has_key?(:recover).should_not be
124
91
  end
125
92
  end
@@ -1,45 +1,56 @@
1
- require "test_helper"
1
+ require File.expand_path("../../base", __FILE__)
2
2
 
3
- class BoxCollectionTest < Test::Unit::TestCase
4
- setup do
5
- clean_paths
3
+ describe Vagrant::BoxCollection do
4
+ include_context "unit"
6
5
 
7
- @klass = Vagrant::BoxCollection
8
- end
9
-
10
- should "load all the boxes from the box path" do
11
- vagrant_box("foo")
12
- vagrant_box("bar")
13
-
14
- result = @klass.new(vagrant_env)
15
- names = result.collect { |b| b.name }.sort
16
- assert result.length >= 2
17
- assert names.include?("foo")
18
- assert names.include?("bar")
19
- end
20
-
21
- should "reload the box list" do
22
- instance = @klass.new(vagrant_env)
23
- amount = instance.length
6
+ let(:environment) { isolated_environment }
7
+ let(:action_runner) { double("action runner") }
8
+ let(:instance) { described_class.new(environment.boxes_dir, action_runner) }
24
9
 
25
- vagrant_box("foo")
10
+ it "should list all available boxes" do
11
+ # No boxes yet.
12
+ instance.length.should == 0
26
13
 
14
+ # Add some boxes to the environment and try again
15
+ environment.box("foo")
16
+ environment.box("bar")
27
17
  instance.reload!
28
- assert_equal (amount + 1), instance.length
18
+ instance.length.should == 2
29
19
  end
30
20
 
31
- should "find a specific box" do
32
- vagrant_box("foo")
33
- vagrant_box("bar")
21
+ describe "finding" do
22
+ it "should return nil if it can't find the box" do
23
+ instance.find("foo").should be_nil
24
+ end
25
+
26
+ it "should return a box instance for any boxes it does find" do
27
+ environment.box("foo")
28
+ result = instance.find("foo")
29
+ result.should be_kind_of(Vagrant::Box)
30
+ result.name.should == "foo"
31
+ end
32
+ end
34
33
 
35
- instance = @klass.new(vagrant_env)
36
- result = instance.find("foo")
37
- assert result
38
- assert_equal "foo", result.name
34
+ it "should throw an error if the box already exists when adding" do
35
+ environment.box("foo")
36
+ expect { instance.add("foo", "bar") }.to raise_error(Vagrant::Errors::BoxAlreadyExists)
39
37
  end
40
38
 
41
- should "return nil if it couldn't find a specific box" do
42
- instance = @klass.new(vagrant_env)
43
- assert_nil instance.find("thisshouldnotexist")
39
+ it "should add the box" do
40
+ name = "foo"
41
+ url = "bar"
42
+
43
+ # Test the invocation of the action runner with the proper name
44
+ # and parameters. We leave the testing of the actual stack to
45
+ # acceptance tests, and individual pieces to unit tests of each
46
+ # step.
47
+ options = {
48
+ :box_name => name,
49
+ :box_url => url,
50
+ :box_directory => instance.directory.join(name)
51
+ }
52
+ action_runner.should_receive(:run).with(:box_add, options)
53
+
54
+ instance.add(name, url)
44
55
  end
45
56
  end
@@ -1,74 +1,34 @@
1
- require "test_helper"
1
+ require File.expand_path("../../base", __FILE__)
2
2
 
3
- class BoxTest < Test::Unit::TestCase
4
- context "class methods" do
5
- setup do
6
- @env = vagrant_env
7
- end
3
+ describe Vagrant::Box do
4
+ let(:name) { "foo" }
5
+ let(:directory) { "bar" }
6
+ let(:action_runner) { double("action_runner") }
7
+ let(:instance) { described_class.new(name, directory, action_runner) }
8
8
 
9
- context "adding" do
10
- setup do
11
- @name = "foo"
12
- @uri = "bar"
13
- end
14
-
15
- should "create a new instance, set the variables, and add it" do
16
- box = mock("box")
17
- box.expects(:uri=).with(@uri)
18
- box.expects(:add).once
19
- Vagrant::Box.expects(:new).with(@env, @name).returns(box)
20
- Vagrant::Box.add(@env, @name, @uri)
21
- end
22
- end
9
+ it "provides the name" do
10
+ instance.name.should == name
23
11
  end
24
12
 
25
- context "instance methods" do
26
- setup do
27
- @box = Vagrant::Box.new(vagrant_env, "foo")
28
- end
29
-
30
- should "raise an exception if a box exists with the name we're attempting to add" do
31
- vagrant_box(@box.name)
32
-
33
- assert_raises(Vagrant::Errors::BoxAlreadyExists) {
34
- @box.add
35
- }
36
- end
37
-
38
- should "execute the Add action when add is called" do
39
- @box.env.actions.expects(:run).with(:box_add, { "box" => @box, "validate" => false })
40
- @box.add
41
- end
13
+ it "can destroy itself" do
14
+ # Simply test the messages to the action runner
15
+ options = {
16
+ :box_name => name,
17
+ :box_directory => directory
18
+ }
19
+ action_runner.should_receive(:run).with(:box_remove, options)
42
20
 
43
- context "box directory" do
44
- should "return the boxes_path joined with the name" do
45
- assert_equal @box.env.boxes_path.join(@box.name), @box.directory
46
- end
47
- end
48
-
49
- context "destroying" do
50
- should "execute the destroy action" do
51
- @box.env.actions.expects(:run).with(:box_remove, { "box" => @box, "validate" => false })
52
- @box.destroy
53
- end
54
- end
55
-
56
- context "repackaging" do
57
- should "execute the repackage action" do
58
- @box.env.actions.expects(:run).with(:box_repackage, { "box" => @box, "validate" => false })
59
- @box.repackage
60
- end
21
+ instance.destroy
22
+ end
61
23
 
62
- should "forward given options into the action" do
63
- @box.env.actions.expects(:run).with(:box_repackage, { "box" => @box, "foo" => "bar", "validate" => false })
64
- @box.repackage("foo" => "bar")
65
- end
66
- end
24
+ it "can repackage itself" do
25
+ # Simply test the messages to the action runner
26
+ options = {
27
+ :box_name => name,
28
+ :box_directory => directory
29
+ }
30
+ action_runner.should_receive(:run).with(:box_repackage, options)
67
31
 
68
- context "ovf file" do
69
- should "be the directory joined with the config ovf file" do
70
- assert_equal @box.directory.join(@box.env.config.vm.box_ovf), @box.ovf_file
71
- end
72
- end
32
+ instance.repackage
73
33
  end
74
34
  end