Merge pull request #16903 from apainintheneck/prevent-unexpected-network-calls-in-tests

Prevent unexpected network calls in tests
This commit is contained in:
Kevin 2024-03-20 20:40:26 -07:00 committed by GitHub
commit 7b2bfee363
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 36 additions and 23 deletions

View File

@ -256,11 +256,15 @@ module Homebrew
paths = []
if formula_path.exist? ||
(!CoreTap.instance.installed? && Homebrew::API::Formula.all_formulae.key?(path.basename.to_s))
(!Homebrew::EnvConfig.no_install_from_api? &&
!CoreTap.instance.installed? &&
Homebrew::API::Formula.all_formulae.key?(path.basename.to_s))
paths << formula_path
end
if cask_path.exist? ||
(!CoreCaskTap.instance.installed? && Homebrew::API::Cask.all_casks.key?(path.basename.to_s))
(!Homebrew::EnvConfig.no_install_from_api? &&
!CoreCaskTap.instance.installed? &&
Homebrew::API::Cask.all_casks.key?(path.basename.to_s))
paths << cask_path
end

View File

@ -22,11 +22,7 @@ RSpec.describe Cask::CaskLoader::FromAPILoader, :cask do
describe ".can_load?" do
include_context "with API setup", "test-opera"
context "when not using the API" do
before do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
end
context "when not using the API", :no_api do
it "returns false" do
expect(described_class.try_new(token)).to be_nil
end

View File

@ -30,11 +30,7 @@ RSpec.describe Cask::CaskLoader, :cask do
.and_return(cask_renames)
end
context "when not using the API" do
before do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
end
context "when not using the API", :no_api do
it "warns when using the short token" do
expect do
expect(described_class.for("version-newest")).to be_a Cask::CaskLoader::FromPathLoader
@ -67,11 +63,7 @@ RSpec.describe Cask::CaskLoader, :cask do
end
end
context "when not using the API" do
before do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
end
context "when not using the API", :no_api do
context "when a cask is migrated" do
let(:token) { "local-caffeine" }

View File

@ -46,13 +46,13 @@ RSpec.describe Cask::Cask, :cask do
expect(c.token).to eq("caffeine")
end
it "returns an instance of the Cask from a URL" do
it "returns an instance of the Cask from a URL", :needs_utils_curl, :no_api do
c = Cask::CaskLoader.load("file://#{tap_path}/Casks/local-caffeine.rb")
expect(c).to be_a(described_class)
expect(c.token).to eq("local-caffeine")
end
it "raises an error when failing to download a Cask from a URL" do
it "raises an error when failing to download a Cask from a URL", :needs_utils_curl, :no_api do
expect do
Cask::CaskLoader.load("file://#{tap_path}/Casks/notacask.rb")
end.to raise_error(Cask::CaskUnavailableError)

View File

@ -3,6 +3,11 @@
require "utils"
RSpec.describe Cask::Info, :cask do
before do
# Prevent unnecessary network requests in `Utils::Analytics.cask_output`
ENV["HOMEBREW_NO_ANALYTICS"] = "1"
end
it "displays some nice info about the specified Cask" do
expect do
described_class.info(Cask::CaskLoader.load("local-transmission"))

View File

@ -119,7 +119,7 @@ RSpec.describe Formulary do
expect(described_class.factory(formula_path)).to be_a(Formula)
end
it "returns a Formula when given a URL" do
it "returns a Formula when given a URL", :needs_utils_curl, :no_api do
formula = described_class.factory("file://#{formula_path}")
expect(formula).to be_a(Formula)
end
@ -383,6 +383,10 @@ RSpec.describe Formulary do
before do
ENV.delete("HOMEBREW_NO_INSTALL_FROM_API")
# avoid unnecessary network calls
allow(Homebrew::API::Formula).to receive_messages(all_aliases: {}, all_renames: {})
allow(CoreTap.instance).to receive(:tap_migrations).and_return({})
# don't try to load/fetch gcc/glibc
allow(DevelopmentTools).to receive_messages(needs_libc_formula?: false, needs_compiler_formula?: false)
end

View File

@ -165,6 +165,19 @@ RSpec.configure do |config|
skip "Requires network connection." unless ENV["HOMEBREW_TEST_ONLINE"]
end
config.before do |example|
next if example.metadata.key?(:needs_network)
next if example.metadata.key?(:needs_utils_curl)
allow(Utils::Curl).to receive(:curl_executable).and_raise(<<~ERROR)
Unexpected call to Utils::Curl.curl_executable without setting :needs_network or :needs_utils_curl.
ERROR
end
config.before(:each, :no_api) do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
end
config.before(:each, :needs_svn) do
svn_shim = HOMEBREW_SHIMS_PATH/"shared/svn"
skip "Subversion is not installed." unless quiet_system svn_shim, "--version"

View File

@ -192,7 +192,7 @@ RSpec.describe Tap do
end
describe "#remote" do
it "returns the remote URL" do
it "returns the remote URL", :needs_network do
setup_git_repo
expect(homebrew_foo_tap.remote).to eq("https://github.com/Homebrew/homebrew-foo")
@ -488,8 +488,7 @@ RSpec.describe Tap do
expect(described_class.to_a).to include(CoreTap.instance)
end
it "omits the core tap without the api" do
ENV["HOMEBREW_NO_INSTALL_FROM_API"] = "1"
it "omits the core tap without the api", :no_api do
expect(described_class.to_a).not_to include(CoreTap.instance)
end
end