2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-04-13 15:20:02 +02:00
|
|
|
require "requirements/macos_requirement"
|
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe MacOSRequirement do
|
2018-04-13 15:20:02 +02:00
|
|
|
subject(:requirement) { described_class.new }
|
|
|
|
|
2024-06-21 16:04:04 -04:00
|
|
|
let(:macos_oldest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) }
|
2025-05-20 16:09:23 -04:00
|
|
|
let(:macos_newest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_NEWEST_UNSUPPORTED) }
|
2024-06-03 12:33:00 -04:00
|
|
|
let(:big_sur_major) { MacOSVersion.new("11.0") }
|
|
|
|
|
2018-04-13 15:20:02 +02:00
|
|
|
describe "#satisfied?" do
|
|
|
|
it "returns true on macOS" do
|
2020-07-28 14:08:40 +02:00
|
|
|
expect(requirement.satisfied?).to eq OS.mac?
|
2019-08-15 07:53:28 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
it "supports version symbols", :needs_macos do
|
|
|
|
requirement = described_class.new([MacOS.version.to_sym])
|
2020-07-28 14:08:40 +02:00
|
|
|
expect(requirement).to be_satisfied
|
2019-08-15 07:53:28 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
it "supports maximum versions", :needs_macos do
|
2020-06-10 10:06:46 +01:00
|
|
|
requirement = described_class.new([:catalina], comparator: "<=")
|
2020-07-28 14:08:40 +02:00
|
|
|
expect(requirement.satisfied?).to eq MacOS.version <= :catalina
|
2018-04-13 15:20:02 +02:00
|
|
|
end
|
|
|
|
end
|
2024-06-03 12:33:00 -04:00
|
|
|
|
2024-06-21 16:04:04 -04:00
|
|
|
specify "#minimum_version" do
|
|
|
|
no_requirement = described_class.new
|
|
|
|
max_requirement = described_class.new([:big_sur], comparator: "<=")
|
|
|
|
min_requirement = described_class.new([:big_sur], comparator: ">=")
|
|
|
|
exact_requirement = described_class.new([:big_sur], comparator: "==")
|
|
|
|
range_requirement = described_class.new([[:monterey, :big_sur]], comparator: "==")
|
|
|
|
expect(no_requirement.minimum_version).to eq macos_oldest_allowed
|
|
|
|
expect(max_requirement.minimum_version).to eq macos_oldest_allowed
|
|
|
|
expect(min_requirement.minimum_version).to eq big_sur_major
|
|
|
|
expect(exact_requirement.minimum_version).to eq big_sur_major
|
|
|
|
expect(range_requirement.minimum_version).to eq big_sur_major
|
|
|
|
end
|
|
|
|
|
2025-05-20 16:09:23 -04:00
|
|
|
specify "#maximum_version" do
|
|
|
|
no_requirement = described_class.new
|
|
|
|
max_requirement = described_class.new([:big_sur], comparator: "<=")
|
|
|
|
min_requirement = described_class.new([:big_sur], comparator: ">=")
|
|
|
|
exact_requirement = described_class.new([:big_sur], comparator: "==")
|
|
|
|
range_requirement = described_class.new([[:catalina, :big_sur]], comparator: "==")
|
|
|
|
expect(no_requirement.maximum_version).to eq macos_newest_allowed
|
|
|
|
expect(max_requirement.maximum_version).to eq big_sur_major
|
|
|
|
expect(min_requirement.maximum_version).to eq macos_newest_allowed
|
|
|
|
expect(exact_requirement.maximum_version).to eq big_sur_major
|
|
|
|
expect(range_requirement.maximum_version).to eq big_sur_major
|
|
|
|
end
|
|
|
|
|
2024-06-03 12:33:00 -04:00
|
|
|
specify "#allows?" do
|
2024-06-21 16:04:04 -04:00
|
|
|
no_requirement = described_class.new
|
2024-06-03 12:33:00 -04:00
|
|
|
max_requirement = described_class.new([:mojave], comparator: "<=")
|
|
|
|
min_requirement = described_class.new([:catalina], comparator: ">=")
|
|
|
|
exact_requirement = described_class.new([:big_sur], comparator: "==")
|
|
|
|
range_requirement = described_class.new([[:monterey, :big_sur]], comparator: "==")
|
2024-06-21 16:04:04 -04:00
|
|
|
expect(no_requirement.allows?(big_sur_major)).to be true
|
2024-06-03 12:33:00 -04:00
|
|
|
expect(max_requirement.allows?(big_sur_major)).to be false
|
|
|
|
expect(min_requirement.allows?(big_sur_major)).to be true
|
|
|
|
expect(exact_requirement.allows?(big_sur_major)).to be true
|
|
|
|
expect(range_requirement.allows?(big_sur_major)).to be true
|
|
|
|
end
|
2018-04-13 15:20:02 +02:00
|
|
|
end
|