Skip to content
Snippets Groups Projects
Commit 83482475 authored by Markus Reiter's avatar Markus Reiter
Browse files

Convert `formula_validation` test to spec.

parent bb18f525
No related branches found
No related tags found
No related merge requests found
require "formula"
describe Formula do
describe "::new" do
matcher :fail_with_invalid do |attr|
match do |actual|
expect {
begin
actual.call
rescue => e
expect(e.attr).to eq(attr)
raise e
end
}.to raise_error(FormulaValidationError)
end
def supports_block_expectations?
true
end
end
it "cant override the `brew` method" do
expect {
formula do
def brew; end
end
}.to raise_error(RuntimeError, /You cannot override Formula#brew/)
end
it "validates the `name`" do
expect {
formula "name with spaces" do
url "foo"
version "1.0"
end
}.to fail_with_invalid :name
end
it "validates the `url`" do
expect {
formula do
url ""
version "1"
end
}.to fail_with_invalid :url
end
it "validates the `version`" do
expect {
formula do
url "foo"
version "version with spaces"
end
}.to fail_with_invalid :version
expect {
formula do
url "foo"
version ""
end
}.to fail_with_invalid :version
expect {
formula do
url "foo"
version nil
end
}.to fail_with_invalid :version
end
specify "devel-only is valid" do
f = formula do
devel do
url "foo"
version "1.0"
end
end
expect(f).to be_devel
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
expect { formula {} }.to raise_error(FormulaSpecificationError)
end
end
end
require "testing_env"
require "formula"
class FormulaValidationTests < Homebrew::TestCase
def assert_invalid(attr, &block)
e = assert_raises(FormulaValidationError, &block)
assert_equal attr, e.attr
end
def test_cant_override_brew
e = assert_raises(RuntimeError) { formula { def brew; end } }
assert_match(/You cannot override Formula#brew/, e.message)
end
def test_validates_name
assert_invalid :name do
formula "name with spaces" do
url "foo"
version "1.0"
end
end
end
def test_validates_url
assert_invalid :url do
formula do
url ""
version "1"
end
end
end
def test_validates_version
assert_invalid :version do
formula do
url "foo"
version "version with spaces"
end
end
assert_invalid :version do
formula do
url "foo"
version ""
end
end
assert_invalid :version do
formula do
url "foo"
version nil
end
end
end
def test_devel_only_valid
f = formula do
devel do
url "foo"
version "1.0"
end
end
assert_predicate f, :devel?
end
def test_head_only_valid
f = formula { head "foo" }
assert_predicate f, :head?
end
def test_empty_formula_invalid
assert_raises(FormulaSpecificationError) { formula {} }
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment