From 74aea8e92d78201db65b6eedfd9ec60954264fc1 Mon Sep 17 00:00:00 2001 From: apainintheneck Date: Tue, 19 Mar 2024 22:18:02 -0700 Subject: [PATCH] spec_helper: add :no_api test scope This sets the HOMEBREW_NO_INSTALL_FROM_API environment variable to prevent the selected tests from using the API. We will need this as we transition to having the API be enabled by default when running the tests but it's also nice as a sanity check with the :needs_utils_curl scope in a few places. --- .../test/cask/cask_loader/from_api_loader_spec.rb | 6 +----- Library/Homebrew/test/cask/cask_loader_spec.rb | 12 ++---------- Library/Homebrew/test/cask/cask_spec.rb | 6 ++---- Library/Homebrew/test/formulary_spec.rb | 3 +-- Library/Homebrew/test/spec_helper.rb | 4 ++++ Library/Homebrew/test/tap_spec.rb | 3 +-- 6 files changed, 11 insertions(+), 23 deletions(-) diff --git a/Library/Homebrew/test/cask/cask_loader/from_api_loader_spec.rb b/Library/Homebrew/test/cask/cask_loader/from_api_loader_spec.rb index 7e567e95fe..eb21387245 100644 --- a/Library/Homebrew/test/cask/cask_loader/from_api_loader_spec.rb +++ b/Library/Homebrew/test/cask/cask_loader/from_api_loader_spec.rb @@ -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 diff --git a/Library/Homebrew/test/cask/cask_loader_spec.rb b/Library/Homebrew/test/cask/cask_loader_spec.rb index e7fcc9696e..62be102cea 100644 --- a/Library/Homebrew/test/cask/cask_loader_spec.rb +++ b/Library/Homebrew/test/cask/cask_loader_spec.rb @@ -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" } diff --git a/Library/Homebrew/test/cask/cask_spec.rb b/Library/Homebrew/test/cask/cask_spec.rb index 6558078ee0..cadba6516e 100644 --- a/Library/Homebrew/test/cask/cask_spec.rb +++ b/Library/Homebrew/test/cask/cask_spec.rb @@ -46,15 +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", :needs_utils_curl do - expect(Homebrew::API).not_to receive(:fetch_json_api_file) + 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", :needs_utils_curl do - expect(Homebrew::API).not_to receive(:fetch_json_api_file) + 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) diff --git a/Library/Homebrew/test/formulary_spec.rb b/Library/Homebrew/test/formulary_spec.rb index 8e34f0fb42..3bb7491bdf 100644 --- a/Library/Homebrew/test/formulary_spec.rb +++ b/Library/Homebrew/test/formulary_spec.rb @@ -119,8 +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", :needs_utils_curl do - expect(Homebrew::API).not_to receive(:fetch_json_api_file) + 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 diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb index 47e5eff401..70fa46df38 100644 --- a/Library/Homebrew/test/spec_helper.rb +++ b/Library/Homebrew/test/spec_helper.rb @@ -174,6 +174,10 @@ RSpec.configure do |config| 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" diff --git a/Library/Homebrew/test/tap_spec.rb b/Library/Homebrew/test/tap_spec.rb index 44a771fc31..ecfa2b8996 100644 --- a/Library/Homebrew/test/tap_spec.rb +++ b/Library/Homebrew/test/tap_spec.rb @@ -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