aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test/test_formula_validation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/test/test_formula_validation.rb')
-rw-r--r--Library/Homebrew/test/test_formula_validation.rb69
1 files changed, 69 insertions, 0 deletions
diff --git a/Library/Homebrew/test/test_formula_validation.rb b/Library/Homebrew/test/test_formula_validation.rb
new file mode 100644
index 000000000..be4c38c64
--- /dev/null
+++ b/Library/Homebrew/test/test_formula_validation.rb
@@ -0,0 +1,69 @@
+require 'testing_env'
+require 'formula'
+
+class FormulaValidationTests < Test::Unit::TestCase
+ def formula(*args, &block)
+ Class.new(Formula, &block).new(*args)
+ end
+
+ def assert_invalid(attr, &block)
+ e = assert_raises(FormulaValidationError, &block)
+ assert_equal attr, e.attr
+ end
+
+ def test_cant_override_brew
+ assert_raises(RuntimeError) do
+ Class.new(Formula) { def brew; end }
+ end
+ 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
+ end
+
+ def test_validates_when_initialize_overridden
+ assert_invalid :name do
+ formula do
+ def initialize; end
+ end.brew {}
+ end
+ end
+
+ def test_head_only_valid
+ assert_nothing_raised do
+ formula do
+ head "foo"
+ end
+ end
+ end
+end