62 lines
1.4 KiB
Ruby
62 lines
1.4 KiB
Ruby
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
|