2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-02-27 18:24:47 +01:00
|
|
|
require "formula"
|
|
|
|
|
|
|
|
describe Formula do
|
|
|
|
describe "::new" do
|
|
|
|
matcher :fail_with_invalid do |attr|
|
|
|
|
match do |actual|
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
|
|
|
actual.call
|
|
|
|
rescue => e
|
|
|
|
expect(e.attr).to eq(attr)
|
|
|
|
raise e
|
|
|
|
end.to raise_error(FormulaValidationError)
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def supports_block_expectations?
|
|
|
|
true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-08-19 14:27:29 +10:00
|
|
|
it "can't override the `brew` method" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula do
|
|
|
|
def brew; end
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to raise_error(RuntimeError, /You cannot override Formula#brew/)
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
it "validates the `name`" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula "name with spaces" do
|
|
|
|
url "foo"
|
|
|
|
version "1.0"
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to fail_with_invalid :name
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
it "validates the `url`" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula do
|
|
|
|
url ""
|
|
|
|
version "1"
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to fail_with_invalid :url
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
it "validates the `version`" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula do
|
|
|
|
url "foo"
|
|
|
|
version "version with spaces"
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to fail_with_invalid :version
|
2017-02-27 18:24:47 +01:00
|
|
|
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula do
|
|
|
|
url "foo"
|
|
|
|
version ""
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to fail_with_invalid :version
|
2017-02-27 18:24:47 +01:00
|
|
|
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2017-02-27 18:24:47 +01:00
|
|
|
formula do
|
|
|
|
url "foo"
|
|
|
|
version nil
|
|
|
|
end
|
2023-03-08 23:14:46 +00:00
|
|
|
end.to fail_with_invalid :version
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
specify "head-only is valid" do
|
|
|
|
f = formula do
|
|
|
|
head "foo"
|
|
|
|
end
|
|
|
|
|
|
|
|
expect(f).to be_head
|
|
|
|
end
|
|
|
|
|
|
|
|
it "fails when Formula is empty" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
|
|
|
formula do
|
2023-01-26 21:18:24 -08:00
|
|
|
# do nothing
|
2023-03-08 23:14:46 +00:00
|
|
|
end
|
|
|
|
end.to raise_error(FormulaSpecificationError)
|
2017-02-27 18:24:47 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|