Merge pull request #1943 from alyssais/missing_requires
formulary: handle ScriptError in formula
This commit is contained in:
commit
70b1c6de0b
@ -131,6 +131,19 @@ class FormulaClassUnavailableError < FormulaUnavailableError
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class FormulaUnreadableError < FormulaUnavailableError
|
||||||
|
attr_reader :formula_error
|
||||||
|
|
||||||
|
def initialize(name, error)
|
||||||
|
super(name)
|
||||||
|
@formula_error = error
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
"#{name}: " + formula_error.to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class TapFormulaAmbiguityError < RuntimeError
|
class TapFormulaAmbiguityError < RuntimeError
|
||||||
attr_reader :name, :paths, :formulae
|
attr_reader :name, :paths, :formulae
|
||||||
|
|
||||||
|
@ -22,7 +22,11 @@ class Formulary
|
|||||||
|
|
||||||
mod = Module.new
|
mod = Module.new
|
||||||
const_set(namespace, mod)
|
const_set(namespace, mod)
|
||||||
mod.module_eval(contents, path)
|
begin
|
||||||
|
mod.module_eval(contents, path)
|
||||||
|
rescue ScriptError => e
|
||||||
|
raise FormulaUnreadableError.new(name, e)
|
||||||
|
end
|
||||||
class_name = class_s(name)
|
class_name = class_s(name)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -56,6 +56,11 @@ class ExceptionsTest < Homebrew::TestCase
|
|||||||
FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", list).to_s
|
FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", list).to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_formula_unreadable_error
|
||||||
|
formula_error = LoadError.new("bar")
|
||||||
|
assert_equal "foo: bar", FormulaUnreadableError.new("foo", formula_error).to_s
|
||||||
|
end
|
||||||
|
|
||||||
def test_tap_unavailable_error
|
def test_tap_unavailable_error
|
||||||
assert_equal "No available tap foo.\n", TapUnavailableError.new("foo").to_s
|
assert_equal "No available tap foo.\n", TapUnavailableError.new("foo").to_s
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user