brew/Library/Homebrew/test/requirements/macos_requirement_spec.rb

67 lines
2.9 KiB
Ruby

# frozen_string_literal: true
require "requirements/macos_requirement"
RSpec.describe MacOSRequirement do
subject(:requirement) { described_class.new }
let(:macos_oldest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) }
let(:macos_newest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_NEWEST_UNSUPPORTED) }
let(:big_sur_major) { MacOSVersion.new("11.0") }
describe "#satisfied?" do
it "returns true on macOS" do
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([:catalina], comparator: "<=")
expect(requirement.satisfied?).to eq MacOS.version <= :catalina
end
end
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
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
specify "#allows?" do
no_requirement = described_class.new
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: "==")
expect(no_requirement.allows?(big_sur_major)).to be true
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
end