Halt checks if VM is running. No more error messages

This commit is contained in:
Mitchell Hashimoto 2010-07-05 19:41:31 +02:00
parent 77cca19b7e
commit cfc87d4ce3
3 changed files with 15 additions and 17 deletions

View File

@ -7,13 +7,13 @@ module Vagrant
end end
def call(env) def call(env)
return env.error!(:vm_not_running) unless env["vm"].vm.running? if env["vm"].vm.running?
env["vm"].system.halt if !env["force"]
env["vm"].system.halt if !env["force"] if env["vm"].vm.state(true) != :powered_off
env.logger.info "Forcing shutdown of VM..."
if env["vm"].vm.state(true) != :powered_off env["vm"].vm.stop
env.logger.info "Forcing shutdown of VM..." end
env["vm"].vm.stop
end end
@app.call(env) @app.call(env)

View File

@ -250,8 +250,6 @@
Failed to connect to VM! Failed to boot? Failed to connect to VM! Failed to boot?
:vm_base_not_found: |- :vm_base_not_found: |-
The specified base VM "<%= name %>" was not found. The specified base VM "<%= name %>" was not found.
:vm_not_running: |-
VM is not running! Nothing to shut down!
:vm_not_running_for_suspend: |- :vm_not_running_for_suspend: |-
The vagrant virtual environment you are trying to suspend must be running to be suspended. The vagrant virtual environment you are trying to suspend must be running to be suspended.
:vm_not_suspended: |- :vm_not_suspended: |-

View File

@ -26,6 +26,15 @@ class HaltVMActionTest < Test::Unit::TestCase
@internal_vm.stubs(:state).returns(:powered_off) @internal_vm.stubs(:state).returns(:powered_off)
end end
should "do nothing if VM not running" do
@internal_vm.stubs(:running?).returns(false)
@vm.system.expects(:halt).never
@internal_vm.expects(:stop).never
@app.expects(:call).once
@instance.call(@env)
end
should "halt with the system and NOT force VM to stop if powered off" do should "halt with the system and NOT force VM to stop if powered off" do
@internal_vm.expects(:state).with(true).returns(:powered_off) @internal_vm.expects(:state).with(true).returns(:powered_off)
@vm.system.expects(:halt).once @vm.system.expects(:halt).once
@ -49,14 +58,5 @@ class HaltVMActionTest < Test::Unit::TestCase
@vm.system.expects(:halt).never @vm.system.expects(:halt).never
@instance.call(@env) @instance.call(@env)
end end
should "raise an ActionException if VM is not running" do
@internal_vm.stubs(:running?).returns(false)
@internal_vm.expects(:stop).never
@app.expects(:call).never
@instance.call(@env)
assert @env.error?
assert_equal :vm_not_running, @env.error.first
end
end end
end end