vagrantup 0.5.4 → 0.6.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 (235) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.yardopts +1 -0
  4. data/CHANGELOG.md +56 -0
  5. data/Gemfile +14 -3
  6. data/Gemfile.lock +38 -11
  7. data/README.md +1 -1
  8. data/bin/vagrant +20 -5
  9. data/config/default.rb +6 -8
  10. data/lib/vagrant.rb +40 -13
  11. data/lib/vagrant/action.rb +56 -16
  12. data/lib/vagrant/action/box/destroy.rb +3 -1
  13. data/lib/vagrant/action/box/download.rb +8 -13
  14. data/lib/vagrant/action/box/unpackage.rb +8 -11
  15. data/lib/vagrant/action/box/verify.rb +3 -3
  16. data/lib/vagrant/action/builder.rb +3 -30
  17. data/lib/vagrant/action/builtin.rb +6 -1
  18. data/lib/vagrant/action/environment.rb +14 -62
  19. data/lib/vagrant/action/general/package.rb +29 -22
  20. data/lib/vagrant/action/vm/boot.rb +5 -12
  21. data/lib/vagrant/action/vm/check_box.rb +4 -4
  22. data/lib/vagrant/action/vm/check_guest_additions.rb +4 -6
  23. data/lib/vagrant/action/vm/clear_forwarded_ports.rb +2 -2
  24. data/lib/vagrant/action/vm/clear_nfs_exports.rb +1 -1
  25. data/lib/vagrant/action/vm/clear_shared_folders.rb +1 -1
  26. data/lib/vagrant/action/vm/customize.rb +1 -1
  27. data/lib/vagrant/action/vm/destroy.rb +1 -2
  28. data/lib/vagrant/action/vm/destroy_unused_network_interfaces.rb +1 -1
  29. data/lib/vagrant/action/vm/disable_networks.rb +11 -9
  30. data/lib/vagrant/action/vm/discard_state.rb +2 -2
  31. data/lib/vagrant/action/vm/export.rb +10 -11
  32. data/lib/vagrant/action/vm/forward_ports.rb +21 -9
  33. data/lib/vagrant/action/vm/halt.rb +3 -8
  34. data/lib/vagrant/action/vm/import.rb +16 -14
  35. data/lib/vagrant/action/vm/match_mac_address.rb +1 -1
  36. data/lib/vagrant/action/vm/network.rb +9 -16
  37. data/lib/vagrant/action/vm/nfs.rb +14 -18
  38. data/lib/vagrant/action/vm/provision.rb +5 -5
  39. data/lib/vagrant/action/vm/resume.rb +1 -1
  40. data/lib/vagrant/action/vm/share_folders.rb +6 -44
  41. data/lib/vagrant/action/vm/suspend.rb +1 -1
  42. data/lib/vagrant/action/warden.rb +74 -0
  43. data/lib/vagrant/box.rb +18 -82
  44. data/lib/vagrant/box_collection.rb +47 -0
  45. data/lib/vagrant/cli.rb +55 -0
  46. data/lib/vagrant/command/base.rb +106 -0
  47. data/lib/vagrant/command/box.rb +33 -0
  48. data/lib/vagrant/command/destroy.rb +17 -0
  49. data/lib/vagrant/command/group_base.rb +99 -0
  50. data/lib/vagrant/command/halt.rb +18 -0
  51. data/lib/vagrant/command/helpers.rb +33 -0
  52. data/lib/vagrant/command/init.rb +14 -0
  53. data/lib/vagrant/command/named_base.rb +14 -0
  54. data/lib/vagrant/command/package.rb +41 -0
  55. data/lib/vagrant/command/provision.rb +17 -0
  56. data/lib/vagrant/command/reload.rb +17 -0
  57. data/lib/vagrant/command/resume.rb +17 -0
  58. data/lib/vagrant/command/ssh.rb +41 -0
  59. data/lib/vagrant/command/ssh_config.rb +21 -0
  60. data/lib/vagrant/command/status.rb +23 -0
  61. data/lib/vagrant/command/suspend.rb +17 -0
  62. data/lib/vagrant/command/up.rb +20 -0
  63. data/lib/vagrant/command/upgrade_to_060.rb +45 -0
  64. data/lib/vagrant/command/version.rb +13 -0
  65. data/lib/vagrant/config.rb +107 -189
  66. data/lib/vagrant/config/base.rb +67 -0
  67. data/lib/vagrant/config/error_recorder.rb +19 -0
  68. data/lib/vagrant/config/nfs.rb +10 -0
  69. data/lib/vagrant/config/package.rb +9 -0
  70. data/lib/vagrant/config/ssh.rb +28 -0
  71. data/lib/vagrant/config/vagrant.rb +21 -0
  72. data/lib/vagrant/config/vm.rb +111 -0
  73. data/lib/vagrant/data_store.rb +68 -0
  74. data/lib/vagrant/downloaders/file.rb +3 -3
  75. data/lib/vagrant/downloaders/http.rb +5 -5
  76. data/lib/vagrant/environment.rb +246 -243
  77. data/lib/vagrant/errors.rb +306 -0
  78. data/lib/vagrant/hosts/base.rb +1 -1
  79. data/lib/vagrant/hosts/bsd.rb +3 -9
  80. data/lib/vagrant/hosts/linux.rb +3 -9
  81. data/lib/vagrant/plugin.rb +50 -0
  82. data/lib/vagrant/provisioners/base.rb +0 -6
  83. data/lib/vagrant/provisioners/chef.rb +63 -58
  84. data/lib/vagrant/provisioners/chef_server.rb +9 -11
  85. data/lib/vagrant/provisioners/chef_solo.rb +2 -2
  86. data/lib/vagrant/ssh.rb +34 -37
  87. data/lib/vagrant/systems/base.rb +0 -13
  88. data/lib/vagrant/systems/linux.rb +10 -33
  89. data/lib/vagrant/systems/solaris.rb +59 -0
  90. data/lib/vagrant/test_helpers.rb +109 -0
  91. data/lib/vagrant/ui.rb +65 -0
  92. data/lib/vagrant/util.rb +9 -19
  93. data/lib/vagrant/util/glob_loader.rb +19 -17
  94. data/lib/vagrant/util/hash_with_indifferent_access.rb +63 -0
  95. data/lib/vagrant/util/plain_logger.rb +2 -0
  96. data/lib/vagrant/util/platform.rb +2 -0
  97. data/lib/vagrant/util/resource_logger.rb +5 -70
  98. data/lib/vagrant/util/retryable.rb +25 -0
  99. data/lib/vagrant/util/template_renderer.rb +1 -1
  100. data/lib/vagrant/version.rb +1 -1
  101. data/lib/vagrant/vm.rb +27 -13
  102. data/templates/commands/init/Vagrantfile.erb +13 -0
  103. data/templates/config/validation_failed.erb +7 -0
  104. data/templates/locales/en.yml +402 -0
  105. data/templates/package_Vagrantfile.erb +1 -1
  106. data/test/locales/en.yml +8 -0
  107. data/test/test_helper.rb +19 -103
  108. data/test/vagrant/action/box/destroy_test.rb +7 -19
  109. data/test/vagrant/action/box/download_test.rb +9 -25
  110. data/test/vagrant/action/box/package_test.rb +2 -2
  111. data/test/vagrant/action/box/unpackage_test.rb +8 -34
  112. data/test/vagrant/action/box/verify_test.rb +10 -19
  113. data/test/vagrant/action/builder_test.rb +0 -15
  114. data/test/vagrant/action/env/set_test.rb +1 -1
  115. data/test/vagrant/action/environment_test.rb +8 -26
  116. data/test/vagrant/action/general/package_test.rb +53 -53
  117. data/test/vagrant/action/vm/boot_test.rb +5 -22
  118. data/test/vagrant/action/vm/check_box_test.rb +35 -25
  119. data/test/vagrant/action/vm/clean_machine_folder_test.rb +1 -1
  120. data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +1 -1
  121. data/test/vagrant/action/vm/clear_nfs_exports_test.rb +1 -1
  122. data/test/vagrant/action/vm/clear_shared_folders_test.rb +1 -1
  123. data/test/vagrant/action/vm/customize_test.rb +2 -1
  124. data/test/vagrant/action/vm/destroy_test.rb +1 -2
  125. data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +1 -1
  126. data/test/vagrant/action/vm/disable_networks_test.rb +10 -1
  127. data/test/vagrant/action/vm/discard_state_test.rb +10 -1
  128. data/test/vagrant/action/vm/export_test.rb +9 -37
  129. data/test/vagrant/action/vm/forward_ports_helpers_test.rb +2 -2
  130. data/test/vagrant/action/vm/forward_ports_test.rb +19 -16
  131. data/test/vagrant/action/vm/halt_test.rb +11 -1
  132. data/test/vagrant/action/vm/import_test.rb +37 -21
  133. data/test/vagrant/action/vm/match_mac_address_test.rb +1 -1
  134. data/test/vagrant/action/vm/network_test.rb +8 -7
  135. data/test/vagrant/action/vm/nfs_helpers_test.rb +6 -3
  136. data/test/vagrant/action/vm/nfs_test.rb +20 -45
  137. data/test/vagrant/action/vm/package_test.rb +1 -1
  138. data/test/vagrant/action/vm/package_vagrantfile_test.rb +1 -1
  139. data/test/vagrant/action/vm/provision_test.rb +10 -17
  140. data/test/vagrant/action/vm/resume_test.rb +1 -1
  141. data/test/vagrant/action/vm/share_folders_test.rb +25 -106
  142. data/test/vagrant/action/vm/suspend_test.rb +1 -1
  143. data/test/vagrant/action/warden_test.rb +105 -0
  144. data/test/vagrant/action_test.rb +5 -27
  145. data/test/vagrant/box_collection_test.rb +44 -0
  146. data/test/vagrant/box_test.rb +5 -105
  147. data/test/vagrant/cli_test.rb +35 -0
  148. data/test/vagrant/command/base_test.rb +23 -0
  149. data/test/vagrant/command/group_base_test.rb +15 -0
  150. data/test/vagrant/command/helpers_test.rb +88 -0
  151. data/test/vagrant/config/base_test.rb +52 -0
  152. data/test/vagrant/config/error_recorder_test.rb +18 -0
  153. data/test/vagrant/config/ssh_test.rb +12 -0
  154. data/test/vagrant/config/vagrant_test.rb +11 -0
  155. data/test/vagrant/config/vm_test.rb +70 -0
  156. data/test/vagrant/config_test.rb +113 -206
  157. data/test/vagrant/data_store_test.rb +68 -0
  158. data/test/vagrant/downloaders/base_test.rb +1 -1
  159. data/test/vagrant/downloaders/file_test.rb +4 -3
  160. data/test/vagrant/downloaders/http_test.rb +14 -4
  161. data/test/vagrant/environment_test.rb +290 -590
  162. data/test/vagrant/errors_test.rb +42 -0
  163. data/test/vagrant/hosts/base_test.rb +1 -1
  164. data/test/vagrant/hosts/bsd_test.rb +3 -6
  165. data/test/vagrant/hosts/linux_test.rb +3 -5
  166. data/test/vagrant/plugin_test.rb +9 -0
  167. data/test/vagrant/provisioners/base_test.rb +1 -1
  168. data/test/vagrant/provisioners/chef_server_test.rb +31 -35
  169. data/test/vagrant/provisioners/chef_solo_test.rb +1 -1
  170. data/test/vagrant/provisioners/chef_test.rb +7 -7
  171. data/test/vagrant/ssh_session_test.rb +3 -10
  172. data/test/vagrant/ssh_test.rb +25 -33
  173. data/test/vagrant/systems/linux_test.rb +6 -71
  174. data/test/vagrant/ui_test.rb +29 -0
  175. data/test/vagrant/util/hash_with_indifferent_access_test.rb +39 -0
  176. data/test/vagrant/util/resource_logger_test.rb +14 -81
  177. data/test/vagrant/util/retryable_test.rb +38 -0
  178. data/test/vagrant/util/template_renderer_test.rb +4 -4
  179. data/test/vagrant/vm_test.rb +47 -26
  180. data/vagrant.gemspec +14 -12
  181. metadata +121 -89
  182. data/bin/.gitignore +0 -0
  183. data/lib/vagrant/action/action_exception.rb +0 -16
  184. data/lib/vagrant/action/env/error_halt.rb +0 -16
  185. data/lib/vagrant/action/exception_catcher.rb +0 -14
  186. data/lib/vagrant/action/vm/persist.rb +0 -22
  187. data/lib/vagrant/active_list.rb +0 -83
  188. data/lib/vagrant/command.rb +0 -27
  189. data/lib/vagrant/commands/base.rb +0 -181
  190. data/lib/vagrant/commands/box.rb +0 -16
  191. data/lib/vagrant/commands/box/add.rb +0 -30
  192. data/lib/vagrant/commands/box/list.rb +0 -30
  193. data/lib/vagrant/commands/box/remove.rb +0 -30
  194. data/lib/vagrant/commands/box/repackage.rb +0 -35
  195. data/lib/vagrant/commands/destroy.rb +0 -37
  196. data/lib/vagrant/commands/halt.rb +0 -43
  197. data/lib/vagrant/commands/init.rb +0 -36
  198. data/lib/vagrant/commands/package.rb +0 -81
  199. data/lib/vagrant/commands/provision.rb +0 -31
  200. data/lib/vagrant/commands/reload.rb +0 -36
  201. data/lib/vagrant/commands/resume.rb +0 -35
  202. data/lib/vagrant/commands/ssh.rb +0 -78
  203. data/lib/vagrant/commands/ssh_config.rb +0 -45
  204. data/lib/vagrant/commands/status.rb +0 -125
  205. data/lib/vagrant/commands/suspend.rb +0 -36
  206. data/lib/vagrant/commands/up.rb +0 -44
  207. data/lib/vagrant/exceptions/uncallable_action.rb +0 -17
  208. data/lib/vagrant/util/translator.rb +0 -35
  209. data/templates/strings.yml +0 -341
  210. data/templates/unison/crontab_entry.erb +0 -1
  211. data/templates/unison/script.erb +0 -71
  212. data/test/vagrant/action/env/error_halt_test.rb +0 -21
  213. data/test/vagrant/action/exception_catcher_test.rb +0 -30
  214. data/test/vagrant/action/vm/persist_test.rb +0 -50
  215. data/test/vagrant/active_list_test.rb +0 -173
  216. data/test/vagrant/command_test.rb +0 -53
  217. data/test/vagrant/commands/base_test.rb +0 -139
  218. data/test/vagrant/commands/box/add_test.rb +0 -34
  219. data/test/vagrant/commands/box/list_test.rb +0 -32
  220. data/test/vagrant/commands/box/remove_test.rb +0 -41
  221. data/test/vagrant/commands/box/repackage_test.rb +0 -52
  222. data/test/vagrant/commands/destroy_test.rb +0 -44
  223. data/test/vagrant/commands/halt_test.rb +0 -50
  224. data/test/vagrant/commands/init_test.rb +0 -71
  225. data/test/vagrant/commands/package_test.rb +0 -97
  226. data/test/vagrant/commands/provision_test.rb +0 -60
  227. data/test/vagrant/commands/reload_test.rb +0 -47
  228. data/test/vagrant/commands/resume_test.rb +0 -44
  229. data/test/vagrant/commands/ssh_config_test.rb +0 -77
  230. data/test/vagrant/commands/ssh_test.rb +0 -129
  231. data/test/vagrant/commands/status_test.rb +0 -40
  232. data/test/vagrant/commands/suspend_test.rb +0 -44
  233. data/test/vagrant/commands/up_test.rb +0 -49
  234. data/test/vagrant/util/translator_test.rb +0 -61
  235. data/test/vagrant/util_test.rb +0 -27
@@ -1 +0,0 @@
1
- * * * * * <%= script %> '<%= from %>' '<%= to %>' '<%= options %>' >> <%= log_file %> 2>&1
@@ -1,71 +0,0 @@
1
- #!/bin/bash
2
- #------------------------------------------------------------
3
- # Author : John Bender and Mitchell Hashimoto
4
- # Description : Runs the `unison` folder synchronization
5
- # utility for shared folders.
6
- #------------------------------------------------------------
7
-
8
- #------------------------------------------------------------
9
- # Argument verification
10
- #------------------------------------------------------------
11
- if [ $# -ne 3 ]; then
12
- echo "Usage: `basename $0` from_folder to_folder options"
13
- exit 1
14
- fi
15
-
16
- # Sanitization function which turns any non-alphanumeric char
17
- # into a dash '-' and returns it by echoing the result.
18
- function sanitize() {
19
- local DATA=$1
20
- DATA=${DATA//[^a-zA-Z0-9_-]/-}
21
- echo ${DATA}
22
- }
23
-
24
- #------------------------------------------------------------
25
- # "Configuration"
26
- #------------------------------------------------------------
27
- # TODO Change lockfile to depend on the from/to folder to
28
- # allow multiple syncs of diff folders to happen at once.
29
- FROM=$1
30
- TO=$2
31
- OPTIONS=$3
32
- LOCK_FILE=`basename $0`-$(sanitize ${TO}).lck
33
-
34
- #------------------------------------------------------------
35
- # Am I Running?
36
- #------------------------------------------------------------
37
- if [ -f "${LOCK_FILE}" ]; then
38
- # The file exists, verify its running and if so exit.
39
- OUR_PID=`head -n 1 "${LOCK_FILE}"`
40
- TEST_RUNNING=`ps -p ${OUR_PID} | grep ${OUR_PID}`
41
-
42
- if [ "${TEST_RUNNING}" ]; then
43
- # The process is running, echo and exit.
44
- echo "Unison sync already running. [PID: ${OUR_PID}]"
45
- exit 0
46
- fi
47
- fi
48
-
49
- # We're not running if we reached this point, so lock
50
- # it up.
51
- echo $$ > "${LOCK_FILE}"
52
-
53
- #------------------------------------------------------------
54
- # The Meat
55
- #------------------------------------------------------------
56
- echo "Beginning Sync:"
57
- echo " -- From: ${FROM}"
58
- echo " -- To: ${TO}"
59
- echo " -- Options: ${OPTIONS}"
60
- while [ 1 ]; do
61
- echo "Syncing: $(date)"
62
- # TODO check result and output log data... somewhere!
63
- sudo unison ${FROM} ${TO} ${OPTIONS}
64
- sleep 1
65
- done
66
-
67
- #------------------------------------------------------------
68
- # Cleanup and Exit
69
- #------------------------------------------------------------
70
- rm -f "${LOCK_FILE}"
71
- exit 0
@@ -1,21 +0,0 @@
1
- require "test_helper"
2
-
3
- class ErrorHaltEnvActionTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Action::Env::ErrorHalt
6
- @app, @env = mock_action_data
7
- @instance = @klass.new(@app, @env)
8
- end
9
-
10
- should "continue the chain if no error" do
11
- assert !@env.error?
12
- @app.expects(:call).with(@env).once
13
- @instance.call(@env)
14
- end
15
-
16
- should "halt the chain if an error occured" do
17
- @env.error!(:foo)
18
- @app.expects(:call).never
19
- @instance.call(@env)
20
- end
21
- end
@@ -1,30 +0,0 @@
1
- require "test_helper"
2
-
3
- class ExceptionCatcherTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Class.new
6
- @klass.send(:include, Vagrant::Action::ExceptionCatcher)
7
- @env = Vagrant::Action::Environment.new(mock_environment)
8
-
9
- @instance = @klass.new
10
- end
11
-
12
- should "run block and return result if no exception" do
13
- result = @instance.catch_action_exception(@env) do
14
- true
15
- end
16
-
17
- assert result
18
- assert !@env.error?
19
- end
20
-
21
- should "run block and return false with error environment on exception" do
22
- result = @instance.catch_action_exception(@env) do
23
- raise Vagrant::Action::ActionException.new(:foo, :foo => :bar)
24
- end
25
-
26
- assert !result
27
- assert @env.error?
28
- assert_equal :foo, @env.error.first
29
- end
30
- end
@@ -1,50 +0,0 @@
1
- require "test_helper"
2
-
3
- class PersistVMActionTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Action::VM::Persist
6
- @app, @env = mock_action_data
7
-
8
- @vm = mock("vm")
9
- @vm.stubs(:uuid).returns("123")
10
- @env["vm"] = @vm
11
- end
12
-
13
- context "initializing" do
14
- setup do
15
- File.stubs(:file?).returns(true)
16
- File.stubs(:exist?).returns(true)
17
- @dotfile_path = "foo"
18
- @env.env.stubs(:dotfile_path).returns(@dotfile_path)
19
- end
20
-
21
- should "error environment if dotfile exists but is not a file" do
22
- File.expects(:file?).with(@env.env.dotfile_path).returns(false)
23
- @klass.new(@app, @env)
24
- assert @env.error?
25
- assert_equal :dotfile_error, @env.error.first
26
- end
27
-
28
- should "initialize properly if dotfiles doesn't exist" do
29
- File.expects(:exist?).with(@env.env.dotfile_path).returns(false)
30
- @klass.new(@app, @env)
31
- assert !@env.error?
32
- end
33
- end
34
-
35
- context "with an instance" do
36
- setup do
37
- File.stubs(:file?).returns(true)
38
- File.stubs(:exist?).returns(true)
39
- @instance = @klass.new(@app, @env)
40
- end
41
-
42
- should "persist the dotfile then continue chain" do
43
- update_seq = sequence("update_seq")
44
- @env.env.expects(:update_dotfile).in_sequence(update_seq)
45
- @app.expects(:call).with(@env).in_sequence(update_seq)
46
-
47
- @instance.call(@env)
48
- end
49
- end
50
- end
@@ -1,173 +0,0 @@
1
- require "test_helper"
2
-
3
- class ActiveListTest < Test::Unit::TestCase
4
- setup do
5
- @env = mock_environment
6
- @list = Vagrant::ActiveList.new(@env)
7
- end
8
-
9
- context "initializing" do
10
- should "set the environment to nil if not specified" do
11
- assert_nothing_raised {
12
- list = Vagrant::ActiveList.new
13
- assert list.env.nil?
14
- }
15
- end
16
-
17
- should "set the environment to the given parameter if specified" do
18
- env = mock("env")
19
- list = Vagrant::ActiveList.new(env)
20
- assert_equal env, list.env
21
- end
22
- end
23
-
24
- context "listing" do
25
- setup do
26
- @path = "foo"
27
- @list.stubs(:path).returns(@path)
28
- end
29
-
30
- should "load if reload is given" do
31
- File.stubs(:file?).returns(true)
32
- File.expects(:open).once
33
- @list.list(true)
34
- end
35
-
36
- should "not load if the active json file doesn't exist" do
37
- File.expects(:file?).with(@list.path).returns(false)
38
- File.expects(:open).never
39
- assert_equal Hash.new, @list.list(true)
40
- end
41
-
42
- should "parse the JSON by reading the file" do
43
- file = mock("file")
44
- data = mock("data")
45
- result = { :hey => :yep }
46
- File.expects(:file?).returns(true)
47
- File.expects(:open).with(@list.path, 'r').once.yields(file)
48
- file.expects(:read).returns(data)
49
- JSON.expects(:parse).with(data).returns(result)
50
- assert_equal result, @list.list(true)
51
- end
52
-
53
- should "not load if reload flag is false and already loaded" do
54
- File.expects(:file?).once.returns(false)
55
- result = @list.list(true)
56
- assert result.equal?(@list.list)
57
- assert result.equal?(@list.list)
58
- assert result.equal?(@list.list)
59
- end
60
-
61
- should "be an empty hash if JSON parsing raises an exception" do
62
- file = mock("file")
63
- file.stubs(:read)
64
- File.expects(:file?).returns(true)
65
- File.expects(:open).with(@list.path, 'r').once.yields(file)
66
- JSON.expects(:parse).raises(Exception)
67
-
68
- assert_nothing_raised do
69
- assert_equal Hash.new, @list.list(true)
70
- end
71
- end
72
- end
73
-
74
- context "filter list" do
75
- should "remove nonexistent VMs" do
76
- list = {}
77
- result = {}
78
- 5.times do |i|
79
- vm = mock("vm#{i}")
80
- vm.stubs(:uuid).returns(i)
81
-
82
- list[vm.uuid] = {}
83
-
84
- found_vm = i % 2 ? nil : vm
85
- Vagrant::VM.stubs(:find).with(vm.uuid, @env).returns(found_vm)
86
- results[vm.uuid] = {} if found_vm
87
- end
88
-
89
- @list.stubs(:list).returns(list)
90
- assert_equal result, @list.filter_list
91
- end
92
- end
93
-
94
- context "adding a VM to the list" do
95
- setup do
96
- @the_list = {}
97
- @list.stubs(:list).returns(@the_list)
98
- @list.stubs(:save)
99
-
100
- @uuid = "foo"
101
- @vm = mock("vm")
102
- @vm.stubs(:uuid).returns(@uuid)
103
- end
104
-
105
- should "add the VMs UUID to the list" do
106
- @list.add(@vm)
107
- assert @the_list[@uuid]
108
- assert @the_list[@uuid].is_a?(Hash)
109
- end
110
-
111
- should "save after adding" do
112
- save_seq = sequence('save')
113
- @the_list.expects(:[]=).in_sequence(save_seq)
114
- @list.expects(:save).in_sequence(save_seq)
115
- @list.add(@vm)
116
- end
117
- end
118
-
119
- context "deleting a VM from the list" do
120
- setup do
121
- @the_list = ["bar"]
122
- @list.stubs(:list).returns(@the_list)
123
- @list.stubs(:save)
124
-
125
- @uuid = "bar"
126
- @vm = mock("vm")
127
- @vm.stubs(:uuid).returns(@uuid)
128
- @vm.stubs(:is_a?).with(Vagrant::VM).returns(true)
129
- end
130
-
131
- should "delete the uuid from the list of a VM" do
132
- @list.remove(@vm)
133
- assert @the_list.empty?
134
- end
135
-
136
- should "delete just the string if a string is given" do
137
- @the_list << "zoo"
138
- @list.remove("zoo")
139
- assert !@the_list.include?("zoo")
140
- end
141
-
142
- should "save after removing" do
143
- save_seq = sequence('save')
144
- @the_list.expects(:delete).in_sequence(save_seq)
145
- @list.expects(:save).in_sequence(save_seq)
146
- @list.remove(@vm)
147
- end
148
- end
149
-
150
- context "saving" do
151
- setup do
152
- @filtered = ["zoo"]
153
- @list.stubs(:filter_list).returns(@filtered)
154
- end
155
-
156
- should "open the JSON path and save to it" do
157
- file = mock("file")
158
- File.expects(:open).with(@list.path, "w+").yields(file)
159
- file.expects(:write).with(@filtered.to_json)
160
- @list.save
161
- end
162
- end
163
-
164
- context "path" do
165
- setup do
166
- @env.stubs(:home_path).returns("foo")
167
- end
168
-
169
- should "return the active file within the home path" do
170
- assert_equal File.join(@env.home_path, Vagrant::ActiveList::FILENAME), @list.path
171
- end
172
- end
173
- end
@@ -1,53 +0,0 @@
1
- require "test_helper"
2
-
3
- class CommandTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Command
6
- end
7
-
8
- context "initializing" do
9
- setup do
10
- @env = mock("environment")
11
- end
12
-
13
- should "set the env attribute" do
14
- @instance = @klass.new(@env)
15
- assert_equal @env, @instance.env
16
- end
17
- end
18
-
19
- context "class methods" do
20
- context "executing" do
21
- should "load the environment then send the command on commands" do
22
- env = mock("env")
23
- commands = mock("commands")
24
- env.stubs(:commands).returns(commands)
25
- Vagrant::Environment.expects(:load!).returns(env)
26
- commands.expects(:subcommand).with(1,2,3).once
27
-
28
- @klass.execute(1,2,3)
29
- end
30
- end
31
- end
32
-
33
- context "with an instance" do
34
- setup do
35
- @env = mock_environment
36
- @instance = @klass.new(@env)
37
- end
38
-
39
- context "subcommands" do
40
- setup do
41
- @raw_name = :bar
42
- @name = :foo
43
- @instance.stubs(:camelize).with(@raw_name).returns(@name)
44
- end
45
-
46
- should "send the env, name, and args to the base class" do
47
- args = [1,2,3]
48
- Vagrant::Commands::Base.expects(:dispatch).with(@env, @name, *args)
49
- @instance.subcommand(@name, *args)
50
- end
51
- end
52
- end
53
- end
@@ -1,139 +0,0 @@
1
- require "test_helper"
2
-
3
- class CommandsBaseTest < Test::Unit::TestCase
4
- setup do
5
- @klass = Vagrant::Commands::Base
6
- end
7
-
8
- context "initializing" do
9
- should "setup the env attribute" do
10
- env = mock("env")
11
- instance = @klass.new(env)
12
- assert_equal env, instance.env
13
- end
14
- end
15
-
16
- context "class methods" do
17
- setup do
18
- @env = mock_environment
19
- @klass.subcommands.clear
20
- end
21
-
22
- context "registering commands" do
23
- should "register commands" do
24
- klass = mock("klass")
25
- @klass.subcommand("init", klass)
26
- assert_equal klass, @klass.subcommands["init"]
27
- end
28
- end
29
-
30
- context "dispatching to subcommands" do
31
- setup do
32
- @command_klass = mock("klass")
33
- @name = "init"
34
- @klass.subcommand(@name, @command_klass)
35
-
36
- @args = [1,2,3]
37
- end
38
-
39
- should "call dispatch on child if subcommand is found" do
40
- @command_klass.expects(:dispatch).with(@env, *@args)
41
- @klass.dispatch(@env, @name, *@args)
42
- end
43
-
44
- should "instantiate and execute when no subcommand is found" do
45
- instance = mock("instance")
46
- @klass.expects(:new).with(@env).returns(instance)
47
- instance.expects(:execute).with(@args)
48
- @klass.dispatch(@env, *@args)
49
- end
50
- end
51
-
52
- context "descriptions" do
53
- should "be able to set description" do
54
- description = "The lazy fox yada yada"
55
- @klass.description(description)
56
- assert_equal description, @klass.description
57
- end
58
- end
59
- end
60
-
61
- context "instance methods" do
62
- setup do
63
- @env = mock_environment
64
- @instance = @klass.new(@env)
65
- end
66
-
67
- context "executing" do
68
- should "show version if flag is set" do
69
- @instance.expects(:puts_version).once
70
- @instance.expects(:show_help).never
71
- @instance.execute(["--version"])
72
- end
73
-
74
- should "just print the help by default" do
75
- @instance.expects(:puts_version).never
76
- @instance.expects(:show_help).once
77
- @instance.execute([])
78
- end
79
- end
80
-
81
- context "all or single methods" do
82
- should "call the single method if a name is given" do
83
- name = "bar"
84
- @instance.expects(:foo_single).with(name).once
85
- @instance.all_or_single(["bar"], :foo)
86
- end
87
-
88
- should "call the single method for each VM if no name is given" do
89
- vms = { :foo => nil, :bar => nil }
90
- vms.keys.each do |name|
91
- @instance.expects(:foo_single).with(name).once
92
- end
93
-
94
- @env.stubs(:vms).returns(vms)
95
- @instance.all_or_single([], :foo)
96
- end
97
- end
98
-
99
- context "getting the option parser" do
100
- should "create it with the options spec if it hasn't been created yet" do
101
- opts = mock("opts")
102
- opts.stubs(:on)
103
-
104
- result = mock("result")
105
- OptionParser.expects(:new).yields(opts).returns(result)
106
- @instance.expects(:options_spec).with(opts)
107
-
108
- assert_equal result, @instance.option_parser(true)
109
- end
110
-
111
- should "not create it once its been created" do
112
- result = mock("result")
113
- OptionParser.expects(:new).once.returns(result)
114
-
115
- assert_equal result, @instance.option_parser(true)
116
- assert_equal result, @instance.option_parser
117
- assert_equal result, @instance.option_parser
118
- end
119
- end
120
-
121
- context "parsing options" do
122
- setup do
123
- @args = []
124
-
125
- @options = mock("options")
126
- @option_parser = mock("option_parser")
127
-
128
- @instance.stubs(:option_parser).returns(@option_parser)
129
- @instance.stubs(:options).returns(@options)
130
- end
131
-
132
- should "parse the options with the args" do
133
- result = mock("result")
134
- @option_parser.expects(:parse!).with(@args).once.returns(result)
135
- assert_equal result, @instance.parse_options(@args)
136
- end
137
- end
138
- end
139
- end