Handle duplicate 3.2.3 release builds

:/
This commit is contained in:
Brandon Evans 2021-02-04 20:03:53 -07:00
parent dcd4001548
commit 760c9f300e
No known key found for this signature in database
GPG key ID: D58A4B8DB64F8E93
2 changed files with 33 additions and 4 deletions

View file

@ -464,10 +464,13 @@ class AppState: ObservableObject {
})
let identicalBuilds: [Version]
let availableXcodesWithIdenticalBuildIdentifiers = availableXcodes
.filter({ $0.version.buildMetadataIdentifiers == availableXcode.version.buildMetadataIdentifiers })
if availableXcodesWithIdenticalBuildIdentifiers.count > 1, availableXcode.version.prereleaseIdentifiers.isEmpty {
identicalBuilds = availableXcodesWithIdenticalBuildIdentifiers.map(\.version)
let prereleaseAvailableXcodesWithIdenticalBuildIdentifiers = availableXcodes
.filter {
$0.version.buildMetadataIdentifiers == availableXcode.version.buildMetadataIdentifiers && !$0.version.prereleaseIdentifiers.isEmpty
}
// If this is the release version, add the identical builds to it
if !prereleaseAvailableXcodesWithIdenticalBuildIdentifiers.isEmpty, availableXcode.version.prereleaseIdentifiers.isEmpty {
identicalBuilds = [availableXcode.version] + prereleaseAvailableXcodesWithIdenticalBuildIdentifiers.map(\.version)
} else {
identicalBuilds = []
}

View file

@ -148,6 +148,32 @@ class AppStateUpdateTests: XCTestCase {
XCTAssertEqual(subject.allXcodes.map(\.identicalBuilds), [[Version("12.4.0+12D4e")!, Version("12.4.0-RC+12D4e")!]])
}
func testIdenticalBuilds_DoNotMergeReleaseVersions() {
Current.defaults.string = { key in
if key == "dataSource" {
return "xcodeReleases"
} else {
return nil
}
}
subject.allXcodes = [
]
subject.updateAllXcodes(
availableXcodes: [
AvailableXcode(version: Version("3.2.3+10M2262")!, url: URL(string: "https://apple.com/xcode.xip")!, filename: "mock.xip", releaseDate: nil),
AvailableXcode(version: Version("3.2.3+10M2262")!, url: URL(string: "https://apple.com/xcode.xip")!, filename: "mock.xip", releaseDate: nil),
],
installedXcodes: [
],
selectedXcodePath: nil
)
XCTAssertEqual(subject.allXcodes.map(\.version), [Version("3.2.3+10M2262")!, Version("3.2.3+10M2262")!])
XCTAssertEqual(subject.allXcodes.map(\.identicalBuilds), [[], []])
}
func testIdenticalBuilds_KeepsReleaseVersion_WithPrereleaseInstalled() {
Current.defaults.string = { key in
if key == "dataSource" {