From 834824754f1837aceefe0518b7fe4023053ecfff Mon Sep 17 00:00:00 2001
From: Markus Reiter <me@reitermark.us>
Date: Mon, 27 Feb 2017 18:24:47 +0100
Subject: [PATCH] Convert `formula_validation` test to spec.

---
 .../Homebrew/test/formula_validation_spec.rb  | 94 +++++++++++++++++++
 .../Homebrew/test/formula_validation_test.rb  | 75 ---------------
 2 files changed, 94 insertions(+), 75 deletions(-)
 create mode 100644 Library/Homebrew/test/formula_validation_spec.rb
 delete mode 100644 Library/Homebrew/test/formula_validation_test.rb

diff --git a/Library/Homebrew/test/formula_validation_spec.rb b/Library/Homebrew/test/formula_validation_spec.rb
new file mode 100644
index 0000000000..ff50c86d12
--- /dev/null
+++ b/Library/Homebrew/test/formula_validation_spec.rb
@@ -0,0 +1,94 @@
+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
diff --git a/Library/Homebrew/test/formula_validation_test.rb b/Library/Homebrew/test/formula_validation_test.rb
deleted file mode 100644
index c40eb67331..0000000000
--- a/Library/Homebrew/test/formula_validation_test.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-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
-- 
GitLab