Merge pull request #3046 from alyssais/double_formula_load_error

Raise an exception when double loading a formula
This commit is contained in:
Mike McQuaid 2017-08-12 13:00:10 +01:00 committed by GitHub
commit b93f1e3569
2 changed files with 12 additions and 0 deletions

View File

@ -20,6 +20,8 @@ module Formulary
raise "Formula loading disabled by HOMEBREW_DISABLE_LOAD_FORMULA!"
end
raise "Formula #{name} has already been loaded" if const_defined?(namespace)
mod = Module.new
const_set(namespace, mod)
begin

View File

@ -27,6 +27,16 @@ describe Formulary do
let(:bottle_dir) { Pathname.new("#{TEST_FIXTURE_DIR}/bottles") }
let(:bottle) { bottle_dir/"testball_bottle-0.1.#{Utils::Bottles.tag}.bottle.tar.gz" }
describe "::load_formula" do
it "does not allow namespace repetition" do |example|
definition = "Foo = Class.new(Formula)"
namespace = "Test#{example.description.hash.abs}"
subject.load_formula("foo", "bar", definition, namespace)
expect { subject.load_formula("foo", "bar", definition, namespace) }
.to raise_error RuntimeError, /already.* loaded/
end
end
describe "::class_s" do
it "replaces '+' with 'x'" do
expect(subject.class_s("foo++")).to eq("Fooxx")