Skip to content

Commit a0599d7

Browse files
authored
Merge pull request #529 from splendo/feature/kotlin-2.0
Support for Kotlin 2.0
2 parents e78daed + 775659b commit a0599d7

File tree

54 files changed

+788
-595
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+788
-595
lines changed

.github/actions/setup_test_action/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ runs:
55
using: "composite"
66
steps:
77
- name: Set up JDK
8-
uses: actions/setup-java@v3
8+
uses: actions/setup-java@v4
99
with:
1010
distribution: 'zulu'
1111
java-version: '17'

.github/workflows/publish.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ env:
1515

1616
jobs:
1717
build:
18-
runs-on: macos-13
18+
runs-on: macos-latest
1919
steps:
20-
- uses: actions/checkout@v3
20+
- uses: actions/checkout@v4
2121
- name: Set up JDK
22-
uses: actions/setup-java@v3
22+
uses: actions/setup-java@v4
2323
with:
2424
distribution: 'zulu'
2525
java-version: '17'
@@ -59,9 +59,9 @@ jobs:
5959
documentation:
6060
runs-on: macos-13
6161
steps:
62-
- uses: actions/checkout@v3
62+
- uses: actions/checkout@v4
6363
- name: Set up JDK
64-
uses: actions/setup-java@v3
64+
uses: actions/setup-java@v4
6565
with:
6666
distribution: 'zulu'
6767
java-version: '17'
@@ -71,7 +71,7 @@ jobs:
7171
- name: Generate documentation
7272
run: ./gradlew dokkaHtmlMultiModule
7373
- name: Uploading build folder
74-
uses: actions/upload-artifact@v2
74+
uses: actions/upload-artifact@v4
7575
with:
7676
name: artefact
7777
path: build/dokka/htmlMultiModule

.github/workflows/pull_request.yml

+42-17
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
steps:
1616
- uses: actions/checkout@v4
1717
- name: Set up JDK
18-
uses: actions/setup-java@v3
18+
uses: actions/setup-java@v4
1919
with:
2020
distribution: 'zulu'
2121
java-version: '17'
@@ -31,41 +31,44 @@ jobs:
3131
fail-fast: false
3232
matrix: ${{ fromJson(needs.jobEmulatorMatrixSetup.outputs.emulator_jobs_matrix) }}
3333
steps:
34-
- uses: actions/checkout@v3
34+
- uses: actions/checkout@v4
3535
- name: Enable KVM group perms
3636
run: |
3737
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
3838
sudo udevadm control --reload-rules
3939
sudo udevadm trigger --name-match=kvm
4040
- name: Setup test environment
4141
uses: ./.github/actions/setup_test_action
42+
- name: Set Artifact Name
43+
run: |
44+
echo "ARCHIVE_KEY=$(echo ${{ matrix.gradle_tasks }} | cut -d: -f2)" >> $GITHUB_ENV
4245
- name: Apply Android licenses
4346
run: ./gradlew ciSdkManagerLicenses
4447
- name: Run Android Instrumented Tests
4548
run: ./gradlew ${{ matrix.gradle_tasks }}
4649
- name: Upload Android test artifact
47-
uses: actions/upload-artifact@v3
50+
uses: actions/upload-artifact@v4
4851
if: failure()
4952
with:
50-
name: "Android Test Report HTML"
53+
name: Android ${{ env.ARCHIVE_KEY }} Test Report HTML
5154
path: "**/build/reports/androidTests/"
5255
- name: Upload Firebase Debug Log
53-
uses: actions/upload-artifact@v3
56+
uses: actions/upload-artifact@v4
5457
if: failure()
5558
with:
56-
name: "Firebase Debug Log"
59+
name: Android ${{ env.ARCHIVE_KEY }} Firebase Debug Log
5760
path: "**/firebase-debug.log"
5861
build-js:
5962
runs-on: ubuntu-latest
6063
steps:
61-
- uses: actions/checkout@v3
64+
- uses: actions/checkout@v4
6265
- name: Setup test environment
6366
uses: ./.github/actions/setup_test_action
6467
timeout-minutes: 10
6568
- name: Run JS Tests
6669
run: ./gradlew cleanTest jsTest
6770
- name: Upload JS test artifact
68-
uses: actions/upload-artifact@v3
71+
uses: actions/upload-artifact@v4
6972
if: failure()
7073
with:
7174
name: "JS Test Report HTML"
@@ -74,17 +77,17 @@ jobs:
7477
**/build/reports/tests/jsBrowserTest/
7578
**/build/reports/tests/jsNodeTest/
7679
- name: Upload Firebase Debug Log
77-
uses: actions/upload-artifact@v3
80+
uses: actions/upload-artifact@v4
7881
if: failure()
7982
with:
80-
name: "Firebase Debug Log"
83+
name: "JS Firebase Debug Log"
8184
path: "**/firebase-debug.log"
8285
build-ios:
8386
runs-on: macos-latest
8487
steps:
85-
- uses: actions/checkout@v3
88+
- uses: actions/checkout@v4
8689
- name: Cocoapods cache
87-
uses: actions/cache@v3
90+
uses: actions/cache@v4
8891
with:
8992
path: |
9093
~/.cocoapods
@@ -95,16 +98,38 @@ jobs:
9598
- name: Setup test environment
9699
uses: ./.github/actions/setup_test_action
97100
- name: Run iOS Tests
98-
run: ./gradlew cleanTest iosX64Test
101+
run: ./gradlew cleanTest iosSimulatorArm64Test
99102
- name: Upload iOS test artifact
100-
uses: actions/upload-artifact@v3
103+
uses: actions/upload-artifact@v4
101104
if: failure()
102105
with:
103106
name: "iOS Test Report HTML"
104-
path: "**/build/reports/tests/iosX64Test/"
107+
path: "**/build/reports/tests/iosSimulatorArm64Test/"
105108
- name: Upload Firebase Debug Log
106-
uses: actions/upload-artifact@v3
109+
uses: actions/upload-artifact@v4
107110
if: failure()
108111
with:
109-
name: "Firebase Debug Log"
112+
name: "iOS Firebase Debug Log"
110113
path: "**/firebase-debug.log"
114+
build-jvm:
115+
runs-on: ubuntu-latest
116+
steps:
117+
- uses: actions/checkout@v4
118+
- name: Setup test environment
119+
uses: ./.github/actions/setup_test_action
120+
timeout-minutes: 10
121+
- name: Run JVM Tests
122+
run: ./gradlew cleanTest jvmTest
123+
- name: Upload JVM test artifact
124+
uses: actions/upload-artifact@v4
125+
if: failure()
126+
with:
127+
name: "JVM Test Report HTML"
128+
path: |
129+
**/build/reports/tests/jvmTest/
130+
- name: Upload Firebase Debug Log
131+
uses: actions/upload-artifact@v4
132+
if: failure()
133+
with:
134+
name: "JVM Firebase Debug Log"
135+
path: "**/firebase-debug.log"

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ Firebase*.zip
1111
*.log
1212
/kotlin-js-store/
1313
/kotlin-js-store/yarn.lock
14+
15+
.kotlin/

firebase-analytics/build.gradle.kts

+33-34
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
2+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
3+
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions
14
import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSetTree
25

36
/*
@@ -26,8 +29,8 @@ android {
2629
}
2730

2831
compileOptions {
29-
sourceCompatibility = JavaVersion.VERSION_11
30-
targetCompatibility = JavaVersion.VERSION_11
32+
sourceCompatibility = JavaVersion.VERSION_17
33+
targetCompatibility = JavaVersion.VERSION_17
3134
}
3235

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

4649
kotlin {
47-
50+
@OptIn(ExperimentalKotlinGradlePluginApi::class)
51+
compilerOptions {
52+
freeCompilerArgs.add("-Xexpect-actual-classes")
53+
}
4854
targets.configureEach {
4955
compilations.configureEach {
50-
kotlinOptions.freeCompilerArgs += "-Xexpect-actual-classes"
56+
compileTaskProvider.configure {
57+
compilerOptions {
58+
if (this is KotlinJvmCompilerOptions) {
59+
jvmTarget = JvmTarget.JVM_17
60+
}
61+
freeCompilerArgs.add("-Xexpect-actual-classes")
62+
}
63+
}
5164
}
5265
}
5366

@@ -56,25 +69,9 @@ kotlin {
5669
instrumentedTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
5770
unitTestVariant.sourceSetTree.set(KotlinSourceSetTree.test)
5871
publishAllLibraryVariants()
59-
compilations.configureEach {
60-
kotlinOptions {
61-
jvmTarget = "11"
62-
}
63-
}
6472
}
6573

66-
jvm {
67-
compilations.getByName("main") {
68-
kotlinOptions {
69-
jvmTarget = "17"
70-
}
71-
}
72-
compilations.getByName("test") {
73-
kotlinOptions {
74-
jvmTarget = "17"
75-
}
76-
}
77-
}
74+
jvm()
7875

7976
if (supportIosTarget) {
8077
iosArm64()
@@ -87,7 +84,7 @@ kotlin {
8784
}
8885
noPodspec()
8986
pod("FirebaseAnalytics") {
90-
version = "10.25.0"
87+
version = libs.versions.firebase.cocoapods.get()
9188
extraOpts += listOf("-compiler-option", "-fmodules")
9289
}
9390
}
@@ -96,22 +93,18 @@ kotlin {
9693
js(IR) {
9794
useCommonJs()
9895
nodejs {
99-
testTask(
100-
Action {
101-
useKarma {
102-
useChromeHeadless()
103-
}
96+
testTask {
97+
useKarma {
98+
useChromeHeadless()
10499
}
105-
)
100+
}
106101
}
107102
browser {
108-
testTask(
109-
Action {
110-
useKarma {
111-
useChromeHeadless()
112-
}
103+
testTask {
104+
useKarma {
105+
useChromeHeadless()
113106
}
114-
)
107+
}
115108
}
116109
}
117110

@@ -154,6 +147,12 @@ if (project.property("firebase-analytics.skipIosTests") == "true") {
154147
}
155148
}
156149

150+
if (project.property("firebase-analytics.skipJvmTests") == "true") {
151+
tasks.forEach {
152+
if (it.name.contains("jvm", true) && it.name.contains("test", true)) { it.enabled = false }
153+
}
154+
}
155+
157156
if (project.property("firebase-analytics.skipJsTests") == "true") {
158157
tasks.forEach {
159158
if (it.name.contains("js", true) && it.name.contains("test", true)) { it.enabled = false }

firebase-analytics/src/jvmMain/kotlin/dev/gitlive/firebase/analytics/analytics.jvm.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ actual val Firebase.analytics: FirebaseAnalytics
88
get() = TODO("Not yet implemented")
99

1010
actual fun Firebase.analytics(app: FirebaseApp): FirebaseAnalytics {
11-
TODO("Not yetimplemented")
11+
TODO("Not yet implemented")
1212
}
1313

1414
actual class FirebaseAnalytics {

firebase-analytics/src/jvmTest/kotlin/dev/gitlive/firebase/analytics/analytics.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
@file:JvmName("tests")
66
package dev.gitlive.firebase.analytics
77

8+
import dev.gitlive.firebase.testContext
9+
810
actual val emulatorHost: String = "10.0.2.2"
911

10-
actual val context: Any = Unit
12+
actual val context: Any = testContext
1113

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

0 commit comments

Comments
 (0)