Convert FormulaText test to spec.
This commit is contained in:
parent
14ae87d5c9
commit
8676960d09
@ -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
|
||||
|
||||
61
Library/Homebrew/test/dev-cmd/audit_spec.rb
Normal file
61
Library/Homebrew/test/dev-cmd/audit_spec.rb
Normal file
@ -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
|
||||
Loading…
x
Reference in New Issue
Block a user