Merge pull request #16903 from apainintheneck/prevent-unexpected-network-calls-in-tests
Prevent unexpected network calls in tests
This commit is contained in:
		
						commit
						7b2bfee363
					
				@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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" }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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"))
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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"
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user