From ce72e34b191c8ae7b6a6d82e774d50c9c7e6d923 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Wed, 11 Jun 2025 14:43:30 -0400 Subject: [PATCH 1/3] Filter `brew tests` spec files appropriately for each OS --- Library/Homebrew/dev-cmd/tests.rb | 14 ++++++++------ Library/Homebrew/extend/os/linux/dev-cmd/tests.rb | 13 +++++++++++-- Library/Homebrew/extend/os/mac/dev-cmd/tests.rb | 13 +++++++++++-- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb index 7e0329b1be..7865226e0f 100644 --- a/Library/Homebrew/dev-cmd/tests.rb +++ b/Library/Homebrew/dev-cmd/tests.rb @@ -127,8 +127,8 @@ module Homebrew bundle_args << "--tag" << "~needs_network" unless args.online? bundle_args << "--tag" << "~needs_ci" unless ENV["CI"] - bundle_args = os_bundle_args(bundle_args) - files = os_files(files) + bundle_args = os_bundle_args(bundle_args, generic: args.generic?) + files = os_files(files, generic: args.generic?) puts "Randomized with seed #{seed}" @@ -156,11 +156,12 @@ module Homebrew private - sig { params(bundle_args: T::Array[String]).returns(T::Array[String]) } - def os_bundle_args(bundle_args) + sig { params(bundle_args: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_bundle_args(bundle_args, generic:) # for generic tests, remove macOS or Linux specific tests non_linux_bundle_args(non_macos_bundle_args(bundle_args)) end + alias generic_os_bundle_args os_bundle_args sig { params(bundle_args: T::Array[String]).returns(T::Array[String]) } def non_macos_bundle_args(bundle_args) @@ -175,11 +176,12 @@ module Homebrew bundle_args << "--tag" << "~needs_linux" << "--tag" << "~needs_systemd" end - sig { params(files: T::Array[String]).returns(T::Array[String]) } - def os_files(files) + sig { params(files: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_files(files, generic:) # for generic tests, remove macOS or Linux specific files non_linux_files(non_macos_files(files)) end + alias generic_os_files os_files sig { params(files: T::Array[String]).returns(T::Array[String]) } def non_macos_files(files) diff --git a/Library/Homebrew/extend/os/linux/dev-cmd/tests.rb b/Library/Homebrew/extend/os/linux/dev-cmd/tests.rb index e7f3d30d65..642cf24f2c 100644 --- a/Library/Homebrew/extend/os/linux/dev-cmd/tests.rb +++ b/Library/Homebrew/extend/os/linux/dev-cmd/tests.rb @@ -11,10 +11,19 @@ module OS private - sig { params(bundle_args: T::Array[String]).returns(T::Array[String]) } - def os_bundle_args(bundle_args) + sig { params(bundle_args: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_bundle_args(bundle_args, generic:) + return generic_os_bundle_args(bundle_args, generic:) if generic + non_macos_bundle_args(bundle_args) end + + sig { params(files: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_files(files, generic:) + return generic_os_files(files, generic:) if generic + + non_macos_files(files) + end end end end diff --git a/Library/Homebrew/extend/os/mac/dev-cmd/tests.rb b/Library/Homebrew/extend/os/mac/dev-cmd/tests.rb index 112ad3b6c8..bd9c03fe1b 100644 --- a/Library/Homebrew/extend/os/mac/dev-cmd/tests.rb +++ b/Library/Homebrew/extend/os/mac/dev-cmd/tests.rb @@ -11,10 +11,19 @@ module OS private - sig { params(bundle_args: T::Array[String]).returns(T::Array[String]) } - def os_bundle_args(bundle_args) + sig { params(bundle_args: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_bundle_args(bundle_args, generic:) + return generic_os_bundle_args(bundle_args, generic:) if generic + non_linux_bundle_args(bundle_args) end + + sig { params(files: T::Array[String], generic: T::Boolean).returns(T::Array[String]) } + def os_files(files, generic:) + return generic_os_files(files, generic:) if generic + + non_linux_files(files) + end end end end From b242abfdf0d4d6d03da8af03fb586ae49c9d7e21 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Wed, 11 Jun 2025 19:44:26 -0400 Subject: [PATCH 2/3] Fix cask API tests --- Library/Homebrew/test/cask/artifact/generic_artifact_spec.rb | 2 +- Library/Homebrew/test/cask/artifact/manpage_spec.rb | 2 +- Library/Homebrew/test/cask/audit_spec.rb | 2 +- Library/Homebrew/test/cask/cask_loader/from_tap_loader_spec.rb | 2 +- Library/Homebrew/test/cask/dsl_spec.rb | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/test/cask/artifact/generic_artifact_spec.rb b/Library/Homebrew/test/cask/artifact/generic_artifact_spec.rb index 7359c29261..0ba85761da 100644 --- a/Library/Homebrew/test/cask/artifact/generic_artifact_spec.rb +++ b/Library/Homebrew/test/cask/artifact/generic_artifact_spec.rb @@ -19,7 +19,7 @@ RSpec.describe Cask::Artifact::Artifact, :cask do end context "without target" do - it "fails to load" do + it "fails to load", :no_api do expect do Cask::CaskLoader.load("invalid-generic-artifact-no-target") end.to raise_error(Cask::CaskInvalidError, /Generic Artifact.*requires.*target/) diff --git a/Library/Homebrew/test/cask/artifact/manpage_spec.rb b/Library/Homebrew/test/cask/artifact/manpage_spec.rb index 23048504e1..022aee7519 100644 --- a/Library/Homebrew/test/cask/artifact/manpage_spec.rb +++ b/Library/Homebrew/test/cask/artifact/manpage_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Cask::Artifact::Manpage, :cask do context "without section" do let(:cask_token) { "invalid-manpage-no-section" } - it "fails to load a cask without section" do + it "fails to load a cask without section", :no_api do expect { cask }.to raise_error(Cask::CaskInvalidError, /is not a valid man page name/) end end diff --git a/Library/Homebrew/test/cask/audit_spec.rb b/Library/Homebrew/test/cask/audit_spec.rb index 43a7c6be40..5e79f5bc01 100644 --- a/Library/Homebrew/test/cask/audit_spec.rb +++ b/Library/Homebrew/test/cask/audit_spec.rb @@ -503,7 +503,7 @@ RSpec.describe Cask::Audit, :cask do end end - describe "livecheck should be skipped" do + describe "livecheck should be skipped", :no_api do let(:only) { ["livecheck_version"] } let(:online) { true } let(:message) { /Version '[^']*' differs from '[^']*' retrieved by livecheck\./ } diff --git a/Library/Homebrew/test/cask/cask_loader/from_tap_loader_spec.rb b/Library/Homebrew/test/cask/cask_loader/from_tap_loader_spec.rb index b01ccfa21f..4f01b7279c 100644 --- a/Library/Homebrew/test/cask/cask_loader/from_tap_loader_spec.rb +++ b/Library/Homebrew/test/cask/cask_loader/from_tap_loader_spec.rb @@ -24,7 +24,7 @@ RSpec.describe Cask::CaskLoader::FromTapLoader do expect { described_class.new("foo/bar/baz").load(config: nil) }.to raise_error(Cask::CaskUnavailableError) end - context "with sharded Cask directory" do + context "with sharded Cask directory", :no_api do let(:cask_path) { tap.cask_dir/cask_name[0]/"#{cask_name}.rb" } it "returns a Cask" do diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb index c9b75cf482..b93c6a33ff 100644 --- a/Library/Homebrew/test/cask/dsl_spec.rb +++ b/Library/Homebrew/test/cask/dsl_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe Cask::DSL, :cask do +RSpec.describe Cask::DSL, :cask, :no_api do let(:cask) { Cask::CaskLoader.load(token) } let(:token) { "basic-cask" } From e5495d097e1b21c89b4fab914c4aca3c122f64fd Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Wed, 11 Jun 2025 19:56:37 -0400 Subject: [PATCH 3/3] Add missing require --- Library/Homebrew/cask/installer.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/Library/Homebrew/cask/installer.rb b/Library/Homebrew/cask/installer.rb index dc9cb82f5e..9cc482012a 100644 --- a/Library/Homebrew/cask/installer.rb +++ b/Library/Homebrew/cask/installer.rb @@ -4,6 +4,7 @@ require "formula_installer" require "unpack_strategy" require "utils/topological_hash" +require "utils/analytics" require "cask/config" require "cask/download"