From 8676960d09fda58ea36a34ce202ce30431474ac6 Mon Sep 17 00:00:00 2001 From: Markus Reiter <me@reitermark.us> Date: Mon, 27 Feb 2017 23:47:00 +0100 Subject: [PATCH] Convert FormulaText test to spec. --- Library/Homebrew/test/audit_test.rb | 49 ----------------- Library/Homebrew/test/dev-cmd/audit_spec.rb | 61 +++++++++++++++++++++ 2 files changed, 61 insertions(+), 49 deletions(-) create mode 100644 Library/Homebrew/test/dev-cmd/audit_spec.rb diff --git a/Library/Homebrew/test/audit_test.rb b/Library/Homebrew/test/audit_test.rb index 66e5af5670..b8f01602c6 100644 --- a/Library/Homebrew/test/audit_test.rb +++ b/Library/Homebrew/test/audit_test.rb @@ -4,55 +4,6 @@ require "pathname" require "formulary" require "dev-cmd/audit" -class FormulaTextTests < Homebrew::TestCase - def setup - super - @dir = mktmpdir - end - - def formula_text(name, body = nil, options = {}) - path = Pathname.new "#{@dir}/#{name}.rb" - path.open("w") do |f| - f.write <<-EOS.undent - class #{Formulary.class_s(name)} < Formula - #{body} - end - #{options[:patch]} - EOS - end - FormulaText.new path - end - - def test_simple_valid_formula - ft = formula_text "valid", 'url "http://www.example.com/valid-1.0.tar.gz"' - - refute ft.data?, "The formula should not have DATA" - refute ft.end?, "The formula should not have __END__" - assert ft.trailing_newline?, "The formula should have a trailing newline" - - assert ft =~ /\burl\b/, "The formula should match 'url'" - assert_nil ft.line_number(/desc/), "The formula should not match 'desc'" - assert_equal 2, ft.line_number(/\burl\b/) - assert ft.include?("Valid"), "The formula should include \"Valid\"" - end - - def test_trailing_newline - ft = formula_text "newline" - assert ft.trailing_newline?, "The formula must have a trailing newline" - end - - def test_has_data - ft = formula_text "data", "patch :DATA" - assert ft.data?, "The formula must have DATA" - end - - def test_has_end - ft = formula_text "end", "", patch: "__END__\na patch here" - assert ft.end?, "The formula must have __END__" - assert_equal "class End < Formula\n \nend", ft.without_patch - end -end - class FormulaAuditorTests < Homebrew::TestCase def setup super diff --git a/Library/Homebrew/test/dev-cmd/audit_spec.rb b/Library/Homebrew/test/dev-cmd/audit_spec.rb new file mode 100644 index 0000000000..397e6912dd --- /dev/null +++ b/Library/Homebrew/test/dev-cmd/audit_spec.rb @@ -0,0 +1,61 @@ +require "dev-cmd/audit" +require "formulary" + +RSpec::Matchers.alias_matcher :have_data, :be_data +RSpec::Matchers.alias_matcher :have_end, :be_end +RSpec::Matchers.alias_matcher :have_trailing_newline, :be_trailing_newline + +describe FormulaText do + let(:dir) { @dir = Pathname.new(Dir.mktmpdir) } + + after(:each) do + dir.rmtree unless @dir.nil? + end + + def formula_text(name, body = nil, options = {}) + path = dir/"#{name}.rb" + + path.write <<-EOS.undent + class #{Formulary.class_s(name)} < Formula + #{body} + end + #{options[:patch]} + EOS + + described_class.new(path) + end + + specify "simple valid Formula" do + ft = formula_text "valid", <<-EOS.undent + url "http://www.example.com/valid-1.0.tar.gz" + EOS + + expect(ft).not_to have_data + expect(ft).not_to have_end + expect(ft).to have_trailing_newline + + expect(ft =~ /\burl\b/).to be_truthy + expect(ft.line_number(/desc/)).to be nil + expect(ft.line_number(/\burl\b/)).to eq(2) + expect(ft).to include("Valid") + end + + specify "#trailing_newline?" do + ft = formula_text "newline" + expect(ft).to have_trailing_newline + end + + specify "#data?" do + ft = formula_text "data", <<-EOS.undent + patch :DATA + EOS + + expect(ft).to have_data + end + + specify "#end?" do + ft = formula_text "end", "", patch: "__END__\na patch here" + expect(ft).to have_end + expect(ft.without_patch).to eq("class End < Formula\n \nend") + end +end -- GitLab