Convert VM errors to I18n exceptions
This commit is contained in:
parent
f708bf65a7
commit
bb97b388f9
|
@ -242,5 +242,10 @@ module Vagrant
|
||||||
status_code(24)
|
status_code(24)
|
||||||
error_key(:power_off, "vagrant.actions.vm.export")
|
error_key(:power_off, "vagrant.actions.vm.export")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class VMSystemError < VagrantError
|
||||||
|
status_code(39)
|
||||||
|
error_namespace("vagrant.errors.system")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -54,19 +54,15 @@ module Vagrant
|
||||||
|
|
||||||
if system.is_a?(Class)
|
if system.is_a?(Class)
|
||||||
@system = system.new(self)
|
@system = system.new(self)
|
||||||
error_and_exit(:system_invalid_class, :system => system.to_s) unless @system.is_a?(Systems::Base)
|
raise Errors::VMSystemError.new(:_key => :invalid_class, :system => system.to_s) if !@system.is_a?(Systems::Base)
|
||||||
elsif system.is_a?(Symbol)
|
elsif system.is_a?(Symbol)
|
||||||
# Hard-coded internal systems
|
# Hard-coded internal systems
|
||||||
mapping = { :linux => Systems::Linux }
|
mapping = { :linux => Systems::Linux }
|
||||||
|
|
||||||
if !mapping.has_key?(system)
|
raise Errors::VMSystemError.new(:_key => :unknown_type, :system => system.to_s) if !mapping.has_key?(system)
|
||||||
error_and_exit(:system_unknown_type, :system => system.to_s)
|
|
||||||
return # for tests
|
|
||||||
end
|
|
||||||
|
|
||||||
@system = mapping[system].new(self)
|
@system = mapping[system].new(self)
|
||||||
else
|
else
|
||||||
error_and_exit(:system_unspecified)
|
raise Errors::VMSystemError.new(:unspecified)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,18 @@ en:
|
||||||
|
|
||||||
http://vagrantup.com/docs/getting-started/windows.
|
http://vagrantup.com/docs/getting-started/windows.
|
||||||
|
|
||||||
|
system:
|
||||||
|
invalid_class: |-
|
||||||
|
The specified system does not inherit from `Vagrant::Systems::Base`. The
|
||||||
|
specified system class must inherit from this class.
|
||||||
|
|
||||||
|
The specified system class was: %{system}
|
||||||
|
unknown_type: |-
|
||||||
|
The specified system type is unknown: %{system}. Please change this
|
||||||
|
to a proper value.
|
||||||
|
unspecified: |-
|
||||||
|
A VM system type must be specified! This is done via the `config.vm.system`
|
||||||
|
configuration value. Please read the documentation online for more information.
|
||||||
virtualbox_invalid_ose: |-
|
virtualbox_invalid_ose: |-
|
||||||
Vagrant has detected you're using an OSE ("Open Source Edition") of VirtualBox.
|
Vagrant has detected you're using an OSE ("Open Source Edition") of VirtualBox.
|
||||||
Vagrant currently doesn't support any of the OSE editions due to slight API
|
Vagrant currently doesn't support any of the OSE editions due to slight API
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
|
|
||||||
# Using YAMLs Block Literals to preserve new lines
|
|
||||||
# http://en.wikipedia.org/wiki/YAML#Newlines_preserved
|
|
||||||
# In short, | means keep new lines, trim whitespace left and right
|
|
||||||
# The |- does the above, but trims the new line at the end of all text
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------
|
|
||||||
# CATEGORY: Error Messages
|
|
||||||
#---------------------------------------------------------------------
|
|
||||||
:system_invalid_class: |-
|
|
||||||
The specified system does not inherit from `Vagrant::Systems::Base`. The
|
|
||||||
specified system class must inherit from this class.
|
|
||||||
|
|
||||||
The specified system class was: <%= system %>
|
|
||||||
:system_unknown_type: |-
|
|
||||||
The specified system type is unknown: <%= system %>. Please change this
|
|
||||||
to a proper value.
|
|
||||||
:system_unspecified: |-
|
|
||||||
A VM system type must be specified! This is done via the `config.vm.system`
|
|
||||||
configuration value. Please read the documentation online for more information.
|
|
|
@ -73,8 +73,9 @@ class VMTest < Test::Unit::TestCase
|
||||||
should "error and exit if system is not specified" do
|
should "error and exit if system is not specified" do
|
||||||
@vm.env.config.vm.system = nil
|
@vm.env.config.vm.system = nil
|
||||||
|
|
||||||
@vm.expects(:error_and_exit).with(:system_unspecified).once
|
assert_raises(Vagrant::Errors::VMSystemError) {
|
||||||
@vm.load_system!
|
@vm.load_system!
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a class" do
|
context "with a class" do
|
||||||
|
@ -93,8 +94,9 @@ class VMTest < Test::Unit::TestCase
|
||||||
|
|
||||||
should "error and exit if class has invalid parent" do
|
should "error and exit if class has invalid parent" do
|
||||||
@vm.env.config.vm.system = FakeSystemClass
|
@vm.env.config.vm.system = FakeSystemClass
|
||||||
@vm.expects(:error_and_exit).with(:system_invalid_class, :system => @vm.env.config.vm.system.to_s).once
|
assert_raises(Vagrant::Errors::VMSystemError) {
|
||||||
@vm.load_system!
|
@vm.load_system!
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -116,8 +118,10 @@ class VMTest < Test::Unit::TestCase
|
||||||
|
|
||||||
should "error and exit with invalid symbol" do
|
should "error and exit with invalid symbol" do
|
||||||
@vm.env.config.vm.system = :shall_never_exist
|
@vm.env.config.vm.system = :shall_never_exist
|
||||||
@vm.expects(:error_and_exit).with(:system_unknown_type, :system => @vm.env.config.vm.system.to_s).once
|
|
||||||
@vm.load_system!
|
assert_raises(Vagrant::Errors::VMSystemError) {
|
||||||
|
@vm.load_system!
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue