tap: add tests for formula_file? and cask_file?

This commit is contained in:
apainintheneck 2024-08-27 00:32:05 -07:00
parent cd430c4d34
commit 62a4734c90
2 changed files with 104 additions and 4 deletions

View File

@ -755,13 +755,15 @@ class Tap
sig { returns(Regexp) }
def formula_file_regex
@formula_file_regex ||= case formula_dir.basename.to_s
when "Formula"
@formula_file_regex ||= case formula_dir
when path/"Formula"
%r{^Formula(/[^/]+)+\.rb$}
when "HomebrewFormula"
when path/"HomebrewFormula"
%r{^HomebrewFormula(/[^/]+)+\.rb$}
else
when path
%r{^[^/]+\.rb$}
else
raise ArgumentError, "Unexpected formula_dir: #{formula_dir}"
end
end
private :formula_file_regex

View File

@ -3,6 +3,7 @@
RSpec.describe Tap do
include FileUtils
alias_matcher :have_cask_file, :be_cask_file
alias_matcher :have_formula_file, :be_formula_file
alias_matcher :have_custom_remote, :be_custom_remote
@ -631,6 +632,103 @@ RSpec.describe Tap do
expect(homebrew_foo_tap.pypi_formula_mappings).to eq expected_result
end
end
describe "#formula_file?" do
it "matches files from Formula/" do
tap = described_class.fetch("hard/core")
FileUtils.mkdir_p(tap.path/"Formula")
%w[
kvazaar.rb
Casks/kvazaar.rb
Casks/k/kvazaar.rb
Formula/kvazaar.sh
HomebrewFormula/kvazaar.rb
HomebrewFormula/k/kvazaar.rb
].each do |relative_path|
expect(tap).not_to have_formula_file(relative_path)
end
%w[
Formula/kvazaar.rb
Formula/k/kvazaar.rb
].each do |relative_path|
expect(tap).to have_formula_file(relative_path)
end
ensure
FileUtils.rm_rf(tap.path.parent) if tap
end
it "matches files from HomebrewFormula/" do
tap = described_class.fetch("hard/core")
FileUtils.mkdir_p(tap.path/"HomebrewFormula")
%w[
kvazaar.rb
Casks/kvazaar.rb
Casks/k/kvazaar.rb
Formula/kvazaar.rb
Formula/k/kvazaar.rb
HomebrewFormula/kvazaar.sh
].each do |relative_path|
expect(tap).not_to have_formula_file(relative_path)
end
%w[
HomebrewFormula/kvazaar.rb
HomebrewFormula/k/kvazaar.rb
].each do |relative_path|
expect(tap).to have_formula_file(relative_path)
end
ensure
FileUtils.rm_rf(tap.path.parent) if tap
end
it "matches files from the top-level directory" do
tap = described_class.fetch("hard/core")
FileUtils.mkdir_p(tap.path)
%w[
kvazaar.sh
Casks/kvazaar.rb
Casks/k/kvazaar.rb
Formula/kvazaar.rb
Formula/k/kvazaar.rb
HomebrewFormula/kvazaar.rb
HomebrewFormula/k/kvazaar.rb
].each do |relative_path|
expect(tap).not_to have_formula_file(relative_path)
end
expect(tap).to have_formula_file("kvazaar.rb")
ensure
FileUtils.rm_rf(tap.path.parent) if tap
end
end
describe "#cask_file?" do
it "matches files from Casks/" do
tap = described_class.fetch("hard/core")
%w[
kvazaar.rb
Casks/kvazaar.sh
Formula/kvazaar.rb
Formula/k/kvazaar.rb
HomebrewFormula/kvazaar.rb
HomebrewFormula/k/kvazaar.rb
].each do |relative_path|
expect(tap).not_to have_cask_file(relative_path)
end
%w[
Casks/kvazaar.rb
Casks/k/kvazaar.rb
].each do |relative_path|
expect(tap).to have_cask_file(relative_path)
end
end
end
end
describe CoreTap do