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
@@ -0,0 +1,42 @@
1
+ require "test_helper"
2
+
3
+ class ErrorsTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Errors::VagrantError
6
+ @super = Class.new(@klass) { error_namespace("vagrant.test.errors") }
7
+ end
8
+
9
+ should "set the given status code" do
10
+ klass = Class.new(@super) { status_code(4444) }
11
+ assert_equal 4444, klass.new.status_code
12
+ end
13
+
14
+ should "raise an error if attempting to set the same status code twice" do
15
+ klass = Class.new(@super) { status_code(4445) }
16
+
17
+ assert_raises(RuntimeError) {
18
+ Class.new(@super) { status_code(4445) }
19
+ }
20
+ end
21
+
22
+ should "translate the given message if non-hash is given" do
23
+ klass = Class.new(@super)
24
+ assert_equal I18n.t("vagrant.test.errors.test_key"), klass.new("test_key").message
25
+ end
26
+
27
+ should "use the alternate namespace if given" do
28
+ klass = Class.new(@super)
29
+ instance = klass.new(:_key => :test_key, :_namespace => "vagrant.test.alternate")
30
+ assert_equal I18n.t("vagrant.test.alternate.test_key"), instance.message
31
+ end
32
+
33
+ should "use the translation from I18n if specified" do
34
+ klass = Class.new(@super) { error_key(:test_key) }
35
+ assert_equal I18n.t("vagrant.test.errors.test_key"), klass.new.message
36
+ end
37
+
38
+ should "use the translation with the options specified if key given" do
39
+ klass = Class.new(@super) { error_key(:test_key_with_interpolation) }
40
+ assert_equal I18n.t("vagrant.test.errors.test_key_with_interpolation", :key => "yo"), klass.new(:key => "yo").message
41
+ end
42
+ end
@@ -8,7 +8,7 @@ class BaseHostTest < Test::Unit::TestCase
8
8
  context "class methods" do
9
9
  context "loading" do
10
10
  setup do
11
- @env = mock_environment
11
+ @env = vagrant_env
12
12
  end
13
13
 
14
14
  should "return detected class if klass is nil" do
@@ -3,11 +3,8 @@ require "test_helper"
3
3
  class BSDHostTest < Test::Unit::TestCase
4
4
  setup do
5
5
  @klass = Vagrant::Hosts::BSD
6
- @env = mock_environment
7
- @env.stubs(:vm).returns(Vagrant::VM.new(:env => @env))
8
- @env.logger.stubs(:info)
9
-
10
- @instance = @klass.new(@env)
6
+ @env = vagrant_env
7
+ @instance = @klass.new(@env.vms.values.first.env)
11
8
  end
12
9
 
13
10
  context "supporting nfs check" do
@@ -40,7 +37,7 @@ class BSDHostTest < Test::Unit::TestCase
40
37
  should "output the lines of the rendered template" do
41
38
  output = %W[foo bar baz].join("\n")
42
39
  Vagrant::Util::TemplateRenderer.expects(:render).with("nfs/exports",
43
- :uuid => @env.vm.uuid,
40
+ :uuid => @instance.env.vm.uuid,
44
41
  :ip => @ip,
45
42
  :folders => @folders).returns(output)
46
43
 
@@ -3,11 +3,9 @@ require "test_helper"
3
3
  class LinuxHostTest < Test::Unit::TestCase
4
4
  setup do
5
5
  @klass = Vagrant::Hosts::Linux
6
- @env = mock_environment
7
- @env.stubs(:vm).returns(Vagrant::VM.new(:env => @env))
8
- @env.logger.stubs(:info)
6
+ @env = vagrant_env
9
7
 
10
- @instance = @klass.new(@env)
8
+ @instance = @klass.new(@env.vms.values.first.env)
11
9
  end
12
10
 
13
11
  context "supporting nfs check" do
@@ -40,7 +38,7 @@ class LinuxHostTest < Test::Unit::TestCase
40
38
  should "output the lines of the rendered template" do
41
39
  output = %W[foo bar baz].join("\n")
42
40
  Vagrant::Util::TemplateRenderer.expects(:render).with("nfs/exports_linux",
43
- :uuid => @env.vm.uuid,
41
+ :uuid => @instance.env.vm.uuid,
44
42
  :ip => @ip,
45
43
  :folders => @folders).returns(output)
46
44
 
@@ -0,0 +1,9 @@
1
+ require "test_helper"
2
+
3
+ class PluginTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Plugin
6
+ end
7
+
8
+ # This is a pretty tough class to test. TODO.
9
+ end
@@ -7,7 +7,7 @@ class BaseProvisionerTest < Test::Unit::TestCase
7
7
 
8
8
  context "base instance" do
9
9
  setup do
10
- @env = Vagrant::Action::Environment.new(mock_environment)
10
+ @env = Vagrant::Action::Environment.new(vagrant_env)
11
11
  @base = Vagrant::Provisioners::Base.new(@env)
12
12
  end
13
13
 
@@ -2,7 +2,7 @@ require "test_helper"
2
2
 
3
3
  class ChefServerProvisionerTest < Test::Unit::TestCase
4
4
  setup do
5
- @action_env = Vagrant::Action::Environment.new(mock_environment)
5
+ @action_env = Vagrant::Action::Environment.new(vagrant_env)
6
6
  @action_env.env.vm = mock_vm
7
7
 
8
8
  @action = Vagrant::Provisioners::ChefServer.new(@action_env)
@@ -30,76 +30,72 @@ class ChefServerProvisionerTest < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  should "not raise an exception if validation_key_path is set" do
33
- @env = mock_environment do |config|
33
+ @env = vagrant_env(vagrantfile(<<-vf))
34
34
  config.chef.validation_key_path = "7"
35
- end
35
+ config.chef.chef_server_url = "7"
36
+ vf
36
37
 
37
38
  @action.stubs(:env).returns(@env)
38
-
39
- @action.prepare
40
- assert !@action_env.error?
39
+ assert_nothing_raised { @action.prepare }
41
40
  end
42
41
 
43
- should "eraise an exception if validation_key_path is nil" do
44
- @env = mock_environment do |config|
42
+ should "raise an exception if validation_key_path is nil" do
43
+ @env = vagrant_env(vagrantfile(<<-vf))
45
44
  config.chef.validation_key_path = nil
46
- end
45
+ vf
47
46
 
48
47
  @action.stubs(:env).returns(@env)
49
48
 
50
- @action.prepare
51
- assert @action_env.error?
52
- assert_equal :chef_server_validation_key_required, @action_env.error.first
49
+ assert_raises(Vagrant::Provisioners::Chef::ChefError) {
50
+ @action.prepare
51
+ }
53
52
  end
54
53
 
55
54
  should "not raise an exception if validation_key_path does exist" do
56
- @env = mock_environment do |config|
57
- config.chef.validation_key_path = "7"
58
- end
55
+ @env = vagrant_env(vagrantfile(<<-vf))
56
+ config.chef.validation_key_path = "#{vagrantfile(tmp_path)}"
57
+ config.chef.chef_server_url = "7"
58
+ vf
59
59
 
60
60
  @action.stubs(:env).returns(@env)
61
- @action.stubs(:validation_key_path).returns("9")
62
-
63
- File.expects(:file?).with(@action.validation_key_path).returns(true)
64
- @action.prepare
65
- assert !@action_env.error?
61
+ assert_nothing_raised { @action.prepare }
66
62
  end
67
63
 
68
64
  should "raise an exception if validation_key_path doesn't exist" do
69
- @env = mock_environment do |config|
65
+ @env = vagrant_env(vagrantfile(<<-vf))
70
66
  config.chef.validation_key_path = "7"
71
- end
67
+ config.chef.chef_server_url = "7"
68
+ vf
72
69
 
73
70
  @action.stubs(:env).returns(@env)
74
71
  @action.stubs(:validation_key_path).returns("9")
75
72
 
76
73
  File.expects(:file?).with(@action.validation_key_path).returns(false)
77
- @action.prepare
78
- assert @action_env.error?
79
- assert_equal :chef_server_validation_key_doesnt_exist, @action_env.error.first
74
+ assert_raises(Vagrant::Provisioners::Chef::ChefError) {
75
+ @action.prepare
76
+ }
80
77
  end
81
78
 
82
79
  should "not raise an exception if chef_server_url is set" do
83
- @env = mock_environment do |config|
80
+ @env = vagrant_env(vagrantfile(<<-vf))
81
+ config.chef.validation_key_path = "#{vagrantfile(tmp_path)}"
84
82
  config.chef.chef_server_url = "7"
85
- end
83
+ vf
86
84
 
87
85
  @action.stubs(:env).returns(@env)
88
-
89
- @action.prepare
90
- assert !@action_env.error?
86
+ assert_nothing_raised { @action.prepare }
91
87
  end
92
88
 
93
89
  should "raise an exception if chef_server_url is nil" do
94
- @env = mock_environment do |config|
90
+ @env = vagrant_env(vagrantfile(<<-vf))
95
91
  config.chef.chef_server_url = nil
96
- end
92
+ vf
97
93
 
98
94
  @action.stubs(:env).returns(@env)
99
95
 
100
- @action.prepare
101
- assert @action_env.error?
102
- assert_equal :chef_server_url_required, @action_env.error.first
96
+ assert_raises(Vagrant::Provisioners::Chef::ChefError) {
97
+ @action.prepare
98
+ }
103
99
  end
104
100
  end
105
101
 
@@ -2,7 +2,7 @@ require "test_helper"
2
2
 
3
3
  class ChefSoloProvisionerTest < Test::Unit::TestCase
4
4
  setup do
5
- @action_env = Vagrant::Action::Environment.new(mock_environment)
5
+ @action_env = Vagrant::Action::Environment.new(vagrant_env)
6
6
  @action_env.env.vm = mock_vm
7
7
 
8
8
  @action = Vagrant::Provisioners::ChefSolo.new(@action_env)
@@ -2,7 +2,7 @@ require "test_helper"
2
2
 
3
3
  class ChefProvisionerTest < Test::Unit::TestCase
4
4
  setup do
5
- @action_env = Vagrant::Action::Environment.new(mock_environment)
5
+ @action_env = Vagrant::Action::Environment.new(vagrant_env)
6
6
  @action_env.env.vm = mock_vm
7
7
 
8
8
  @action = Vagrant::Provisioners::Chef.new(@action_env)
@@ -12,9 +12,9 @@ class ChefProvisionerTest < Test::Unit::TestCase
12
12
 
13
13
  context "preparing" do
14
14
  should "error the environment" do
15
- @action.prepare
16
- assert @action_env.error?
17
- assert_equal :chef_base_invalid_provisioner, @action_env.error.first
15
+ assert_raises(Vagrant::Provisioners::Chef::ChefError) {
16
+ @action.prepare
17
+ }
18
18
  end
19
19
  end
20
20
 
@@ -25,8 +25,8 @@ class ChefProvisionerTest < Test::Unit::TestCase
25
25
  end
26
26
 
27
27
  should "not include the 'json' key in the config dump" do
28
- result = JSON.parse(@config.to_json)
29
- assert !result.has_key?("json")
28
+ result = @config.to_json
29
+ assert result !~ /"json":/
30
30
  end
31
31
 
32
32
  should "provide accessors to the run list" do
@@ -73,7 +73,7 @@ class ChefProvisionerTest < Test::Unit::TestCase
73
73
 
74
74
  should "verify binary exists" do
75
75
  binary = "foo"
76
- @ssh.expects(:exec!).with("which #{binary}", :error_key => :chef_not_detected, :error_data => { :binary => binary }).once
76
+ @ssh.expects(:exec!).with("which #{binary}", anything)
77
77
  @action.verify_binary(binary)
78
78
  end
79
79
  end
@@ -19,21 +19,14 @@ class SshSessionTest < Test::Unit::TestCase
19
19
 
20
20
  context "checking exit status" do
21
21
  should "raise an ActionException if its non-zero" do
22
- assert_raises(Vagrant::Action::ActionException) {
22
+ assert_raises(Vagrant::Errors::VagrantError) {
23
23
  @instance.check_exit_status(1, "foo")
24
24
  }
25
25
  end
26
26
 
27
27
  should "raise the given exception if specified" do
28
- options = {
29
- :error_key => :foo,
30
- :error_data => {}
31
- }
32
- result = Exception.new
33
- Vagrant::Action::ActionException.expects(:new).with(options[:error_key], options[:error_data]).once.returns(result)
34
-
35
- assert_raises(Exception) {
36
- @instance.check_exit_status(1, "foo", options)
28
+ assert_raises(Vagrant::Errors::BaseVMNotFound) {
29
+ @instance.check_exit_status(1, "foo", :_error_class => Vagrant::Errors::BaseVMNotFound)
37
30
  }
38
31
  end
39
32
 
@@ -2,11 +2,7 @@ require "test_helper"
2
2
 
3
3
  class SshTest < Test::Unit::TestCase
4
4
  def mock_ssh
5
- @env = mock_environment do |config|
6
- yield config if block_given?
7
- end
8
-
9
- @forwarded_ports = []
5
+ @env = vagrant_env
10
6
  @network_adapters = []
11
7
  @vm = mock("vm")
12
8
  @vm.stubs(:network_adapters).returns(@network_adapters)
@@ -18,14 +14,13 @@ class SshTest < Test::Unit::TestCase
18
14
  end
19
15
 
20
16
  setup do
21
- VirtualBox.stubs(:version).returns("3.1.4")
17
+ VirtualBox.stubs(:version).returns("3.2.4")
22
18
  end
23
19
 
24
20
  context "connecting to external SSH" do
25
21
  setup do
26
22
  mock_ssh
27
23
  @ssh.stubs(:check_key_permissions)
28
- @ssh.stubs(:error_and_exit)
29
24
  Kernel.stubs(:exec)
30
25
 
31
26
  Vagrant::Util::Platform.stubs(:leopard?).returns(false)
@@ -68,6 +63,10 @@ class SshTest < Test::Unit::TestCase
68
63
  Vagrant::Util::Platform.stubs(:leopard?).returns(true)
69
64
  end
70
65
 
66
+ teardown do
67
+ Vagrant::Util::Platform.stubs(:leopard?).returns(false)
68
+ end
69
+
71
70
  should "fork, exec, and wait" do
72
71
  pid = mock("pid")
73
72
  @ssh.expects(:fork).once.returns(pid)
@@ -78,18 +77,18 @@ class SshTest < Test::Unit::TestCase
78
77
  end
79
78
 
80
79
  context "checking windows" do
80
+ teardown do
81
+ Mario::Platform.forced = Mario::Platform::Linux
82
+ end
83
+
81
84
  should "error and exit if the platform is windows" do
82
- Mario::Platform.expects(:windows?).returns(true)
83
- @ssh.expects(:error_and_exit).with do |error_name, opts|
84
- opts[:key_path] && opts[:ssh_port]
85
- end
86
- @ssh.connect
85
+ Mario::Platform.forced = Mario::Platform::Windows7
86
+ assert_raises(Vagrant::Errors::SSHUnavailableWindows) { @ssh.connect }
87
87
  end
88
88
 
89
89
  should "not error and exit if the platform is anything other that windows" do
90
- Mario::Platform.expects(:windows?).returns(false)
91
- @ssh.expects(:error_and_exit).never
92
- @ssh.connect
90
+ Mario::Platform.forced = Mario::Platform::Linux
91
+ assert_nothing_raised { @ssh.connect }
93
92
  end
94
93
  end
95
94
 
@@ -171,13 +170,6 @@ class SshTest < Test::Unit::TestCase
171
170
  @ssh.expects(:execute).yields(ssh).once
172
171
  @ssh.upload!("foo", "bar")
173
172
  end
174
-
175
- should "retry 5 times" do
176
- @ssh.expects(:execute).times(5).raises(IOError)
177
- assert_raises(IOError) {
178
- @ssh.upload!("foo", "bar")
179
- }
180
- end
181
173
  end
182
174
 
183
175
  context "checking if host is up" do
@@ -205,7 +197,7 @@ class SshTest < Test::Unit::TestCase
205
197
  end
206
198
 
207
199
  should "return false if the connection is refused" do
208
- Net::SSH.expects(:start).raises(Errno::ECONNREFUSED)
200
+ Net::SSH.expects(:start).times(5).raises(Errno::ECONNREFUSED)
209
201
  assert_nothing_raised {
210
202
  assert !@ssh.up?
211
203
  }
@@ -225,8 +217,7 @@ class SshTest < Test::Unit::TestCase
225
217
 
226
218
  should "error and exit if a Net::SSH::AuthenticationFailed is raised" do
227
219
  @ssh.expects(:execute).raises(Net::SSH::AuthenticationFailed)
228
- @ssh.expects(:error_and_exit).with(:vm_ssh_auth_failed).once
229
- @ssh.up?
220
+ assert_raises(Vagrant::Errors::SSHAuthenticationFailed) { @ssh.up? }
230
221
  end
231
222
  end
232
223
 
@@ -252,11 +243,15 @@ class SshTest < Test::Unit::TestCase
252
243
  @stat.stubs(:owned?).returns(true)
253
244
  File.stubs(:stat).returns(@stat)
254
245
 
255
- Mario::Platform.stubs(:windows?).returns(false)
246
+ Mario::Platform.forced = Mario::Platform::Linux
247
+ end
248
+
249
+ teardown do
250
+ Mario::Platform.forced = Mario::Platform::Linux
256
251
  end
257
252
 
258
253
  should "do nothing if on windows" do
259
- Mario::Platform.stubs(:windows?).returns(true)
254
+ Mario::Platform.forced = Mario::Platform::Windows7
260
255
  File.expects(:stat).never
261
256
  @ssh.check_key_permissions(@key_path)
262
257
  end
@@ -278,8 +273,7 @@ class SshTest < Test::Unit::TestCase
278
273
  @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
279
274
  File.expects(:chmod).with(0600, @key_path).once.in_sequence(perm_sequence)
280
275
  @ssh.expects(:file_perms).returns("600").in_sequence(perm_sequence)
281
- @ssh.expects(:error_and_exit).never
282
- @ssh.check_key_permissions(@key_path)
276
+ assert_nothing_raised { @ssh.check_key_permissions(@key_path) }
283
277
  end
284
278
 
285
279
  should "error and exit if the resulting chmod doesn't work" do
@@ -287,15 +281,13 @@ class SshTest < Test::Unit::TestCase
287
281
  @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
288
282
  File.expects(:chmod).with(0600, @key_path).once.in_sequence(perm_sequence)
289
283
  @ssh.expects(:file_perms).returns("900").in_sequence(perm_sequence)
290
- @ssh.expects(:error_and_exit).once.with(:ssh_bad_permissions, :key_path => @key_path).in_sequence(perm_sequence)
291
- @ssh.check_key_permissions(@key_path)
284
+ assert_raises(Vagrant::Errors::SSHKeyBadPermissions) { @ssh.check_key_permissions(@key_path) }
292
285
  end
293
286
 
294
287
  should "error and exit if a bad file perm is raised" do
295
288
  @ssh.expects(:file_perms).with(@key_path).returns("900")
296
289
  File.expects(:chmod).raises(Errno::EPERM)
297
- @ssh.expects(:error_and_exit).once.with(:ssh_bad_permissions, :key_path => @key_path)
298
- @ssh.check_key_permissions(@key_path)
290
+ assert_raises(Vagrant::Errors::SSHKeyBadPermissions) { @ssh.check_key_permissions(@key_path) }
299
291
  end
300
292
  end
301
293