core: interrupt in Cli exits with 1
This commit is contained in:
parent
54bb182525
commit
9cf0387e00
|
@ -37,7 +37,14 @@ module Vagrant
|
|||
@logger.debug("Invoking command class: #{command_class} #{@sub_args.inspect}")
|
||||
|
||||
# Initialize and execute the command class, returning the exit status.
|
||||
result = 0
|
||||
begin
|
||||
result = command_class.new(@sub_args, @env).execute
|
||||
rescue Interrupt
|
||||
@env.ui.info(I18n.t("vagrant.cli_interrupt"))
|
||||
result = 1
|
||||
end
|
||||
|
||||
result = 0 if !result.is_a?(Fixnum)
|
||||
return result
|
||||
end
|
||||
|
|
|
@ -37,6 +37,8 @@ en:
|
|||
to automatically delete Chef nodes and clients.
|
||||
chef_run_list_empty: |-
|
||||
Warning: Chef run list is empty. This may not be what you want.
|
||||
cli_interrupt: |-
|
||||
Exiting due to interrupt.
|
||||
docker_auto_start_not_available: |-
|
||||
Unable to configure automatic restart of Docker containers on
|
||||
the guest machine
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
shared_context "command plugin helpers" do
|
||||
def command_lambda(name, result)
|
||||
def command_lambda(name, result, **opts)
|
||||
lambda do
|
||||
Class.new(Vagrant.plugin("2", "command")) do
|
||||
define_method(:execute) do
|
||||
raise opts[:exception] if opts[:exception]
|
||||
result
|
||||
end
|
||||
end
|
||||
|
|
|
@ -28,6 +28,13 @@ describe Vagrant::CLI do
|
|||
subject.should_not_receive(:help)
|
||||
expect(subject.execute).to eql(42)
|
||||
end
|
||||
|
||||
it "returns exit code 1 if interrupted" do
|
||||
commands[:destroy] = [command_lambda("destroy", 42, exception: Interrupt), {}]
|
||||
|
||||
subject = described_class.new(["destroy"], env)
|
||||
expect(subject.execute).to eql(1)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#help" do
|
||||
|
|
Loading…
Reference in New Issue