Skip to content

Commit 16bb635

Browse files
committed
Add more test coverage for visionOS
Go through the tests that were testing all other Apple platforms, and add visionOS for completeness.
1 parent a14a98f commit 16bb635

9 files changed

+89
-2
lines changed

Sources/SWBUtil/ProcessInfo.swift

+2
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ extension ProcessInfo {
108108
return .tvOS(simulator: simulatorRoot != nil)
109109
case "Watch OS":
110110
return .watchOS(simulator: simulatorRoot != nil)
111+
case "xrOS":
112+
return .visionOS(simulator: simulatorRoot != nil)
111113
default:
112114
break
113115
}

Tests/SWBCoreTests/CoreTests.swift

+40
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,46 @@ import Foundation
178178
}
179179
}
180180

181+
@Test(.requireSDKs(.xrOS))
182+
func platformLoading_visionOS() async throws {
183+
let core = try await getCore()
184+
185+
do {
186+
let identifier = "com.apple.platform.xros"
187+
if let platform = core.platformRegistry.lookup(identifier: identifier) {
188+
#expect(platform.signingContext is DeviceSigningContext)
189+
190+
let sdkCanonicalName = try #require(platform.sdkCanonicalName)
191+
let publicSDK = try #require(core.sdkRegistry.lookup(sdkCanonicalName))
192+
let defaultVariant = try #require(publicSDK.defaultVariant)
193+
#expect(defaultVariant.deviceFamilies.list == [
194+
DeviceFamily(identifier: 7, name: "vision", displayName: "Apple Vision")
195+
])
196+
}
197+
else {
198+
Issue.record("did not load platform '\(identifier)'")
199+
}
200+
}
201+
202+
do {
203+
let identifier = "com.apple.platform.xrsimulator"
204+
if let platform = core.platformRegistry.lookup(identifier: identifier) {
205+
#expect(platform.signingContext is SimulatorSigningContext)
206+
207+
let sdkCanonicalName = try #require(platform.sdkCanonicalName)
208+
let publicSDK = try #require(core.sdkRegistry.lookup(sdkCanonicalName))
209+
let defaultVariant = try #require(publicSDK.defaultVariant)
210+
#expect(defaultVariant.deviceFamilies.list == [
211+
DeviceFamily(identifier: 7, name: "vision", displayName: "Apple Vision")
212+
])
213+
}
214+
else {
215+
Issue.record("did not load platform '\(identifier)'")
216+
}
217+
}
218+
}
219+
220+
181221
@Test(.requireHostOS(.macOS))
182222
func toolchainLoading() async throws {
183223
// Validate that we loaded the default toolchain.

Tests/SWBCoreTests/SDKRegistryTests.swift

+10
Original file line numberDiff line numberDiff line change
@@ -881,6 +881,16 @@ import SWBMacro
881881
#expect(realRegistry.lookup("watchsimulator")?.targetBuildVersionPlatform() == .watchOSSimulator)
882882
}
883883

884+
/// Tests that the visionOS SDK knows which Mach-O platforms it's targeting.
885+
@Test(.requireSDKs(.xrOS))
886+
func SDKBuildVersionPlatform_visionOS() async throws {
887+
let realRegistry = try await getCore().sdkRegistry
888+
889+
#expect(realRegistry.lookup("xros")?.targetBuildVersionPlatform() == .xrOS)
890+
#expect(realRegistry.lookup("xrsimulator")?.targetBuildVersionPlatform() == .xrOSSimulator)
891+
}
892+
893+
884894
/// Tests that the DriverKit SDK knows which Mach-O platform it's targeting.
885895
@Test(.requireSDKs(.driverKit))
886896
func SDKBuildVersionPlatform_DriverKit() async throws {

Tests/SWBCoreTests/SettingsTests.swift

+4-2
Original file line numberDiff line numberDiff line change
@@ -1096,7 +1096,7 @@ import SWBMacro
10961096
let arch32 = try #require(Architecture.host.as32bit.stringValue)
10971097
let arch64 = try #require(Architecture.host.as64bit.stringValue)
10981098

1099-
let destinations: [RunDestinationInfo] = [.macOS, .macCatalyst, .iOS, .iOSSimulator, .tvOS, .tvOSSimulator, .watchOS, .watchOSSimulator, .linux].filter { core.sdkRegistry.lookup($0.sdk) != nil }
1099+
let destinations: [RunDestinationInfo] = [.macOS, .macCatalyst, .iOS, .iOSSimulator, .tvOS, .tvOSSimulator, .watchOS, .watchOSSimulator, .xrOS, .xrOSSimulator, .linux].filter { core.sdkRegistry.lookup($0.sdk) != nil }
11001100

11011101
for destination in destinations {
11021102
let parameters = BuildParameters(action: .build, configuration: "Debug", activeRunDestination: destination, overrides: ["SDKROOT": destination.sdk, "SDK_VARIANT": destination.sdkVariant ?? ""])
@@ -1146,7 +1146,7 @@ import SWBMacro
11461146
let project = context.workspace.projects[0]
11471147
let target = project.targets[0]
11481148

1149-
let destinations: [RunDestinationInfo] = [.macOS, .macCatalyst, .iOS, .iOSSimulator, .tvOS, .tvOSSimulator, .watchOS, .watchOSSimulator, .driverKit, .linux].filter { core.sdkRegistry.lookup($0.sdk) != nil }
1149+
let destinations: [RunDestinationInfo] = [.macOS, .macCatalyst, .iOS, .iOSSimulator, .tvOS, .tvOSSimulator, .watchOS, .watchOSSimulator, .xrOS, .xrOSSimulator, .driverKit, .linux].filter { core.sdkRegistry.lookup($0.sdk) != nil }
11501150

11511151
for destination in destinations {
11521152
let parameters = BuildParameters(action: .build, configuration: "Debug", activeRunDestination: destination, overrides: ["SDKROOT": destination.sdk, "SDK_VARIANT": destination.sdkVariant ?? ""])
@@ -1170,6 +1170,8 @@ import SWBMacro
11701170
#expect(try scope.evaluate(scope.namespace.declareStringMacro("RECOMMENDED_TVOS_DEPLOYMENT_TARGET")) == "15.0")
11711171
case .watchOS, .watchOSSimulator:
11721172
#expect(try scope.evaluate(scope.namespace.declareStringMacro("RECOMMENDED_WATCHOS_DEPLOYMENT_TARGET")) == "8.0")
1173+
case .xrOS, .xrOSSimulator:
1174+
#expect(try scope.evaluate(scope.namespace.declareStringMacro("RECOMMENDED_XROS_DEPLOYMENT_TARGET")) == "1.0")
11731175
case .driverKit:
11741176
#expect(try scope.evaluate(scope.namespace.declareStringMacro("RECOMMENDED_DRIVERKIT_DEPLOYMENT_TARGET")) == "20.0")
11751177
case .linux:

Tests/SWBCoreTests/SpecLoadingTests.swift

+5
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,11 @@ import SWBMacro
189189
try await testProductTypeSpecLoadingClassAssociations(domain: "watchos")
190190
}
191191

192+
@Test(.requireSDKs(.xrOS))
193+
func productTypeSpecLoadingClassAssociations_visionOS() async throws {
194+
try await testProductTypeSpecLoadingClassAssociations(domain: "xros")
195+
}
196+
192197
@Test
193198
func packageTypeSpecLoading() async throws {
194199
let (spec, _, errors) = try await parseTestSpec(PackageTypeSpec.self, [

Tests/SWBTaskConstructionTests/BitcodeTaskConstructionTests.swift

+10
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,11 @@ fileprivate struct BitcodeTaskConstructionTests: CoreBasedTests {
467467
try await _testBitcodeFlags(sdkroot: "watchsimulator", expectBitcode: false)
468468
}
469469

470+
@Test(.requireSDKs(.xrOS))
471+
func bitcodeUnsupportedPlatformsIgnored_visionOSSimulator() async throws {
472+
try await _testBitcodeFlags(sdkroot: "xrsimulator", expectBitcode: false)
473+
}
474+
470475
@Test(.requireSDKs(.iOS))
471476
func bitcodeSupportedPlatforms_iOS() async throws {
472477
try await _testBitcodeFlags(sdkroot: "iphoneos", expectBitcode: true)
@@ -481,4 +486,9 @@ fileprivate struct BitcodeTaskConstructionTests: CoreBasedTests {
481486
func bitcodeSupportedPlatforms_watchOS() async throws {
482487
try await _testBitcodeFlags(sdkroot: "watchos", expectBitcode: true)
483488
}
489+
490+
@Test(.requireSDKs(.xrOS))
491+
func bitcodeSupportedPlatforms_visionOS() async throws {
492+
try await _testBitcodeFlags(sdkroot: "xros", expectBitcode: false) // bitcode was never supported on visionOS
493+
}
484494
}

Tests/SWBTaskConstructionTests/ShellScriptTaskConstructionTests.swift

+6
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ fileprivate struct ShellScriptTaskConstructionTests: CoreBasedTests {
4040
try await testShellScriptDeploymentTargetPruning(sdkroot: "watchsimulator", expectedDeploymentTargetPrefix: "WATCHOS")
4141
}
4242

43+
@Test(.requireSDKs(.xrOS))
44+
func shellScriptDeploymentTargetPruning_visionOS() async throws {
45+
try await testShellScriptDeploymentTargetPruning(sdkroot: "xros", expectedDeploymentTargetPrefix: "XROS")
46+
try await testShellScriptDeploymentTargetPruning(sdkroot: "xrsimulator", expectedDeploymentTargetPrefix: "XROS")
47+
}
48+
4349
@Test(.requireSDKs(.driverKit))
4450
func shellScriptDeploymentTargetPruning_DriverKit() async throws {
4551
try await testShellScriptDeploymentTargetPruning(sdkroot: "driverkit", expectedDeploymentTargetPrefix: "DRIVERKIT")

Tests/SWBTaskConstructionTests/TaskConstructionTests.swift

+10
Original file line numberDiff line numberDiff line change
@@ -7583,6 +7583,7 @@ fileprivate struct TaskConstructionTests: CoreBasedTests {
75837583
"IPHONEOS_DEPLOYMENT_TARGET": core.loadSDK(.iOS).defaultDeploymentTarget,
75847584
"TVOS_DEPLOYMENT_TARGET": core.loadSDK(.tvOS).defaultDeploymentTarget,
75857585
"WATCHOS_DEPLOYMENT_TARGET": core.loadSDK(.watchOS).defaultDeploymentTarget,
7586+
"XROS_DEPLOYMENT_TARGET": core.loadSDK(.xrOS).defaultDeploymentTarget,
75867587
"DRIVERKIT_DEPLOYMENT_TARGET": core.loadSDK(.driverKit).defaultDeploymentTarget,
75877588
]
75887589
)
@@ -7638,6 +7639,15 @@ fileprivate struct TaskConstructionTests: CoreBasedTests {
76387639
}
76397640
}
76407641

7642+
@Test(.requireSDKs(.xrOS))
7643+
func defaultDeploymentTargetInRange_visionOS() async throws {
7644+
7645+
try await _defaultDeploymentTargetInRangeTester(runDestination: .xrOS).checkBuild(BuildParameters(action: .build, configuration: "Debug"), runDestination: .xrOS) { results in
7646+
results.checkTask(.matchRuleType("Ld"), .matchRuleItem("/tmp/Test/aProject/build/Debug-xros/Foo.framework/Foo")) { _ in }
7647+
results.checkNoDiagnostics()
7648+
}
7649+
}
7650+
76417651
@Test(.requireSDKs(.driverKit))
76427652
func defaultDeploymentTargetInRange_DriverKit() async throws {
76437653

Tests/SWBUtilTests/MachOTests.swift

+2
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,8 @@ fileprivate struct MachOTests {
783783
BuildVersion.Platform.tvOSSimulator: (platform: "tvos", environment: "simulator"),
784784
BuildVersion.Platform.watchOS: (platform: "watchos", environment: nil),
785785
BuildVersion.Platform.watchOSSimulator: (platform: "watchos", environment: "simulator"),
786+
BuildVersion.Platform.xrOS: (platform: "xros", environment: nil),
787+
BuildVersion.Platform.xrOSSimulator: (platform: "xros", environment: "simulator"),
786788
]
787789

788790
for (input, data) in versions {

0 commit comments

Comments
 (0)