Merge MaximumMacOSRequirement into MacOSRequirement.

This commit is contained in:
Markus Reiter 2019-08-15 07:53:28 +02:00
parent 84c5f40793
commit 78aee4fed3
5 changed files with 30 additions and 35 deletions

View File

@ -125,7 +125,7 @@ class DependencyCollector
when :java then java_dep_if_needed(tags)
when :linux then LinuxRequirement.new(tags)
when :macos then MacOSRequirement.new(tags)
when :maximum_macos then MaximumMacOSRequirement.new(tags)
when :maximum_macos then MacOSRequirement.new(tags, comparator: "<=")
when :osxfuse then OsxfuseRequirement.new(tags)
when :tuntap then TuntapRequirement.new(tags)
when :x11 then X11Requirement.new(tags)

View File

@ -6,7 +6,6 @@ require "requirements/codesign_requirement"
require "requirements/java_requirement"
require "requirements/linux_requirement"
require "requirements/macos_requirement"
require "requirements/maximum_macos_requirement"
require "requirements/osxfuse_requirement"
require "requirements/tuntap_requirement"
require "requirements/x11_requirement"

View File

@ -5,17 +5,18 @@ require "requirement"
class MacOSRequirement < Requirement
fatal true
def initialize(tags = [])
def initialize(tags = [], comparator: ">=")
@version = MacOS::Version.from_symbol(tags.shift) unless tags.empty?
@comparator = comparator
super(tags)
end
def minimum_version_specified?
def version_specified?
OS.mac? && @version
end
satisfy(build_env: false) do
next MacOS.version >= @version if minimum_version_specified?
next MacOS.version.public_send(@comparator, @version) if version_specified?
next true if OS.mac?
next true if @version
@ -23,14 +24,24 @@ class MacOSRequirement < Requirement
end
def message
return "macOS is required." unless minimum_version_specified?
return "macOS is required." unless version_specified?
case @comparator
when ">="
"macOS #{@version.pretty_name} or newer is required."
when "<="
<<~EOS
This formula either does not compile or function as expected on macOS
versions newer than #{@version.pretty_name} due to an upstream incompatibility.
EOS
else
"macOS #{@version.pretty_name} is required."
end
end
def display_s
return "macOS is required" unless minimum_version_specified?
return "macOS is required" unless version_specified?
"macOS >= #{@version}"
"macOS #{@comparator} #{@version}"
end
end

View File

@ -1,25 +0,0 @@
# frozen_string_literal: true
require "requirement"
class MaximumMacOSRequirement < Requirement
fatal true
def initialize(tags)
@version = MacOS::Version.from_symbol(tags.shift)
super(tags)
end
satisfy(build_env: false) { MacOS.version <= @version }
def message
<<~EOS
This formula either does not compile or function as expected on macOS
versions newer than #{@version.pretty_name} due to an upstream incompatibility.
EOS
end
def display_s
"macOS <= #{@version}"
end
end

View File

@ -7,7 +7,17 @@ describe MacOSRequirement do
describe "#satisfied?" do
it "returns true on macOS" do
expect(requirement.satisfied?).to eq(OS.mac?)
expect(requirement.satisfied?).to eq OS.mac?
end
it "supports version symbols", :needs_macos do
requirement = described_class.new([MacOS.version.to_sym])
expect(requirement).to be_satisfied
end
it "supports maximum versions", :needs_macos do
requirement = described_class.new([:mavericks], comparator: "<=")
expect(requirement.satisfied?).to eq MacOS.version <= :mavericks
end
end
end