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
|
||||
|
||||
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
|
||||
attr_reader :name, :paths, :formulae
|
||||
|
||||
|
@ -22,7 +22,11 @@ class Formulary
|
||||
|
||||
mod = Module.new
|
||||
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)
|
||||
|
||||
begin
|
||||
|
@ -56,6 +56,11 @@ class ExceptionsTest < Homebrew::TestCase
|
||||
FormulaClassUnavailableError.new("foo", "foo.rb", "Foo", list).to_s
|
||||
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
|
||||
assert_equal "No available tap foo.\n", TapUnavailableError.new("foo").to_s
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user