Merge pull request #1943 from alyssais/missing_requires

formulary: handle ScriptError in formula
This commit is contained in:
Alyssa Ross 2017-02-03 19:13:05 +00:00 committed by GitHub
commit 70b1c6de0b
3 changed files with 23 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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