formulary_spec: update API tests to avoid mocking

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.
This commit is contained in:
apainintheneck 2024-02-17 13:00:50 -08:00
parent 5d3fae3571
commit e96313f6ed
2 changed files with 4 additions and 4 deletions

View File

@ -1169,7 +1169,8 @@ class CoreTap < AbstractCoreTap
name, formula_hash = item name, formula_hash = item
# If there's more than one item with the same path: use the longer one to prioritise more specific results. # If there's more than one item with the same path: use the longer one to prioritise more specific results.
existing_path = hash[name] 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 hash[name] = Pathname(new_path) if existing_path.nil? || existing_path.to_s.length < new_path.length
end end
end end

View File

@ -158,8 +158,6 @@ describe Formulary do
context "with installed Formula" do context "with installed Formula" do
before do before do
allow(described_class).to receive(:loader_for).and_call_original
# don't try to load/fetch gcc/glibc # don't try to load/fetch gcc/glibc
allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false) allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false)
end end
@ -329,6 +327,7 @@ describe Formulary do
"run_type" => "immediate", "run_type" => "immediate",
"working_dir" => "/$HOME", "working_dir" => "/$HOME",
}, },
"ruby_source_path" => "Formula/#{formula_name}.rb",
}.merge(extra_items), }.merge(extra_items),
} }
end end
@ -378,7 +377,7 @@ describe Formulary do
end end
before do 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 # don't try to load/fetch gcc/glibc
allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false) allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false)