vagrantup 0.5.2 → 0.5.3

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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +10 -0
  3. data/CHANGELOG.md +48 -0
  4. data/Gemfile +16 -0
  5. data/Gemfile.lock +49 -0
  6. data/README.md +2 -2
  7. data/Rakefile +22 -0
  8. data/bin/.gitignore +0 -0
  9. data/lib/vagrant/provisioners/chef_solo.rb +1 -1
  10. data/lib/vagrant/util/template_renderer.rb +2 -2
  11. data/lib/vagrant/version.rb +1 -1
  12. data/templates/Vagrantfile.erb +1 -1
  13. data/templates/nfs/exports.erb +4 -2
  14. data/test/test_helper.rb +128 -0
  15. data/test/vagrant/action/box/destroy_test.rb +30 -0
  16. data/test/vagrant/action/box/download_test.rb +141 -0
  17. data/test/vagrant/action/box/package_test.rb +25 -0
  18. data/test/vagrant/action/box/unpackage_test.rb +103 -0
  19. data/test/vagrant/action/box/verify_test.rb +39 -0
  20. data/test/vagrant/action/builder_test.rb +218 -0
  21. data/test/vagrant/action/env/error_halt_test.rb +21 -0
  22. data/test/vagrant/action/env/set_test.rb +24 -0
  23. data/test/vagrant/action/environment_test.rb +45 -0
  24. data/test/vagrant/action/exception_catcher_test.rb +30 -0
  25. data/test/vagrant/action/general/package_test.rb +254 -0
  26. data/test/vagrant/action/vm/boot_test.rb +83 -0
  27. data/test/vagrant/action/vm/check_box_test.rb +48 -0
  28. data/test/vagrant/action/vm/check_guest_additions_test.rb +9 -0
  29. data/test/vagrant/action/vm/clean_machine_folder_test.rb +82 -0
  30. data/test/vagrant/action/vm/clear_forwarded_ports_test.rb +72 -0
  31. data/test/vagrant/action/vm/clear_nfs_exports_test.rb +22 -0
  32. data/test/vagrant/action/vm/clear_shared_folders_test.rb +49 -0
  33. data/test/vagrant/action/vm/customize_test.rb +29 -0
  34. data/test/vagrant/action/vm/destroy_test.rb +26 -0
  35. data/test/vagrant/action/vm/destroy_unused_network_interfaces_test.rb +46 -0
  36. data/test/vagrant/action/vm/disable_networks_test.rb +39 -0
  37. data/test/vagrant/action/vm/discard_state_test.rb +36 -0
  38. data/test/vagrant/action/vm/export_test.rb +135 -0
  39. data/test/vagrant/action/vm/forward_ports_helpers_test.rb +70 -0
  40. data/test/vagrant/action/vm/forward_ports_test.rb +191 -0
  41. data/test/vagrant/action/vm/halt_test.rb +69 -0
  42. data/test/vagrant/action/vm/import_test.rb +50 -0
  43. data/test/vagrant/action/vm/match_mac_address_test.rb +28 -0
  44. data/test/vagrant/action/vm/network_test.rb +246 -0
  45. data/test/vagrant/action/vm/nfs_helpers_test.rb +23 -0
  46. data/test/vagrant/action/vm/nfs_test.rb +269 -0
  47. data/test/vagrant/action/vm/package_test.rb +25 -0
  48. data/test/vagrant/action/vm/package_vagrantfile_test.rb +46 -0
  49. data/test/vagrant/action/vm/persist_test.rb +50 -0
  50. data/test/vagrant/action/vm/provision_test.rb +134 -0
  51. data/test/vagrant/action/vm/resume_test.rb +35 -0
  52. data/test/vagrant/action/vm/share_folders_test.rb +215 -0
  53. data/test/vagrant/action/vm/suspend_test.rb +35 -0
  54. data/test/vagrant/action_test.rb +111 -0
  55. data/test/vagrant/active_list_test.rb +173 -0
  56. data/test/vagrant/box_test.rb +166 -0
  57. data/test/vagrant/command_test.rb +53 -0
  58. data/test/vagrant/commands/base_test.rb +139 -0
  59. data/test/vagrant/commands/box/add_test.rb +34 -0
  60. data/test/vagrant/commands/box/list_test.rb +32 -0
  61. data/test/vagrant/commands/box/remove_test.rb +41 -0
  62. data/test/vagrant/commands/box/repackage_test.rb +52 -0
  63. data/test/vagrant/commands/destroy_test.rb +44 -0
  64. data/test/vagrant/commands/halt_test.rb +50 -0
  65. data/test/vagrant/commands/init_test.rb +71 -0
  66. data/test/vagrant/commands/package_test.rb +97 -0
  67. data/test/vagrant/commands/provision_test.rb +60 -0
  68. data/test/vagrant/commands/reload_test.rb +47 -0
  69. data/test/vagrant/commands/resume_test.rb +44 -0
  70. data/test/vagrant/commands/ssh_config_test.rb +77 -0
  71. data/test/vagrant/commands/ssh_test.rb +129 -0
  72. data/test/vagrant/commands/status_test.rb +40 -0
  73. data/test/vagrant/commands/suspend_test.rb +44 -0
  74. data/test/vagrant/commands/up_test.rb +49 -0
  75. data/test/vagrant/config_test.rb +307 -0
  76. data/test/vagrant/downloaders/base_test.rb +28 -0
  77. data/test/vagrant/downloaders/file_test.rb +33 -0
  78. data/test/vagrant/downloaders/http_test.rb +70 -0
  79. data/test/vagrant/environment_test.rb +770 -0
  80. data/test/vagrant/hosts/base_test.rb +46 -0
  81. data/test/vagrant/hosts/bsd_test.rb +56 -0
  82. data/test/vagrant/hosts/linux_test.rb +56 -0
  83. data/test/vagrant/provisioners/base_test.rb +36 -0
  84. data/test/vagrant/provisioners/chef_server_test.rb +182 -0
  85. data/test/vagrant/provisioners/chef_solo_test.rb +197 -0
  86. data/test/vagrant/provisioners/chef_test.rb +178 -0
  87. data/test/vagrant/ssh_session_test.rb +46 -0
  88. data/test/vagrant/ssh_test.rb +317 -0
  89. data/test/vagrant/systems/linux_test.rb +179 -0
  90. data/test/vagrant/util/busy_test.rb +106 -0
  91. data/test/vagrant/util/plain_logger_test.rb +17 -0
  92. data/test/vagrant/util/platform_test.rb +18 -0
  93. data/test/vagrant/util/resource_logger_test.rb +145 -0
  94. data/test/vagrant/util/stacked_proc_runner_test.rb +43 -0
  95. data/test/vagrant/util/template_renderer_test.rb +145 -0
  96. data/test/vagrant/util/translator_test.rb +61 -0
  97. data/test/vagrant/util_test.rb +27 -0
  98. data/test/vagrant/vm_test.rb +228 -0
  99. data/vagrant.gemspec +34 -0
  100. metadata +130 -9
@@ -0,0 +1,47 @@
1
+ require "test_helper"
2
+
3
+ class CommandsReloadTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::Reload
6
+
7
+ @env = mock_environment
8
+ @env.stubs(:require_root_path)
9
+ @instance = @klass.new(@env)
10
+ end
11
+
12
+ context "executing" do
13
+ should "call all or single for the method" do
14
+ seq = sequence("seq")
15
+ @env.expects(:require_root_path).in_sequence(seq)
16
+ @instance.expects(:all_or_single).with([], :reload).in_sequence(seq)
17
+ @instance.execute
18
+ end
19
+ end
20
+
21
+ context "reloading a single VM" do
22
+ setup do
23
+ @foo_vm = mock("vm")
24
+ @foo_vm.stubs(:env).returns(@env)
25
+ vms = { :foo => @foo_vm }
26
+ @env.stubs(:vms).returns(vms)
27
+ end
28
+
29
+ should "error and exit if the VM doesn't exist" do
30
+ @env.stubs(:vms).returns({})
31
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => :foo).once
32
+ @instance.reload_single(:foo)
33
+ end
34
+
35
+ should "reload if its created" do
36
+ @foo_vm.stubs(:created?).returns(true)
37
+ @foo_vm.expects(:reload).once
38
+ @instance.execute(["foo"])
39
+ end
40
+
41
+ should "do nothing if its not created" do
42
+ @foo_vm.stubs(:created?).returns(false)
43
+ @foo_vm.expects(:reload).never
44
+ @instance.reload_single(:foo)
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,44 @@
1
+ require "test_helper"
2
+
3
+ class CommandsResumeTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::Resume
6
+
7
+ @env = mock_environment
8
+ @instance = @klass.new(@env)
9
+ end
10
+
11
+ context "executing" do
12
+ should "call all or single for the method" do
13
+ @instance.expects(:all_or_single).with([], :resume)
14
+ @instance.execute
15
+ end
16
+ end
17
+
18
+ context "resuming a single VM" do
19
+ setup do
20
+ @foo_vm = mock("vm")
21
+ @foo_vm.stubs(:env).returns(@env)
22
+ vms = { :foo => @foo_vm }
23
+ @env.stubs(:vms).returns(vms)
24
+ end
25
+
26
+ should "error and exit if the VM doesn't exist" do
27
+ @env.stubs(:vms).returns({})
28
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => :foo).once
29
+ @instance.resume_single(:foo)
30
+ end
31
+
32
+ should "resume if its created" do
33
+ @foo_vm.stubs(:created?).returns(true)
34
+ @foo_vm.expects(:resume).once
35
+ @instance.execute(["foo"])
36
+ end
37
+
38
+ should "do nothing if its not created" do
39
+ @foo_vm.stubs(:created?).returns(false)
40
+ @foo_vm.expects(:resume).never
41
+ @instance.resume_single(:foo)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,77 @@
1
+ require "test_helper"
2
+
3
+ class CommandsSSHConfigTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::SSHConfig
6
+
7
+ @env = mock_environment
8
+ @env.stubs(:require_root_path)
9
+ @instance = @klass.new(@env)
10
+ end
11
+
12
+ context "executing" do
13
+ setup do
14
+ @instance.stubs(:show_single)
15
+ end
16
+
17
+ should "require root path" do
18
+ @env.expects(:require_root_path).once
19
+ @instance.execute
20
+ end
21
+
22
+ should "call show_single with given argument" do
23
+ @instance.expects(:show_single).with("foo").once
24
+ @instance.execute(["foo"])
25
+ end
26
+ end
27
+
28
+ context "showing a single entry" do
29
+ setup do
30
+ @ssh = mock("ssh")
31
+ @ssh.stubs(:port).returns(2197)
32
+
33
+ @bar = mock("vm")
34
+ @bar.stubs(:env).returns(mock_environment)
35
+ @bar.stubs(:ssh).returns(@ssh)
36
+
37
+ @vms = {:bar => @bar}
38
+ @env.stubs(:multivm?).returns(true)
39
+ @env.stubs(:vms).returns(@vms)
40
+
41
+ @data = {
42
+ :host_key => "vagrant",
43
+ :ssh_user => @bar.env.config.ssh.username,
44
+ :ssh_port => @bar.ssh.port,
45
+ :private_key_path => @bar.env.config.ssh.private_key_path
46
+ }
47
+
48
+ @instance.stubs(:puts)
49
+ end
50
+
51
+ should "error if name is nil and multivm" do
52
+ @env.stubs(:multivm?).returns(true)
53
+ @instance.expects(:error_and_exit).with(:ssh_config_multivm).once
54
+ @instance.show_single(nil)
55
+ end
56
+
57
+ should "error if the VM is not found" do
58
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => "foo").once
59
+ @instance.show_single("foo")
60
+ end
61
+
62
+ should "output rendered template" do
63
+ result = mock("result")
64
+ Vagrant::Util::TemplateRenderer.expects(:render).with("ssh_config", @data).returns(result)
65
+
66
+ @instance.expects(:puts).with(result).once
67
+ @instance.show_single(:bar)
68
+ end
69
+
70
+ should "render with the given host name if given" do
71
+ host = "foo"
72
+ @data[:host_key] = host
73
+ Vagrant::Util::TemplateRenderer.expects(:render).with("ssh_config", @data)
74
+ @instance.execute(["bar", "--host", host])
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,129 @@
1
+ require "test_helper"
2
+
3
+ class CommandsSSHTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::SSH
6
+
7
+ @env = mock_environment
8
+ @instance = @klass.new(@env)
9
+ end
10
+
11
+ context "executing" do
12
+ should "connect to the given argument" do
13
+ @instance.expects(:ssh_connect).with("foo").once
14
+ @instance.execute(["foo"])
15
+ end
16
+
17
+ should "connect with nil name if none is given" do
18
+ @instance.expects(:ssh_connect).with(nil).once
19
+ @instance.execute
20
+ end
21
+
22
+ should "execute if commands are given" do
23
+ @env.stubs(:vms).returns(:foo => mock("foo"))
24
+ @instance.expects(:ssh_execute).with("foo", @env.vms[:foo]).once
25
+ @instance.execute(["foo","-e","bar"])
26
+ end
27
+
28
+ should "execute over every VM if none is specified with a command" do
29
+ vms = {
30
+ :foo => mock("foo"),
31
+ :bar => mock("bar")
32
+ }
33
+
34
+ @env.stubs(:vms).returns(vms)
35
+ vms.each do |key, vm|
36
+ @instance.expects(:ssh_execute).with(key, vm).once
37
+ end
38
+
39
+ @instance.execute(["--execute", "bar"])
40
+ end
41
+ end
42
+
43
+ context "ssh executing" do
44
+ setup do
45
+ @name = :foo
46
+
47
+ @ssh_conn = mock("connection")
48
+ @ssh_conn.stubs(:exec!)
49
+
50
+ @ssh = mock("ssh")
51
+ @ssh.stubs(:execute).yields(@ssh_conn)
52
+
53
+ @vm = mock("vm")
54
+ @vm.stubs(:created?).returns(true)
55
+ @vm.stubs(:ssh).returns(@ssh)
56
+ @vm.stubs(:env).returns(@env)
57
+ end
58
+
59
+ should "error and exit if invalid VM given" do
60
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => @name).once
61
+ @instance.ssh_execute(@name, nil)
62
+ end
63
+
64
+ should "error and exit if VM isn't created" do
65
+ @vm.stubs(:created?).returns(false)
66
+ @instance.expects(:error_and_exit).with(:environment_not_created).once
67
+ @instance.ssh_execute(@name, @vm)
68
+ end
69
+
70
+ should "execute each command" do
71
+ commands = [:a,:b,:c]
72
+ @instance.stubs(:options).returns(:execute => commands)
73
+ commands.each do |cmd|
74
+ @ssh_conn.expects(:exec!).with(cmd).once
75
+ end
76
+
77
+ @instance.ssh_execute(@name, @vm)
78
+ end
79
+ end
80
+
81
+ context "ssh connecting" do
82
+ setup do
83
+ @vm = mock("vm")
84
+ @vm.stubs(:created?).returns(true)
85
+
86
+ @vms = {:bar => @vm}
87
+ @env.stubs(:vms).returns(@vms)
88
+ @env.stubs(:multivm?).returns(false)
89
+ end
90
+
91
+ should "error and exit if no VM is specified and multivm and no primary VM" do
92
+ @env.stubs(:multivm?).returns(true)
93
+ @env.stubs(:primary_vm).returns(nil)
94
+ @instance.expects(:error_and_exit).with(:ssh_multivm).once
95
+ @instance.ssh_connect(nil)
96
+ end
97
+
98
+ should "use the primary VM if it exists and no name is specified" do
99
+ vm = mock("vm")
100
+ ssh = mock("ssh")
101
+ vm.stubs(:created?).returns(true)
102
+ vm.stubs(:ssh).returns(ssh)
103
+
104
+ @env.stubs(:multivm?).returns(true)
105
+ @env.stubs(:primary_vm).returns(vm)
106
+ ssh.expects(:connect).once
107
+ @instance.ssh_connect(nil)
108
+ end
109
+
110
+ should "error and exit if VM is nil" do
111
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => :foo).once
112
+ @instance.ssh_connect(:foo)
113
+ end
114
+
115
+ should "error and exit if VM isn't created" do
116
+ @vm.stubs(:created?).returns(false)
117
+ @instance.expects(:error_and_exit).with(:environment_not_created).once
118
+ @instance.ssh_connect(:bar)
119
+ end
120
+
121
+ should "ssh connect" do
122
+ ssh = mock("ssh")
123
+ @vm.stubs(:ssh).returns(ssh)
124
+ ssh.expects(:connect)
125
+
126
+ @instance.ssh_connect(:bar)
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,40 @@
1
+ require "test_helper"
2
+
3
+ class CommandsStatusTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::Status
6
+
7
+ @persisted_vm = mock("persisted_vm")
8
+ @persisted_vm.stubs(:execute!)
9
+
10
+ @env = mock_environment
11
+ @env.stubs(:require_persisted_vm)
12
+ @env.stubs(:vm).returns(@persisted_vm)
13
+
14
+ @instance = @klass.new(@env)
15
+ end
16
+
17
+ context "executing" do
18
+ should "show local status by default" do
19
+ @instance.expects(:show_local_status).once
20
+ @instance.expects(:show_global_status).never
21
+ @instance.execute
22
+ end
23
+
24
+ should "show global status if flagged" do
25
+ @instance.expects(:show_local_status).never
26
+ @instance.expects(:show_global_status).once
27
+ @instance.execute(["--global"])
28
+ end
29
+
30
+ should "show help if too many args are given" do
31
+ @instance.expects(:show_help).once
32
+ @instance.execute(["1","2","3"])
33
+ end
34
+
35
+ should "pass the VM name to local status if given" do
36
+ @instance.expects(:show_local_status).with("foo").once
37
+ @instance.execute(["foo"])
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,44 @@
1
+ require "test_helper"
2
+
3
+ class CommandsSuspendTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::Suspend
6
+
7
+ @env = mock_environment
8
+ @instance = @klass.new(@env)
9
+ end
10
+
11
+ context "executing" do
12
+ should "call all or single for the method" do
13
+ @instance.expects(:all_or_single).with([], :suspend)
14
+ @instance.execute
15
+ end
16
+ end
17
+
18
+ context "suspending a single VM" do
19
+ setup do
20
+ @foo_vm = mock("vm")
21
+ @foo_vm.stubs(:env).returns(@env)
22
+ vms = { :foo => @foo_vm }
23
+ @env.stubs(:vms).returns(vms)
24
+ end
25
+
26
+ should "error and exit if the VM doesn't exist" do
27
+ @env.stubs(:vms).returns({})
28
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => :foo).once
29
+ @instance.suspend_single(:foo)
30
+ end
31
+
32
+ should "suspend if its created" do
33
+ @foo_vm.stubs(:created?).returns(true)
34
+ @foo_vm.expects(:suspend).once
35
+ @instance.execute(["foo"])
36
+ end
37
+
38
+ should "do nothing if its not created" do
39
+ @foo_vm.stubs(:created?).returns(false)
40
+ @foo_vm.expects(:suspend).never
41
+ @instance.suspend_single(:foo)
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,49 @@
1
+ require "test_helper"
2
+
3
+ class CommandsUpTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = Vagrant::Commands::Up
6
+
7
+ @env = mock_environment
8
+ @env.stubs(:require_root_path)
9
+ @instance = @klass.new(@env)
10
+ end
11
+
12
+ context "executing" do
13
+ should "call all or single for the method" do
14
+ seq = sequence("seq")
15
+ @env.expects(:require_root_path).in_sequence(seq)
16
+ @instance.expects(:all_or_single).with([], :up).in_sequence(seq)
17
+ @instance.execute
18
+ end
19
+ end
20
+
21
+ context "upping a single VM" do
22
+ setup do
23
+ @vm = mock("vm")
24
+ @vm.stubs(:env).returns(@env)
25
+
26
+ @vms = {:foo => @vm}
27
+ @env.stubs(:vms).returns(@vms)
28
+ end
29
+
30
+ should "error and exit if the VM doesn't exist" do
31
+ @env.stubs(:vms).returns({})
32
+ @instance.expects(:error_and_exit).with(:unknown_vm, :vm => :foo).once
33
+ @instance.up_single(:foo)
34
+ end
35
+
36
+ should "start created VMs" do
37
+ @vm.stubs(:created?).returns(true)
38
+ @vm.expects(:start).once
39
+ @instance.up_single(:foo)
40
+ end
41
+
42
+ should "up non-created VMs" do
43
+ @vm.stubs(:created?).returns(false)
44
+ @vm.expects(:up).once
45
+ @vm.expects(:start).never
46
+ @instance.up_single(:foo)
47
+ end
48
+ end
49
+ end