Skip to content

Commit

Permalink
formulary_spec: update API tests to avoid mocking
Browse files Browse the repository at this point in the history
Stop mocking the formulary loader method. We just need to set the
environment variable so that it knows to load things from the API.

Fix spec that doesn't work with the `CoreTap.formula_names`.
That method assumes that we always have a valid `ruby_source_path`
in the API JSON even though that was optional for a while after
launching the API if my memory serves me. It's probably fine
to assume this should always be set though and I changed it to use
`Hash#fetch` to give use better error messages if something goes wrong in the future.

Remove unused `allow(x).to receive(y).and_call_original` in tap spec.
  • Loading branch information
apainintheneck committed Feb 17, 2024
1 parent 5d3fae3 commit e96313f
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
3 changes: 2 additions & 1 deletion Library/Homebrew/tap.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1169,7 +1169,8 @@ def formula_files_by_name
name, formula_hash = item
# If there's more than one item with the same path: use the longer one to prioritise more specific results.
existing_path = hash[name]
new_path = File.join(tap_path, formula_hash["ruby_source_path"]) # Pathname equivalent is slow in a tight loop
# Pathname equivalent is slow in a tight loop
new_path = File.join(tap_path, formula_hash.fetch("ruby_source_path"))
hash[name] = Pathname(new_path) if existing_path.nil? || existing_path.to_s.length < new_path.length
end
end
Expand Down
5 changes: 2 additions & 3 deletions Library/Homebrew/test/formulary_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,6 @@ class Wrong#{described_class.class_s(formula_name)} < Formula

context "with installed Formula" do
before do
allow(described_class).to receive(:loader_for).and_call_original

# don't try to load/fetch gcc/glibc
allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false)
end
Expand Down Expand Up @@ -329,6 +327,7 @@ def formula_json_contents(extra_items = {})
"run_type" => "immediate",
"working_dir" => "/$HOME",
},
"ruby_source_path" => "Formula/#{formula_name}.rb",
}.merge(extra_items),
}
end
Expand Down Expand Up @@ -378,7 +377,7 @@ def formula_json_contents(extra_items = {})
end

before do
allow(described_class).to receive(:loader_for).and_return(described_class::FormulaAPILoader.new(formula_name))
ENV.delete("HOMEBREW_NO_INSTALL_FROM_API")

# don't try to load/fetch gcc/glibc
allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false)
Expand Down

0 comments on commit e96313f

Please sign in to comment.