diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 2d6f27b90..34324433b 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -17,6 +17,8 @@ jobs: outputs: emulator_jobs_matrix: ${{ steps.dataStep.outputs.emulator_jobs_matrix }} ios_test_jobs_matrix: ${{ steps.dataStep.outputs.ios_test_jobs_matrix }} + macos_test_jobs_matrix: ${{ steps.dataStep.outputs.macos_test_jobs_matrix }} + tvos_test_jobs_matrix: ${{ steps.dataStep.outputs.tvos_test_jobs_matrix }} js_test_jobs_matrix: ${{ steps.dataStep.outputs.js_test_jobs_matrix }} jvm_test_jobs_matrix: ${{ steps.dataStep.outputs.jvm_test_jobs_matrix }} steps: @@ -34,6 +36,8 @@ jobs: echo " emulator_jobs_matrix=$(jq -c . < ./build/emulator_jobs_matrix.json) ios_test_jobs_matrix=$(jq -c . < ./build/ios_test_jobs_matrix.json) + macos_test_jobs_matrix=$(jq -c . < ./build/macos_test_jobs_matrix.json) + tvos_test_jobs_matrix=$(jq -c . < ./build/tvos_test_jobs_matrix.json) js_test_jobs_matrix=$(jq -c . < ./build/js_test_jobs_matrix.json) jvm_test_jobs_matrix=$(jq -c . < ./build/jvm_test_jobs_matrix.json) " >> $GITHUB_OUTPUT @@ -141,6 +145,84 @@ jobs: with: name: iOS ${{ env.ARCHIVE_KEY }} Firebase Debug Log path: "**/firebase-debug.log" + build-macos: + needs: jobMatrixSetup + runs-on: macos-latest + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.jobMatrixSetup.outputs.macos_test_jobs_matrix) }} + steps: + - uses: actions/checkout@v4 + - name: Cocoapods cache + uses: actions/cache@v4 + with: + path: | + ~/.cocoapods + ~/Library/Caches/CocoaPods + */build/cocoapods + */build/classes + key: cocoapods-cache-v2 + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Setup test environment + uses: ./.github/actions/setup_test_action + - name: Set Artifact Name + run: | + echo "ARCHIVE_KEY=$(echo ${{ matrix.gradle_tasks }} | cut -d: -f2)" >> $GITHUB_ENV + - name: Run macOS Tests + run: ./gradlew ${{ matrix.gradle_tasks }} + - name: Upload macOS test artifact + uses: actions/upload-artifact@v4 + if: failure() + with: + name: macOS ${{ env.ARCHIVE_KEY }} Test Report HTML + path: "**/build/reports/tests/macosArm64Test/" + - name: Upload Firebase Debug Log + uses: actions/upload-artifact@v4 + if: failure() + with: + name: iOS ${{ env.ARCHIVE_KEY }} Firebase Debug Log + path: "**/firebase-debug.log" + build-tvos: + needs: jobMatrixSetup + runs-on: macos-latest + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.jobMatrixSetup.outputs.tvos_test_jobs_matrix) }} + steps: + - uses: actions/checkout@v4 + - name: Cocoapods cache + uses: actions/cache@v4 + with: + path: | + ~/.cocoapods + ~/Library/Caches/CocoaPods + */build/cocoapods + */build/classes + key: cocoapods-cache-v2 + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - name: Setup test environment + uses: ./.github/actions/setup_test_action + - name: Set Artifact Name + run: | + echo "ARCHIVE_KEY=$(echo ${{ matrix.gradle_tasks }} | cut -d: -f2)" >> $GITHUB_ENV + - name: Run tvOS Tests + run: ./gradlew ${{ matrix.gradle_tasks }} + - name: Upload tvOS test artifact + uses: actions/upload-artifact@v4 + if: failure() + with: + name: iOS ${{ env.ARCHIVE_KEY }} Test Report HTML + path: "**/build/reports/tests/tvosArm64Test/" + - name: Upload Firebase Debug Log + uses: actions/upload-artifact@v4 + if: failure() + with: + name: iOS ${{ env.ARCHIVE_KEY }} Firebase Debug Log + path: "**/firebase-debug.log" build-jvm: needs: jobMatrixSetup runs-on: ubuntu-latest diff --git a/firebase-analytics/build.gradle.kts b/firebase-analytics/build.gradle.kts index 11d6d2cf0..b84187ae5 100644 --- a/firebase-analytics/build.gradle.kts +++ b/firebase-analytics/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -78,11 +78,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseAnalytics" } @@ -118,7 +126,11 @@ kotlin { this.apiVersion = libs.versions.settings.api.get() this.languageVersion = libs.versions.settings.language.get() progressiveMode = true - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-analytics/src/iosMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt b/firebase-analytics/src/appleMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt similarity index 100% rename from firebase-analytics/src/iosMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt rename to firebase-analytics/src/appleMain/kotlin/dev/gitlive/firebase/analytics/analytics.kt diff --git a/firebase-analytics/src/iosTest/kotlin/dev/gitlive/firebase/analytics/analytics.kt b/firebase-analytics/src/appleTest/kotlin/dev/gitlive/firebase/analytics/analytics.kt similarity index 100% rename from firebase-analytics/src/iosTest/kotlin/dev/gitlive/firebase/analytics/analytics.kt rename to firebase-analytics/src/appleTest/kotlin/dev/gitlive/firebase/analytics/analytics.kt diff --git a/firebase-app/build.gradle.kts b/firebase-app/build.gradle.kts index 99e9c95a2..64b078ea0 100644 --- a/firebase-app/build.gradle.kts +++ b/firebase-app/build.gradle.kts @@ -24,7 +24,7 @@ android { val compileSdkVersion: Int by project compileSdk = compileSdkVersion - namespace="dev.gitlive.firebase" + namespace = "dev.gitlive.firebase" defaultConfig { minSdk = minSdkVersion @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -79,12 +79,20 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseApp" } @@ -120,7 +128,11 @@ kotlin { this.apiVersion = libs.versions.settings.api.get() this.languageVersion = libs.versions.settings.language.get() progressiveMode = true - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } @@ -152,19 +164,25 @@ kotlin { if (project.property("firebase-app.skipIosTests") == "true") { tasks.forEach { - if (it.name.contains("ios", true) && it.name.contains("test", true)) { it.enabled = false } + if (it.name.contains("ios", true) && it.name.contains("test", true)) { + it.enabled = false + } } } if (project.property("firebase-app.skipJvmTests") == "true") { tasks.forEach { - if (it.name.contains("jvm", true) && it.name.contains("test", true)) { it.enabled = false } + if (it.name.contains("jvm", true) && it.name.contains("test", true)) { + it.enabled = false + } } } if (project.property("firebase-app.skipJsTests") == "true") { tasks.forEach { - if (it.name.contains("js", true) && it.name.contains("test", true)) { it.enabled = false } + if (it.name.contains("js", true) && it.name.contains("test", true)) { + it.enabled = false + } } } diff --git a/firebase-app/src/iosMain/kotlin/dev/gitlive/firebase/firebase.kt b/firebase-app/src/appleMain/kotlin/dev/gitlive/firebase/firebase.kt similarity index 100% rename from firebase-app/src/iosMain/kotlin/dev/gitlive/firebase/firebase.kt rename to firebase-app/src/appleMain/kotlin/dev/gitlive/firebase/firebase.kt diff --git a/firebase-app/src/iosTest/kotlin/dev/gitlive/firebase/firebase.kt b/firebase-app/src/appleTest/kotlin/dev/gitlive/firebase/firebase.kt similarity index 100% rename from firebase-app/src/iosTest/kotlin/dev/gitlive/firebase/firebase.kt rename to firebase-app/src/appleTest/kotlin/dev/gitlive/firebase/firebase.kt diff --git a/firebase-auth/build.gradle.kts b/firebase-auth/build.gradle.kts index ed1a7647e..54856a02e 100644 --- a/firebase-auth/build.gradle.kts +++ b/firebase-auth/build.gradle.kts @@ -48,7 +48,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -79,8 +79,9 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64().enableKeychainForTests() iosSimulatorArm64().enableKeychainForTests() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() @@ -166,7 +167,7 @@ if (project.property("firebase-auth.skipJsTests") == "true") { } } -if (supportIosTarget) { +if (supportAppleTarget) { tasks.create("launchIosSimulator") { commandLine("open", "-a", "Simulator") } diff --git a/firebase-common-internal/build.gradle.kts b/firebase-common-internal/build.gradle.kts index 97549c2fe..8e6dd1eeb 100644 --- a/firebase-common-internal/build.gradle.kts +++ b/firebase-common-internal/build.gradle.kts @@ -77,11 +77,17 @@ kotlin { jvm() - val supportIosTarget = project.property("skipIosTarget") != "true" + val supportAppleTarget = project.property("skipAppleTargets") != "true" - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() } js(IR) { diff --git a/firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/EncodedObject.kt b/firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/EncodedObject.kt similarity index 100% rename from firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/EncodedObject.kt rename to firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/EncodedObject.kt diff --git a/firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt b/firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt similarity index 98% rename from firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt rename to firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt index 860af2087..e2c043a82 100644 --- a/firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt +++ b/firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/_decoders.kt @@ -8,6 +8,7 @@ import kotlinx.serialization.encoding.CompositeDecoder import kotlinx.serialization.descriptors.PolymorphicKind import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.StructureKind +import kotlin.collections.get public actual fun FirebaseDecoder.structureDecoder(descriptor: SerialDescriptor, polymorphicIsNested: Boolean): CompositeDecoder = when (descriptor.kind) { StructureKind.CLASS, StructureKind.OBJECT -> decodeAsMap(false) diff --git a/firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/_encoders.kt b/firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/_encoders.kt similarity index 100% rename from firebase-common-internal/src/iosMain/kotlin/dev/gitlive/firebase/internal/_encoders.kt rename to firebase-common-internal/src/appleMain/kotlin/dev/gitlive/firebase/internal/_encoders.kt diff --git a/firebase-common-internal/src/commonMain/kotlin/dev/gitlive/firebase/internal/serializers.kt b/firebase-common-internal/src/commonMain/kotlin/dev/gitlive/firebase/internal/serializers.kt index 1c08713a1..e8a44b515 100644 --- a/firebase-common-internal/src/commonMain/kotlin/dev/gitlive/firebase/internal/serializers.kt +++ b/firebase-common-internal/src/commonMain/kotlin/dev/gitlive/firebase/internal/serializers.kt @@ -2,6 +2,8 @@ * Copyright (c) 2020 GitLive Ltd. Use of this source code is governed by the Apache 2.0 license. */ +@file:OptIn(SealedSerializationApi::class) + package dev.gitlive.firebase.internal import kotlinx.serialization.KSerializer diff --git a/firebase-common/build.gradle.kts b/firebase-common/build.gradle.kts index 07ec4b0ce..620dd97fd 100644 --- a/firebase-common/build.gradle.kts +++ b/firebase-common/build.gradle.kts @@ -76,11 +76,17 @@ kotlin { jvm() - val supportIosTarget = project.property("skipIosTarget") != "true" + val supportAppleTarget = project.property("skipAppleTargets") != "true" - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() } js(IR) { diff --git a/firebase-config/build.gradle.kts b/firebase-config/build.gradle.kts index b47b8deb5..400b0a32f 100644 --- a/firebase-config/build.gradle.kts +++ b/firebase-config/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -78,11 +78,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseConfig" } @@ -112,7 +120,11 @@ kotlin { this.languageVersion = libs.versions.settings.language.get() progressiveMode = true optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") optIn("kotlinx.cinterop.BetaInteropApi") } diff --git a/firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt b/firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt similarity index 100% rename from firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt rename to firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt diff --git a/firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfigValue.kt b/firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfigValue.kt similarity index 100% rename from firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfigValue.kt rename to firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfigValue.kt diff --git a/firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtension.kt b/firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtension.kt similarity index 100% rename from firebase-config/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtension.kt rename to firebase-config/src/appleMain/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtension.kt diff --git a/firebase-config/src/iosTest/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtensionTest.kt b/firebase-config/src/appleTest/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtensionTest.kt similarity index 100% rename from firebase-config/src/iosTest/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtensionTest.kt rename to firebase-config/src/appleTest/kotlin/dev/gitlive/firebase/remoteconfig/NSDataExtensionTest.kt diff --git a/firebase-config/src/iosTest/kotlin/dev/gitlive/firebase/remoteconfig/RemoteConfig.kt b/firebase-config/src/appleTest/kotlin/dev/gitlive/firebase/remoteconfig/RemoteConfig.kt similarity index 100% rename from firebase-config/src/iosTest/kotlin/dev/gitlive/firebase/remoteconfig/RemoteConfig.kt rename to firebase-config/src/appleTest/kotlin/dev/gitlive/firebase/remoteconfig/RemoteConfig.kt diff --git a/firebase-crashlytics/build.gradle.kts b/firebase-crashlytics/build.gradle.kts index 514c1763b..232314991 100644 --- a/firebase-crashlytics/build.gradle.kts +++ b/firebase-crashlytics/build.gradle.kts @@ -48,7 +48,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -79,11 +79,19 @@ kotlin { // jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseCrashlytics" } @@ -102,7 +110,11 @@ kotlin { this.languageVersion = libs.versions.settings.language.get() progressiveMode = true optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-crashlytics/src/iosMain/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt b/firebase-crashlytics/src/appleMain/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt similarity index 100% rename from firebase-crashlytics/src/iosMain/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt rename to firebase-crashlytics/src/appleMain/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt diff --git a/firebase-crashlytics/src/iosTest/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt b/firebase-crashlytics/src/appleTest/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt similarity index 100% rename from firebase-crashlytics/src/iosTest/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt rename to firebase-crashlytics/src/appleTest/kotlin/dev/gitlive/firebase/crashlytics/crashlytics.kt diff --git a/firebase-database/build.gradle.kts b/firebase-database/build.gradle.kts index 6f64bddb6..cf69e6022 100644 --- a/firebase-database/build.gradle.kts +++ b/firebase-database/build.gradle.kts @@ -48,7 +48,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -80,11 +80,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseDatabase" } @@ -123,7 +131,11 @@ kotlin { optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") optIn("kotlinx.coroutines.FlowPreview") optIn("kotlinx.serialization.InternalSerializationApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/ServerValue.kt b/firebase-database/src/appleMain/kotlin/dev/gitlive/firebase/database/ServerValue.kt similarity index 100% rename from firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/ServerValue.kt rename to firebase-database/src/appleMain/kotlin/dev/gitlive/firebase/database/ServerValue.kt diff --git a/firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/appleMain/kotlin/dev/gitlive/firebase/database/database.kt similarity index 100% rename from firebase-database/src/iosMain/kotlin/dev/gitlive/firebase/database/database.kt rename to firebase-database/src/appleMain/kotlin/dev/gitlive/firebase/database/database.kt diff --git a/firebase-database/src/iosTest/kotlin/dev/gitlive/firebase/database/database.kt b/firebase-database/src/appleTest/kotlin/dev/gitlive/firebase/database/database.kt similarity index 100% rename from firebase-database/src/iosTest/kotlin/dev/gitlive/firebase/database/database.kt rename to firebase-database/src/appleTest/kotlin/dev/gitlive/firebase/database/database.kt diff --git a/firebase-firestore/build.gradle.kts b/firebase-firestore/build.gradle.kts index f57307d21..dc5204e7a 100644 --- a/firebase-firestore/build.gradle.kts +++ b/firebase-firestore/build.gradle.kts @@ -50,7 +50,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -82,11 +82,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseFirestore" } @@ -140,7 +148,11 @@ kotlin { optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") optIn("kotlinx.serialization.InternalSerializationApi") optIn("kotlinx.serialization.ExperimentalSerializationApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") optIn("kotlinx.cinterop.BetaInteropApi") } diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/FieldValue.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/FieldValue.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/FieldValue.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/FieldValue.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/GeoPoint.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/GeoPoint.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/GeoPoint.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/GeoPoint.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/Timestamp.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/Timestamp.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/Timestamp.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/Timestamp.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/_encoders.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/_encoders.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/_encoders.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/_encoders.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/firestore.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeCollectionReferenceWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeCollectionReferenceWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeCollectionReferenceWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeCollectionReferenceWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentReference.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentReference.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentReference.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentReference.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentSnapshotWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentSnapshotWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentSnapshotWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeDocumentSnapshotWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeFirebaseFirestoreWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeFirebaseFirestoreWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeFirebaseFirestoreWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeFirebaseFirestoreWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeQueryWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeQueryWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeQueryWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeQueryWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeTransactionWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeTransactionWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeTransactionWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeTransactionWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeWriteBatchWrapper.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeWriteBatchWrapper.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeWriteBatchWrapper.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/NativeWriteBatchWrapper.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/Source.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/Source.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/Source.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/Source.kt diff --git a/firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/throwError.kt b/firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/throwError.kt similarity index 100% rename from firebase-firestore/src/iosMain/kotlin/dev/gitlive/firebase/firestore/internal/throwError.kt rename to firebase-firestore/src/appleMain/kotlin/dev/gitlive/firebase/firestore/internal/throwError.kt diff --git a/firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/ContextSwitchTest.kt b/firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/ContextSwitchTest.kt similarity index 100% rename from firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/ContextSwitchTest.kt rename to firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/ContextSwitchTest.kt diff --git a/firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/Ignore.kt b/firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/Ignore.kt similarity index 100% rename from firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/Ignore.kt rename to firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/Ignore.kt diff --git a/firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt b/firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt similarity index 100% rename from firebase-firestore/src/iosTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt rename to firebase-firestore/src/appleTest/kotlin/dev/gitlive/firebase/firestore/firestore.kt diff --git a/firebase-functions/build.gradle.kts b/firebase-functions/build.gradle.kts index 7a9144309..d22ad50ce 100644 --- a/firebase-functions/build.gradle.kts +++ b/firebase-functions/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -79,11 +79,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseFunctions" } @@ -121,7 +129,11 @@ kotlin { progressiveMode = true optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") optIn("kotlinx.serialization.InternalSerializationApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-functions/src/iosMain/kotlin/dev/gitlive/firebase/functions/functions.kt b/firebase-functions/src/appleMain/kotlin/dev/gitlive/firebase/functions/functions.kt similarity index 100% rename from firebase-functions/src/iosMain/kotlin/dev/gitlive/firebase/functions/functions.kt rename to firebase-functions/src/appleMain/kotlin/dev/gitlive/firebase/functions/functions.kt diff --git a/firebase-installations/build.gradle.kts b/firebase-installations/build.gradle.kts index f4ccb0f18..ea6adcd22 100644 --- a/firebase-installations/build.gradle.kts +++ b/firebase-installations/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -78,11 +78,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseInstallations" } @@ -118,7 +126,11 @@ kotlin { this.apiVersion = libs.versions.settings.api.get() this.languageVersion = libs.versions.settings.language.get() progressiveMode = true - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-installations/src/iosMain/kotlin/dev/gitlive/firebase/installations/installations.kt b/firebase-installations/src/appleMain/kotlin/dev/gitlive/firebase/installations/installations.kt similarity index 100% rename from firebase-installations/src/iosMain/kotlin/dev/gitlive/firebase/installations/installations.kt rename to firebase-installations/src/appleMain/kotlin/dev/gitlive/firebase/installations/installations.kt diff --git a/firebase-messaging/build.gradle.kts b/firebase-messaging/build.gradle.kts index 54f578b86..aa32c51fd 100644 --- a/firebase-messaging/build.gradle.kts +++ b/firebase-messaging/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -78,11 +78,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseMessaging" } @@ -119,7 +127,11 @@ kotlin { this.languageVersion = libs.versions.settings.language.get() progressiveMode = true optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") optIn("kotlinx.cinterop.BetaInteropApi") } diff --git a/firebase-messaging/src/iosMain/kotlin/dev/gitlive/firebase/messaging/messaging.kt b/firebase-messaging/src/appleMain/kotlin/dev/gitlive/firebase/messaging/messaging.kt similarity index 100% rename from firebase-messaging/src/iosMain/kotlin/dev/gitlive/firebase/messaging/messaging.kt rename to firebase-messaging/src/appleMain/kotlin/dev/gitlive/firebase/messaging/messaging.kt diff --git a/firebase-messaging/src/iosTest/kotlin/dev/gitlive/firebase/messaging/messaging.kt b/firebase-messaging/src/appleTest/kotlin/dev/gitlive/firebase/messaging/messaging.kt similarity index 100% rename from firebase-messaging/src/iosTest/kotlin/dev/gitlive/firebase/messaging/messaging.kt rename to firebase-messaging/src/appleTest/kotlin/dev/gitlive/firebase/messaging/messaging.kt diff --git a/firebase-perf/build.gradle.kts b/firebase-perf/build.gradle.kts index 05e72148c..0f9b60b47 100644 --- a/firebase-perf/build.gradle.kts +++ b/firebase-perf/build.gradle.kts @@ -48,7 +48,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -79,11 +79,17 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() framework { baseName = "FirebasePerformance" } @@ -113,7 +119,10 @@ kotlin { this.languageVersion = libs.versions.settings.language.get() progressiveMode = true optIn("kotlinx.coroutines.ExperimentalCoroutinesApi") - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-perf/src/iosMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt b/firebase-perf/src/appleMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt similarity index 100% rename from firebase-perf/src/iosMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt rename to firebase-perf/src/appleMain/kotlin/dev/gitlive/firebase/perf/metrics/Trace.kt diff --git a/firebase-perf/src/iosMain/kotlin/dev/gitlive/firebase/perf/performance.kt b/firebase-perf/src/appleMain/kotlin/dev/gitlive/firebase/perf/performance.kt similarity index 100% rename from firebase-perf/src/iosMain/kotlin/dev/gitlive/firebase/perf/performance.kt rename to firebase-perf/src/appleMain/kotlin/dev/gitlive/firebase/perf/performance.kt diff --git a/firebase-perf/src/iosTest/kotlin/dev/gitlive/firebase/perf/performance.kt b/firebase-perf/src/appleTest/kotlin/dev/gitlive/firebase/perf/performance.kt similarity index 100% rename from firebase-perf/src/iosTest/kotlin/dev/gitlive/firebase/perf/performance.kt rename to firebase-perf/src/appleTest/kotlin/dev/gitlive/firebase/perf/performance.kt diff --git a/firebase-storage/build.gradle.kts b/firebase-storage/build.gradle.kts index d8d7c9688..85f6656fe 100644 --- a/firebase-storage/build.gradle.kts +++ b/firebase-storage/build.gradle.kts @@ -47,7 +47,7 @@ android { } } -val supportIosTarget = project.property("skipIosTarget") != "true" +val supportAppleTarget = project.property("skipAppleTargets") != "true" kotlin { explicitApi() @@ -78,11 +78,19 @@ kotlin { jvm() - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosArm64() + tvosX64() + tvosSimulatorArm64() + macosArm64() + macosX64() cocoapods { ios.deploymentTarget = libs.versions.ios.deploymentTarget.get() + tvos.deploymentTarget = libs.versions.tvos.deploymentTarget.get() + osx.deploymentTarget = libs.versions.macos.deploymentTarget.get() framework { baseName = "FirebaseStorage" } @@ -118,7 +126,11 @@ kotlin { this.apiVersion = libs.versions.settings.api.get() this.languageVersion = libs.versions.settings.language.get() progressiveMode = true - if (name.lowercase().contains("ios")) { + if (name.lowercase().contains("ios") + || name.lowercase().contains("apple") + || name.lowercase().contains("tvos") + || name.lowercase().contains("macos") + ) { optIn("kotlinx.cinterop.ExperimentalForeignApi") } } diff --git a/firebase-storage/src/iosMain/kotlin/dev/gitlive/firebase/storage/storage.kt b/firebase-storage/src/appleMain/kotlin/dev/gitlive/firebase/storage/storage.kt similarity index 100% rename from firebase-storage/src/iosMain/kotlin/dev/gitlive/firebase/storage/storage.kt rename to firebase-storage/src/appleMain/kotlin/dev/gitlive/firebase/storage/storage.kt diff --git a/firebase-storage/src/iosTest/kotlin/dev/gitlive/firebase/storage/storage.ios.kt b/firebase-storage/src/appleTest/kotlin/dev/gitlive/firebase/storage/storage.ios.kt similarity index 100% rename from firebase-storage/src/iosTest/kotlin/dev/gitlive/firebase/storage/storage.ios.kt rename to firebase-storage/src/appleTest/kotlin/dev/gitlive/firebase/storage/storage.ios.kt diff --git a/firebase-storage/src/iosTest/kotlin/dev/gitlive/firebase/storage/storage.kt b/firebase-storage/src/appleTest/kotlin/dev/gitlive/firebase/storage/storage.kt similarity index 100% rename from firebase-storage/src/iosTest/kotlin/dev/gitlive/firebase/storage/storage.kt rename to firebase-storage/src/appleTest/kotlin/dev/gitlive/firebase/storage/storage.kt diff --git a/gradle.properties b/gradle.properties index 597e763f9..9ffeb2a2b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,7 +19,7 @@ kotlin.mpp.enableCInteropCommonization=true kotlin.native.cacheKind=none # Set to true to skip tests and even compilation of the iOS target. -skipIosTarget=false +skipAppleTargets=false # Skip iOS Tests firebase-analytics.skipIosTests=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d55c7499a..ba2821923 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,6 +18,8 @@ settings-api = "2.2" settings-language = "2.2" firebase-cocoapods = "11.8.0" ios-deploymentTarget = "13.0" +tvos-deploymentTarget = "13.0" +macos-deploymentTarget = "10.15" test-logger-plugin = "4.0.0" dokka = "2.0.0" publish = "0.34.0" diff --git a/test-utils/build.gradle.kts b/test-utils/build.gradle.kts index a68dad0bf..be2c05ef5 100644 --- a/test-utils/build.gradle.kts +++ b/test-utils/build.gradle.kts @@ -71,11 +71,17 @@ kotlin { jvm() - val supportIosTarget = project.property("skipIosTarget") != "true" + val supportAppleTarget = project.property("skipAppleTargets") != "true" - if (supportIosTarget) { + if (supportAppleTarget) { iosArm64() + iosX64() iosSimulatorArm64() + tvosX64() + tvosArm64() + tvosSimulatorArm64() + macosArm64() + macosX64() } js(IR) { diff --git a/test-utils/src/iosMain/kotlin/dev/gitlive/firebase/TestUtils.kt b/test-utils/src/appleMain/kotlin/dev/gitlive/firebase/TestUtils.kt similarity index 94% rename from test-utils/src/iosMain/kotlin/dev/gitlive/firebase/TestUtils.kt rename to test-utils/src/appleMain/kotlin/dev/gitlive/firebase/TestUtils.kt index 1bd12ad92..971625fc8 100644 --- a/test-utils/src/iosMain/kotlin/dev/gitlive/firebase/TestUtils.kt +++ b/test-utils/src/appleMain/kotlin/dev/gitlive/firebase/TestUtils.kt @@ -14,6 +14,7 @@ import platform.Foundation.NSDefaultRunLoopMode import platform.Foundation.NSRunLoop import platform.Foundation.create import platform.Foundation.runMode +import kotlin.test.assertEquals actual fun runTest(test: suspend CoroutineScope.() -> Unit) = runBlocking { val testRun = MainScope().async { test() } @@ -30,5 +31,5 @@ actual fun runBlockingTest(action: suspend CoroutineScope.() -> Unit) = runBlock actual fun nativeMapOf(vararg pairs: Pair): Any = mapOf(*pairs) actual fun nativeListOf(vararg elements: Any?): Any = listOf(*elements) actual fun nativeAssertEquals(expected: Any?, actual: Any?) { - kotlin.test.assertEquals(expected, actual) + assertEquals(expected, actual) }