Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use main branch of ably-cocoa #81

Merged
merged 2 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"originHash" : "fcc346d6fe86e610ac200cdbbf91c56204df67286546d5079bd9c610ee65953b",
"originHash" : "6a8d15fb1d326ac6e8a40c286c152332146d6f58c73123cb8083f68d483dd728",
lawrence-forooghian marked this conversation as resolved.
Show resolved Hide resolved
"pins" : [
{
"identity" : "ably-cocoa",
"kind" : "remoteSourceControl",
"location" : "https://github.com/ably/ably-cocoa",
"state" : {
"revision" : "7f639c609e50053abd4590f34333f9472645558a",
"version" : "1.2.33"
"branch" : "main",
"revision" : "ccca241a8a7f08b22a93802161460c843d9b5bf3"
}
},
{
Expand Down
8 changes: 8 additions & 0 deletions Example/AblyChatExample/Mocks/MockRealtime.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ final class MockRealtime: NSObject, RealtimeClientProtocol, Sendable {
fatalError("Not implemented")
}

var properties: ARTChannelProperties {
fatalError("Not implemented")
}

func attach() {
fatalError("Not implemented")
}
Expand Down Expand Up @@ -211,4 +215,8 @@ final class MockRealtime: NSObject, RealtimeClientProtocol, Sendable {
func close() {
fatalError("Not implemented")
}

func request(_: String, path _: String, params _: [String: String]?, body _: Any?, headers _: [String: String]?, callback _: @escaping ARTHTTPPaginatedCallback) throws {
fatalError("Not implemented")
}
}
6 changes: 3 additions & 3 deletions Package.resolved
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"originHash" : "fcc346d6fe86e610ac200cdbbf91c56204df67286546d5079bd9c610ee65953b",
"originHash" : "db24f2979451a46f504f45d35893eb8501f27488ae70e1412340139a0e7551e2",
"pins" : [
{
"identity" : "ably-cocoa",
"kind" : "remoteSourceControl",
"location" : "https://github.com/ably/ably-cocoa",
"state" : {
"revision" : "7f639c609e50053abd4590f34333f9472645558a",
"version" : "1.2.33"
"branch" : "main",
"revision" : "ccca241a8a7f08b22a93802161460c843d9b5bf3"
}
},
{
Expand Down
3 changes: 2 additions & 1 deletion Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ let package = Package(
dependencies: [
.package(
url: "https://github.com/ably/ably-cocoa",
from: "1.2.0"
// TODO: Switch back to using a tag (https://github.com/ably-labs/ably-chat-swift/issues/80)
branch: "main"
),
.package(
url: "https://github.com/apple/swift-argument-parser",
Expand Down
9 changes: 3 additions & 6 deletions Sources/AblyChat/AblyCocoaExtensions/Ably+Dependencies.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import Ably

// TODO: remove "@unchecked Sendable" once https://github.com/ably/ably-cocoa/issues/1962 done
extension ARTRealtime: RealtimeClientProtocol {}

// This @retroactive is needed to silence the Swift 6 compiler error "extension declares a conformance of imported type 'ARTRealtimeChannels' to imported protocol 'Sendable'; this will not behave correctly if the owners of 'Ably' introduce this conformance in the future (…) add '@retroactive' to silence this warning". I don’t fully understand the implications of this but don’t really mind since both libraries are in our control.
extension ARTRealtime: RealtimeClientProtocol, @retroactive @unchecked Sendable {}
extension ARTRealtimeChannels: RealtimeChannelsProtocol {}

extension ARTRealtimeChannels: RealtimeChannelsProtocol, @retroactive @unchecked Sendable {}

extension ARTRealtimeChannel: RealtimeChannelProtocol, @retroactive @unchecked Sendable {}
extension ARTRealtimeChannel: RealtimeChannelProtocol {}
28 changes: 24 additions & 4 deletions Sources/BuildTool/BuildTool.swift
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ struct Lint: AsyncParsableCommand {
enum Error: Swift.Error {
case malformedSwiftVersionFile
case malformedPackageManifestFile
case malformedPackageLockfile
case mismatchedVersions(swiftVersionFileVersion: String, packageManifestFileVersion: String)
case packageLockfilesHaveDifferentContents(paths: [String])
}
Expand Down Expand Up @@ -152,12 +153,14 @@ struct Lint: AsyncParsableCommand {
}

/// Checks that the SPM-managed Package.resolved matches the Xcode-managed one. (I still don’t fully understand _why_ there are two files).
///
/// Ignores the `originHash` property of the Package.resolved file, because this property seems to frequently be different between the SPM version and the Xcode version, and I don’t know enough about SPM to know what this property means or whether there’s a reproducible way to get them to match.
func comparePackageLockfiles() async throws {
let lockfilePaths = ["Package.resolved", "AblyChat.xcworkspace/xcshareddata/swiftpm/Package.resolved"]
let lockfileContents = try await withThrowingTaskGroup(of: String.self) { group in
let lockfileContents = try await withThrowingTaskGroup(of: Data.self) { group in
for lockfilePath in lockfilePaths {
group.addTask {
try await loadUTF8StringFromFile(at: lockfilePath)
try await loadDataFromFile(at: lockfilePath)
}
}

Expand All @@ -166,13 +169,30 @@ struct Lint: AsyncParsableCommand {
}
}

if Set(lockfileContents).count > 1 {
// Remove the `originHash` property from the Package.resolved contents before comparing (for reasons described above).
let lockfileContentsWeCareAbout = try lockfileContents.map { data in
guard var dictionary = try JSONSerialization.jsonObject(with: data) as? [String: Any] else {
throw Error.malformedPackageLockfile
}

dictionary.removeValue(forKey: "originHash")

// We use .sortedKeys to get a canonical JSON encoding for comparison.
return try JSONSerialization.data(withJSONObject: dictionary, options: .sortedKeys)
}
lawrence-forooghian marked this conversation as resolved.
Show resolved Hide resolved

if Set(lockfileContentsWeCareAbout).count > 1 {
throw Error.packageLockfilesHaveDifferentContents(paths: lockfilePaths)
}
}

private func loadUTF8StringFromFile(at path: String) async throws -> String {
private func loadDataFromFile(at path: String) async throws -> Data {
let (data, _) = try await URLSession.shared.data(from: .init(filePath: path))
return data
}
lawrence-forooghian marked this conversation as resolved.
Show resolved Hide resolved

private func loadUTF8StringFromFile(at path: String) async throws -> String {
let data = try await loadDataFromFile(at: path)
lawrence-forooghian marked this conversation as resolved.
Show resolved Hide resolved
return try String(data: data, encoding: .utf8)
}
}
4 changes: 4 additions & 0 deletions Tests/AblyChatTests/Mocks/MockRealtime.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,8 @@ final class MockRealtime: NSObject, RealtimeClientProtocol, Sendable {
func close() {
fatalError("Not implemented")
}

func request(_: String, path _: String, params _: [String: String]?, body _: Any?, headers _: [String: String]?, callback _: @escaping ARTHTTPPaginatedCallback) throws {
fatalError("Not implemented")
}
}
4 changes: 4 additions & 0 deletions Tests/AblyChatTests/Mocks/MockRealtimeChannel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ final class MockRealtimeChannel: NSObject, RealtimeChannelProtocol {
fatalError("Not implemented")
}

var properties: ARTChannelProperties {
fatalError("Not implemented")
}

func attach() {
fatalError("Not implemented")
}
Expand Down