From 181596311383da7befdc0aa1170333316d2fef25 Mon Sep 17 00:00:00 2001 From: Kenta Kubo <601636+kkk669@users.noreply.github.com> Date: Sun, 7 Jan 2024 15:46:26 +0900 Subject: [PATCH 1/2] fix: fix decoding error in `self-update` (#89) --- Sources/SwiftlyCore/HTTPClient+GitHubAPI.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/SwiftlyCore/HTTPClient+GitHubAPI.swift b/Sources/SwiftlyCore/HTTPClient+GitHubAPI.swift index ab2a84de..d5fe6380 100644 --- a/Sources/SwiftlyCore/HTTPClient+GitHubAPI.swift +++ b/Sources/SwiftlyCore/HTTPClient+GitHubAPI.swift @@ -4,6 +4,10 @@ import Foundation public struct SwiftlyGitHubRelease: Codable { public let tag: String + + enum CodingKeys: String, CodingKey { + case tag = "tag_name" + } } extension SwiftlyHTTPClient { From 64f8f483b93c1bacb0bf2a3156949900de92f143 Mon Sep 17 00:00:00 2001 From: Patrick Freed Date: Sat, 13 Jan 2024 06:29:13 -0500 Subject: [PATCH 2/2] add self-update integration test --- Tests/SwiftlyTests/SelfUpdateTests.swift | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Tests/SwiftlyTests/SelfUpdateTests.swift b/Tests/SwiftlyTests/SelfUpdateTests.swift index 18f82a8e..79edec36 100644 --- a/Tests/SwiftlyTests/SelfUpdateTests.swift +++ b/Tests/SwiftlyTests/SelfUpdateTests.swift @@ -59,14 +59,25 @@ final class SelfUpdateTests: SwiftlyTests { } } - /// Verify updating the most up-to-date toolchain has no effect. func testSelfUpdate() async throws { try await self.runSelfUpdateTest(latestVersion: Self.newPatchVersion) try await self.runSelfUpdateTest(latestVersion: Self.newMinorVersion) try await self.runSelfUpdateTest(latestVersion: Self.newMajorVersion) } + /// Verify updating the most up-to-date toolchain has no effect. func testSelfUpdateAlreadyUpToDate() async throws { try await self.runSelfUpdateTest(latestVersion: String(describing: SwiftlyCore.version), shouldUpdate: false) } + + /// Tests that attempting to self-update using the actual GitHub API works as expected. + func testSelfUpdateIntegration() async throws { + try await self.withTestHome { + let swiftlyURL = Swiftly.currentPlatform.swiftlyBinDir.appendingPathComponent("swiftly", isDirectory: false) + try "old".data(using: .utf8)!.write(to: swiftlyURL) + + var update = try self.parseCommand(SelfUpdate.self, ["self-update"]) + try await update.run() + } + } }