Skip to content

Commit 9393832

Browse files
committed
filter identifical builds by architecture
1 parent edab77d commit 9393832

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

Sources/XcodesKit/Services/XcodeListService.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ public struct XcodeListService: Sendable {
205205
let prereleaseAvailableXcodesWithIdenticalBuildIdentifiers = xcodes.filter {
206206
$0.version.buildMetadataIdentifiers == xcode.version.buildMetadataIdentifiers &&
207207
!$0.version.prereleaseIdentifiers.isEmpty &&
208-
!$0.version.buildMetadataIdentifiers.isEmpty
208+
!$0.version.buildMetadataIdentifiers.isEmpty &&
209+
$0.architectures == xcode.architectures
209210
}
210211

211212
guard !prereleaseAvailableXcodesWithIdenticalBuildIdentifiers.isEmpty,

Tests/XcodesKitTests/XcodesKitTests.swift

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,52 @@ final class XcodesKitTests: XCTestCase {
11021102
])
11031103
}
11041104

1105+
func testXcodeListServiceFiltersIdenticalBuildsToMatchingArchitectureVariant() throws {
1106+
let universalRelease = AvailableXcode(
1107+
version: try XCTUnwrap(Version("26.5.0+17F42")),
1108+
url: try XCTUnwrap(URL(string: "https://apple.com/xcode-universal.xip")),
1109+
filename: "mock-universal.xip",
1110+
releaseDate: nil,
1111+
architectures: [.arm64, .x86_64]
1112+
)
1113+
let appleSiliconRelease = AvailableXcode(
1114+
version: try XCTUnwrap(Version("26.5.0+17F42")),
1115+
url: try XCTUnwrap(URL(string: "https://apple.com/xcode-arm64.xip")),
1116+
filename: "mock-arm64.xip",
1117+
releaseDate: nil,
1118+
architectures: [.arm64]
1119+
)
1120+
let universalPrerelease = AvailableXcode(
1121+
version: try XCTUnwrap(Version("26.5.0-Release.Candidate+17F42")),
1122+
url: try XCTUnwrap(URL(string: "https://apple.com/xcode-rc-universal.xip")),
1123+
filename: "mock-rc-universal.xip",
1124+
releaseDate: nil,
1125+
architectures: [.arm64, .x86_64]
1126+
)
1127+
let appleSiliconPrerelease = AvailableXcode(
1128+
version: try XCTUnwrap(Version("26.5.0-Release.Candidate+17F42")),
1129+
url: try XCTUnwrap(URL(string: "https://apple.com/xcode-rc-arm64.xip")),
1130+
filename: "mock-rc-arm64.xip",
1131+
releaseDate: nil,
1132+
architectures: [.arm64]
1133+
)
1134+
let xcodes = [
1135+
universalRelease,
1136+
appleSiliconRelease,
1137+
universalPrerelease,
1138+
appleSiliconPrerelease
1139+
]
1140+
1141+
XCTAssertEqual(XcodeListService.identicalBuildIDs(for: universalRelease, in: xcodes), [
1142+
universalRelease.xcodeID,
1143+
universalPrerelease.xcodeID
1144+
])
1145+
XCTAssertEqual(XcodeListService.identicalBuildIDs(for: appleSiliconRelease, in: xcodes), [
1146+
appleSiliconRelease.xcodeID,
1147+
appleSiliconPrerelease.xcodeID
1148+
])
1149+
}
1150+
11051151
func testXcodeListServiceValidatesDeveloperDownloads() async throws {
11061152
let downloads = Downloads(
11071153
resultCode: 0,

0 commit comments

Comments
 (0)