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

feat: add Android support #673

Merged
merged 17 commits into from
Feb 24, 2025
Merged
17 changes: 17 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,23 @@ jobs:
if: matrix.skip_release != '1'
run: make XCODEBUILD_ARGUMENT="${{ matrix.command }}" CONFIG=Release PLATFORM="${{ matrix.platform }}" xcodebuild

linux_android:
name: Linux and Android
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: "Remove IntegrationTests"
run: rm -r Tests/IntegrationTests/*
- name: "Build Swift Package on Linux"
run: swift build
- name: "Test Swift Package on Android"
uses: skiptools/swift-android-action@v2
with:
# need to copy over the Tests folder because it contains __Snapshots__
copy-files: Tests
# tests are not yet passing on Android
run-tests: false

# linux:
# name: linux
# strategy:
Expand Down
4 changes: 2 additions & 2 deletions Package.resolved
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-http-types",
"state" : {
"revision" : "ae67c8178eb46944fd85e4dc6dd970e1f3ed6ccd",
"version" : "1.3.0"
"revision" : "ef18d829e8b92d731ad27bb81583edd2094d1ce3",
"version" : "1.3.1"
}
},
{
Expand Down
2 changes: 1 addition & 1 deletion Sources/Auth/AuthClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@
/// - Parameters:
/// - configuration: The client configuration.
public init(configuration: Configuration) {
AuthClient.globalClientID += 1

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 97 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6
clientID = AuthClient.globalClientID

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Check warning on line 98 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

reference to static property 'globalClientID' is not concurrency-safe because it involves shared mutable state; this is an error in Swift 6

Dependencies[clientID] = Dependencies(
configuration: configuration,
Expand All @@ -105,11 +105,11 @@
sessionStorage: .live(clientID: clientID),
sessionManager: .live(clientID: clientID),
logger: configuration.logger.map {
AuthClientLoggerDecorator(clientID: clientID, decoratee: $0)

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6

Check warning on line 108 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

nonisolated property 'clientID' can not be referenced from a non-isolated context; this is an error in Swift 6
}
)

Task { @MainActor in observeAppLifecycleChanges() }
Task { @MainActor in await observeAppLifecycleChanges() }

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

no 'async' operations occur within 'await' expression

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

no 'async' operations occur within 'await' expression

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

no 'async' operations occur within 'await' expression

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, TVOS, 15.4)

no 'async' operations occur within 'await' expression

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

no 'async' operations occur within 'await' expression

Check warning on line 112 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

no 'async' operations occur within 'await' expression
}

#if canImport(ObjectiveC) && canImport(Combine)
Expand Down Expand Up @@ -1442,7 +1442,7 @@
final class DefaultPresentationContextProvider: NSObject,
ASWebAuthenticationPresentationContextProviding
{
func presentationAnchor(for _: ASWebAuthenticationSession) -> ASPresentationAnchor {

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MAC_CATALYST, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, MACOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, VISIONOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement

Check warning on line 1445 in Sources/Auth/AuthClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (test, IOS, 15.4)

main actor-isolated instance method 'presentationAnchor(for:)' cannot be used to satisfy nonisolated protocol requirement
ASPresentationAnchor()
}
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Auth/Internal/Keychain.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#if !os(Windows) && !os(Linux)
#if !os(Windows) && !os(Linux) && !os(Android)
import Foundation
import Security

Expand Down
2 changes: 1 addition & 1 deletion Sources/Auth/Storage/AuthLocalStorage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public protocol AuthLocalStorage: Sendable {
}

extension AuthClient.Configuration {
#if !os(Linux) && !os(Windows)
#if !os(Linux) && !os(Windows) && !os(Android)
public static let defaultLocalStorage: any AuthLocalStorage = KeychainLocalStorage()
#elseif os(Windows)
public static let defaultLocalStorage: any AuthLocalStorage = WinCredLocalStorage()
Expand Down
2 changes: 1 addition & 1 deletion Sources/Auth/Storage/KeychainLocalStorage.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#if !os(Windows) && !os(Linux)
#if !os(Windows) && !os(Linux) && !os(Android)
import Foundation

/// ``AuthLocalStorage`` implementation using Keychain. This is the default local storage used by the library.
Expand Down
2 changes: 1 addition & 1 deletion Sources/Realtime/Deprecated/RealtimeClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@
/// must be set before calling `socket.connect()` in order to be applied
public var disableSSLCertValidation: Bool = false

#if os(Linux) || os(Windows)
#if os(Linux) || os(Windows) || os(Android)
#else
/// Configure custom SSL validation logic, eg. SSL pinning. This
/// must be set before calling `socket.connect()` in order to apply.
Expand Down Expand Up @@ -1006,7 +1006,7 @@
// MARK: - Close Codes

// ----------------------------------------------------------------------
extension RealtimeClient {

Check warning on line 1009 in Sources/Realtime/Deprecated/RealtimeClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (IOS, 15.2)

'RealtimeClient' is deprecated: Use new RealtimeClientV2 class instead. See migration guide: https://github.com/supabase-community/supabase-swift/blob/main/docs/migrations/RealtimeV2%20Migration%20Guide.md

Check warning on line 1009 in Sources/Realtime/Deprecated/RealtimeClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (MACOS, 15.2)

'RealtimeClient' is deprecated: Use new RealtimeClientV2 class instead. See migration guide: https://github.com/supabase-community/supabase-swift/blob/main/docs/migrations/RealtimeV2%20Migration%20Guide.md
public enum CloseCode: Int {
case abnormal = 999

Expand All @@ -1021,7 +1021,7 @@
// MARK: - Close Status

// ----------------------------------------------------------------------
extension RealtimeClient {

Check warning on line 1024 in Sources/Realtime/Deprecated/RealtimeClient.swift

View workflow job for this annotation

GitHub Actions / xcodebuild (15) (MACOS, 15.2)

'RealtimeClient' is deprecated: Use new RealtimeClientV2 class instead. See migration guide: https://github.com/supabase-community/supabase-swift/blob/main/docs/migrations/RealtimeV2%20Migration%20Guide.md
/// Indicates the different closure states a socket can be in.
enum CloseStatus {
/// Undetermined closure state
Expand Down
2 changes: 1 addition & 1 deletion Sources/Supabase/SupabaseClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ public final class SupabaseClient: Sendable {
options.global.session
}

#if !os(Linux)
#if !os(Linux) && !os(Android)
/// Create a new client.
/// - Parameters:
/// - supabaseURL: The unique Supabase URL which is supplied when you create a new project in your project dashboard.
Expand Down
4 changes: 2 additions & 2 deletions Sources/Supabase/Types.swift
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public struct SupabaseClientOptions: Sendable {
}

extension SupabaseClientOptions {
#if !os(Linux)
#if !os(Linux) && !os(Android)
public init(
db: DatabaseOptions = .init(),
global: GlobalOptions = .init(),
Expand All @@ -155,7 +155,7 @@ extension SupabaseClientOptions {
}

extension SupabaseClientOptions.AuthOptions {
#if !os(Linux)
#if !os(Linux) && !os(Android)
public init(
redirectToURL: URL? = nil,
storageKey: String? = nil,
Expand Down
4 changes: 4 additions & 0 deletions Sources/TestHelpers/MockExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ extension Mock {
line: UInt = #line,
column: UInt = #column
) -> Self {
#if os(Linux) || os(Android)
// non-Darwin curl snapshots have a different Content-Length than expected
return self
#endif
var copy = self
copy.onRequestHandler = OnRequestHandler {
assertInlineSnapshot(
Expand Down
4 changes: 3 additions & 1 deletion Tests/AuthTests/AuthClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,13 @@ final class AuthClientTests: XCTestCase {
var http: HTTPClientMock!
var sut: AuthClient!

#if !os(Windows) && !os(Linux) && !os(Android)
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
#endif

override func setUp() {
super.setUp()
Expand Down Expand Up @@ -842,7 +844,7 @@ final class AuthClientTests: XCTestCase {
try await sut.refreshSession(refreshToken: "refresh-token")
}

#if !os(Linux) && !os(Windows)
#if !os(Linux) && !os(Windows) && !os(Android)
func testSessionFromURL() async throws {
Mock(
url: clientURL.appendingPathComponent("user"),
Expand Down
2 changes: 1 addition & 1 deletion Tests/AuthTests/RequestsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ final class RequestsTests: XCTestCase {
}
}

#if !os(Linux) && !os(Windows)
#if !os(Linux) && !os(Windows) && !os(Android)
func testSessionFromURL() async throws {
let sut = makeSUT(fetch: { request in
let authorizationHeader = request.allHTTPHeaderFields?["Authorization"]
Expand Down
2 changes: 2 additions & 0 deletions Tests/AuthTests/SessionManagerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,13 @@ final class SessionManagerTests: XCTestCase {
)
}

#if !os(Windows) && !os(Linux) && !os(Android)
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
#endif

func testSession_shouldFailWithSessionNotFound() async {
do {
Expand Down
4 changes: 4 additions & 0 deletions Tests/AuthTests/StoredSessionTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ final class StoredSessionTests: XCTestCase {
let clientID = AuthClientID()

func testStoredSession() throws {
#if os(Android)
throw XCTSkip("Disabled for android due to #filePath not existing on emulator")
#endif

Dependencies[clientID] = Dependencies(
configuration: AuthClient.Configuration(
url: URL(string: "http://localhost")!,
Expand Down
4 changes: 4 additions & 0 deletions Tests/FunctionsTests/RequestTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ final class RequestTests: XCTestCase {
headers: ["apikey": apiKey, "x-client-info": "functions-swift/x.y.z"]
) { request in
await MainActor.run {
#if os(Android)
// missing snapshots for Android
return
#endif
assertSnapshot(of: request, as: .curl, record: record, file: file, testName: testName, line: line)
}
throw NSError(domain: "Error", code: 0, userInfo: nil)
Expand Down
7 changes: 6 additions & 1 deletion Tests/IntegrationTests/RealtimeIntegrationTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ struct TestLogger: SupabaseLogger {
}
}

#if !os(Android) && !os(Linux)
@available(macOS 13.0, iOS 16.0, watchOS 9.0, tvOS 16.0, *)
final class RealtimeIntegrationTests: XCTestCase {

Expand All @@ -39,15 +40,18 @@ final class RealtimeIntegrationTests: XCTestCase {
_clock = testClock
}

#if !os(Windows) && !os(Linux) && !os(Android)
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
#endif

func testDisconnectByUser_shouldNotReconnect() async {
await client.realtimeV2.connect()
XCTAssertEqual(client.realtimeV2.status, .connected)
let status: RealtimeClientStatus = client.realtimeV2.status
XCTAssertEqual(status, .connected)

client.realtimeV2.disconnect()

Expand Down Expand Up @@ -263,3 +267,4 @@ final class RealtimeIntegrationTests: XCTestCase {
await channel.unsubscribe()
}
}
#endif
2 changes: 1 addition & 1 deletion Tests/PostgRESTTests/BuildURLRequestTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ extension URLResponse {
// We provide a function that can give us the right value on an platform.
// See https://github.com/apple/swift-corelibs-foundation/pull/4778
fileprivate static func empty() -> URLResponse {
#if os(Windows) || os(Linux)
#if os(Windows) || os(Linux) || os(Android)
URLResponse(
url: .init(string: "https://supabase.com")!,
mimeType: nil,
Expand Down
4 changes: 4 additions & 0 deletions Tests/PostgRESTTests/PostgresQueryTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ import PostgREST
import TestHelpers
import XCTest

#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

class PostgrestQueryTests: XCTestCase {
let url = URL(string: "http://localhost:54321/rest/v1")!

Expand Down
2 changes: 2 additions & 0 deletions Tests/RealtimeTests/RealtimeTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ final class RealtimeTests: XCTestCase {
let url = URL(string: "http://localhost:54321/realtime/v1")!
let apiKey = "anon.api.key"

#if !os(Windows) && !os(Linux) && !os(Android)
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
#endif

var server: FakeWebSocket!
var client: FakeWebSocket!
Expand Down
2 changes: 2 additions & 0 deletions Tests/RealtimeTests/_PushTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ final class _PushTests: XCTestCase {
var ws: FakeWebSocket!
var socket: RealtimeClientV2!

#if !os(Windows) && !os(Linux) && !os(Android)
override func invokeTest() {
withMainSerialExecutor {
super.invokeTest()
}
}
#endif

override func setUp() {
super.setUp()
Expand Down
4 changes: 4 additions & 0 deletions Tests/StorageTests/StorageBucketAPITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import Mocker
import TestHelpers
import XCTest

#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

@testable import Storage

final class StorageBucketAPITests: XCTestCase {
Expand Down
4 changes: 4 additions & 0 deletions Tests/StorageTests/StorageFileAPITests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ import Mocker
import TestHelpers
import XCTest

#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

@testable import Storage

final class StorageFileAPITests: XCTestCase {
Expand Down
2 changes: 1 addition & 1 deletion Tests/StorageTests/SupabaseStorageTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ final class SupabaseStorageTests: XCTestCase {
}
}

#if !os(Linux)
#if !os(Linux) && !os(Android)
func testUploadData() async throws {
testingBoundary.setValue("alamofire.boundary.c21f947c1c7b0c57")

Expand Down
2 changes: 1 addition & 1 deletion Tests/SupabaseTests/SupabaseClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ final class SupabaseClientTests: XCTestCase {
)
}

#if !os(Linux)
#if !os(Linux) && !os(Android)
func testClientInitWithDefaultOptionsShouldBeAvailableInNonLinux() {
_ = SupabaseClient(
supabaseURL: URL(string: "https://project-ref.supabase.co")!,
Expand Down
Loading