Skip to content

Commit

Permalink
Merge pull request #529 from splendo/feature/kotlin-2.0
Browse files Browse the repository at this point in the history
Support for Kotlin 2.0
  • Loading branch information
nbransby authored Jun 25, 2024
2 parents e78daed + 775659b commit a0599d7
Show file tree
Hide file tree
Showing 54 changed files with 788 additions and 595 deletions.
2 changes: 1 addition & 1 deletion .github/actions/setup_test_action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ runs:
using: "composite"
steps:
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ env:

jobs:
build:
runs-on: macos-13
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
Expand Down Expand Up @@ -59,9 +59,9 @@ jobs:
documentation:
runs-on: macos-13
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -71,7 +71,7 @@ jobs:
- name: Generate documentation
run: ./gradlew dokkaHtmlMultiModule
- name: Uploading build folder
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: artefact
path: build/dokka/htmlMultiModule
Expand Down
59 changes: 42 additions & 17 deletions .github/workflows/pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
Expand All @@ -31,41 +31,44 @@ jobs:
fail-fast: false
matrix: ${{ fromJson(needs.jobEmulatorMatrixSetup.outputs.emulator_jobs_matrix) }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- 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: Apply Android licenses
run: ./gradlew ciSdkManagerLicenses
- name: Run Android Instrumented Tests
run: ./gradlew ${{ matrix.gradle_tasks }}
- name: Upload Android test artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Android Test Report HTML"
name: Android ${{ env.ARCHIVE_KEY }} Test Report HTML
path: "**/build/reports/androidTests/"
- name: Upload Firebase Debug Log
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Firebase Debug Log"
name: Android ${{ env.ARCHIVE_KEY }} Firebase Debug Log
path: "**/firebase-debug.log"
build-js:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup test environment
uses: ./.github/actions/setup_test_action
timeout-minutes: 10
- name: Run JS Tests
run: ./gradlew cleanTest jsTest
- name: Upload JS test artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "JS Test Report HTML"
Expand All @@ -74,17 +77,17 @@ jobs:
**/build/reports/tests/jsBrowserTest/
**/build/reports/tests/jsNodeTest/
- name: Upload Firebase Debug Log
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Firebase Debug Log"
name: "JS Firebase Debug Log"
path: "**/firebase-debug.log"
build-ios:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Cocoapods cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cocoapods
Expand All @@ -95,16 +98,38 @@ jobs:
- name: Setup test environment
uses: ./.github/actions/setup_test_action
- name: Run iOS Tests
run: ./gradlew cleanTest iosX64Test
run: ./gradlew cleanTest iosSimulatorArm64Test
- name: Upload iOS test artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "iOS Test Report HTML"
path: "**/build/reports/tests/iosX64Test/"
path: "**/build/reports/tests/iosSimulatorArm64Test/"
- name: Upload Firebase Debug Log
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: failure()
with:
name: "Firebase Debug Log"
name: "iOS Firebase Debug Log"
path: "**/firebase-debug.log"
build-jvm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup test environment
uses: ./.github/actions/setup_test_action
timeout-minutes: 10
- name: Run JVM Tests
run: ./gradlew cleanTest jvmTest
- name: Upload JVM test artifact
uses: actions/upload-artifact@v4
if: failure()
with:
name: "JVM Test Report HTML"
path: |
**/build/reports/tests/jvmTest/
- name: Upload Firebase Debug Log
uses: actions/upload-artifact@v4
if: failure()
with:
name: "JVM Firebase Debug Log"
path: "**/firebase-debug.log"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ Firebase*.zip
*.log
/kotlin-js-store/
/kotlin-js-store/yarn.lock

.kotlin/
67 changes: 33 additions & 34 deletions firebase-analytics/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree

/*
Expand Down Expand Up @@ -26,8 +29,8 @@ android {
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

testOptions.configureTestOptions()
Expand All @@ -44,10 +47,20 @@ android {
val supportIosTarget = project.property("skipIosTarget") != "true"

kotlin {

@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
freeCompilerArgs.add("-Xexpect-actual-classes")
}
targets.configureEach {
compilations.configureEach {
kotlinOptions.freeCompilerArgs += "-Xexpect-actual-classes"
compileTaskProvider.configure {
compilerOptions {
if (this is KotlinJvmCompilerOptions) {
jvmTarget = JvmTarget.JVM_17
}
freeCompilerArgs.add("-Xexpect-actual-classes")
}
}
}
}

Expand All @@ -56,25 +69,9 @@ kotlin {
instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
unitTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
publishAllLibraryVariants()
compilations.configureEach {
kotlinOptions {
jvmTarget = "11"
}
}
}

jvm {
compilations.getByName("main") {
kotlinOptions {
jvmTarget = "17"
}
}
compilations.getByName("test") {
kotlinOptions {
jvmTarget = "17"
}
}
}
jvm()

if (supportIosTarget) {
iosArm64()
Expand All @@ -87,7 +84,7 @@ kotlin {
}
noPodspec()
pod("FirebaseAnalytics") {
version = "10.25.0"
version = libs.versions.firebase.cocoapods.get()
extraOpts += listOf("-compiler-option", "-fmodules")
}
}
Expand All @@ -96,22 +93,18 @@ kotlin {
js(IR) {
useCommonJs()
nodejs {
testTask(
Action {
useKarma {
useChromeHeadless()
}
testTask {
useKarma {
useChromeHeadless()
}
)
}
}
browser {
testTask(
Action {
useKarma {
useChromeHeadless()
}
testTask {
useKarma {
useChromeHeadless()
}
)
}
}
}

Expand Down Expand Up @@ -154,6 +147,12 @@ if (project.property("firebase-analytics.skipIosTests") == "true") {
}
}

if (project.property("firebase-analytics.skipJvmTests") == "true") {
tasks.forEach {
if (it.name.contains("jvm", true) && it.name.contains("test", true)) { it.enabled = false }
}
}

if (project.property("firebase-analytics.skipJsTests") == "true") {
tasks.forEach {
if (it.name.contains("js", true) && it.name.contains("test", true)) { it.enabled = false }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ actual val Firebase.analytics: FirebaseAnalytics
get() = TODO("Not yet implemented")

actual fun Firebase.analytics(app: FirebaseApp): FirebaseAnalytics {
TODO("Not yetimplemented")
TODO("Not yet implemented")
}

actual class FirebaseAnalytics {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
@file:JvmName("tests")
package dev.gitlive.firebase.analytics

import dev.gitlive.firebase.testContext

actual val emulatorHost: String = "10.0.2.2"

actual val context: Any = Unit
actual val context: Any = testContext

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
actual annotation class IgnoreForAndroidUnitTest
Loading

0 comments on commit a0599d7

Please sign in to comment.