| 
									
										
										
										
											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 |