2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-02-21 06:17:06 +01:00
|
|
|
require "locale"
|
|
|
|
require "os/mac"
|
|
|
|
|
2024-02-18 15:11:11 -08:00
|
|
|
RSpec.describe OS::Mac do
|
2017-02-21 06:17:06 +01:00
|
|
|
describe "::languages" do
|
2020-07-22 00:57:33 +02:00
|
|
|
it "returns a list of all languages" do
|
2021-01-31 13:14:23 -05:00
|
|
|
expect(described_class.languages).not_to be_empty
|
2017-02-21 06:17:06 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe "::language" do
|
|
|
|
it "returns the first item from #languages" do
|
2021-01-31 13:14:23 -05:00
|
|
|
expect(described_class.language).to eq(described_class.languages.first)
|
2017-02-21 06:17:06 +01:00
|
|
|
end
|
|
|
|
end
|
2018-08-07 18:50:09 -07:00
|
|
|
|
|
|
|
describe "::sdk_path_if_needed" do
|
|
|
|
it "calls sdk_path on Xcode-only systems" do
|
2018-08-08 15:40:16 -07:00
|
|
|
allow(OS::Mac::Xcode).to receive(:installed?).and_return(true)
|
|
|
|
allow(OS::Mac::CLT).to receive(:installed?).and_return(false)
|
2018-09-20 09:07:56 +01:00
|
|
|
expect(described_class).to receive(:sdk_path)
|
|
|
|
described_class.sdk_path_if_needed
|
2018-08-07 18:50:09 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "does not call sdk_path on Xcode-and-CLT systems with system headers" do
|
2018-08-08 15:40:16 -07:00
|
|
|
allow(OS::Mac::Xcode).to receive(:installed?).and_return(true)
|
2023-12-14 02:52:30 +00:00
|
|
|
allow(OS::Mac::CLT).to receive_messages(installed?: true, separate_header_package?: false)
|
2018-09-20 09:07:56 +01:00
|
|
|
expect(described_class).not_to receive(:sdk_path)
|
|
|
|
described_class.sdk_path_if_needed
|
2018-08-07 18:50:09 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "does not call sdk_path on CLT-only systems with no CLT SDK" do
|
2018-08-08 15:40:16 -07:00
|
|
|
allow(OS::Mac::Xcode).to receive(:installed?).and_return(false)
|
2023-12-14 02:52:30 +00:00
|
|
|
allow(OS::Mac::CLT).to receive_messages(installed?: true, provides_sdk?: false)
|
2018-09-20 09:07:56 +01:00
|
|
|
expect(described_class).not_to receive(:sdk_path)
|
|
|
|
described_class.sdk_path_if_needed
|
2018-08-07 18:50:09 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "does not call sdk_path on CLT-only systems with a CLT SDK if the system provides headers" do
|
2018-08-08 15:40:16 -07:00
|
|
|
allow(OS::Mac::Xcode).to receive(:installed?).and_return(false)
|
2023-12-14 02:52:30 +00:00
|
|
|
allow(OS::Mac::CLT).to receive_messages(installed?: true, provides_sdk?: true, separate_header_package?: false)
|
2018-09-20 09:07:56 +01:00
|
|
|
expect(described_class).not_to receive(:sdk_path)
|
|
|
|
described_class.sdk_path_if_needed
|
2018-08-07 18:50:09 -07:00
|
|
|
end
|
|
|
|
|
|
|
|
it "calls sdk_path on CLT-only systems with a CLT SDK if the system does not provide headers" do
|
2018-08-08 15:40:16 -07:00
|
|
|
allow(OS::Mac::Xcode).to receive(:installed?).and_return(false)
|
2023-12-14 02:52:30 +00:00
|
|
|
allow(OS::Mac::CLT).to receive_messages(installed?: true, provides_sdk?: true, separate_header_package?: true)
|
2018-09-20 09:07:56 +01:00
|
|
|
expect(described_class).to receive(:sdk_path)
|
|
|
|
described_class.sdk_path_if_needed
|
2018-08-07 18:50:09 -07:00
|
|
|
end
|
|
|
|
end
|
2017-02-21 06:17:06 +01:00
|
|
|
end
|