From 42dd0acdc9ea6f9149b53fe1028e67bb68f653bc Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Thu, 31 Oct 2024 14:57:02 +0800 Subject: [PATCH] macos_version: define a method instead --- Library/Homebrew/macos_version.rb | 26 ++++++++------------- Library/Homebrew/test/macos_version_spec.rb | 12 ++++++++++ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/Library/Homebrew/macos_version.rb b/Library/Homebrew/macos_version.rb index fe04f6dab5..9c1cd7117f 100644 --- a/Library/Homebrew/macos_version.rb +++ b/Library/Homebrew/macos_version.rb @@ -18,8 +18,6 @@ class MacOSVersion < Version # NOTE: When removing symbols here, ensure that they are added # to `DEPRECATED_MACOS_VERSIONS` in `MacOSRequirement`. - # When adding or removing symbols here, ensure that you - # also update the KERNEL_MAJOR_VERSIONS map below. SYMBOLS = { sequoia: "15", sonoma: "14", @@ -33,20 +31,16 @@ class MacOSVersion < Version el_capitan: "10.11", }.freeze - # Map of macOS version strings to kernel major versions. - # https://en.wikipedia.org/wiki/MacOS_version_history#Releases - KERNEL_MAJOR_VERSIONS = { - "15" => "24", - "14" => "23", - "13" => "22", - "12" => "21", - "11" => "20", - "10.15" => "19", - "10.14" => "18", - "10.13" => "17", - "10.12" => "16", - "10.11" => "15", - }.freeze + sig { params(macos_version: MacOSVersion).returns(Version) } + def self.kernel_major_version(macos_version) + version_major = macos_version.major.to_i + if version_major > 10 + Version.new((version_major + 9).to_s) + else + version_minor = macos_version.minor.to_i + Version.new((version_minor + 4).to_s) + end + end sig { params(version: Symbol).returns(T.attached_class) } def self.from_symbol(version) diff --git a/Library/Homebrew/test/macos_version_spec.rb b/Library/Homebrew/test/macos_version_spec.rb index 826059ecb9..6f74bc1fa3 100644 --- a/Library/Homebrew/test/macos_version_spec.rb +++ b/Library/Homebrew/test/macos_version_spec.rb @@ -7,6 +7,18 @@ RSpec.describe MacOSVersion do let(:big_sur_major) { described_class.new("11.0") } let(:big_sur_update) { described_class.new("11.1") } + describe ".kernel_major_version" do + it "returns the kernel major version" do + expect(described_class.kernel_major_version(version)).to eq "18" + expect(described_class.kernel_major_version(big_sur_major)).to eq "20" + expect(described_class.kernel_major_version(big_sur_update)).to eq "20" + end + + it "matches the major version returned by OS.kernel_version", :needs_macos do + expect(described_class.kernel_major_version(OS::Mac.version)).to eq OS.kernel_version.major + end + end + specify "comparison with Symbol" do expect(version).to be > :high_sierra expect(version).to eq :mojave