Skip to content

Commit

Permalink
Update to Kotlin 1.8.20, KSP 1.0.11 & kotlinPoet 1.13.1, which fixes #34
Browse files Browse the repository at this point in the history
  • Loading branch information
SalomonBrys committed May 2, 2023
1 parent 962d8a4 commit 00b4f62
Show file tree
Hide file tree
Showing 19 changed files with 837 additions and 481 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
@@ -1,8 +1,8 @@
plugins {
id("org.kodein.root")
kodein.root
}

allprojects {
group = "org.kodein.mock"
version = "1.13.0"
version = "1.14.0"
}
9 changes: 0 additions & 9 deletions gradle.properties
Expand Up @@ -2,17 +2,8 @@
org.gradle.jvmargs = -Xmx4g -XX:MaxMetaspaceSize=2g
org.gradle.parallel = true

# Kotlin
kotlin.native.ignoreDisabledTargets = true
kotlin.incremental.multiplatform = true
kotlin.parallel.tasks.in.project = true
kotlin.mpp.stability.nowarn=true

# KSP
ksp.incremental.intermodule = true

# Kodein
org.kodein.no-default-junit = true

# https://youtrack.jetbrains.com/issue/KT-55720
kotlin.incremental.js.ir=false
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
@@ -1,10 +1,10 @@
[versions]
buildConfig = "3.1.0"
coroutines = "1.6.4"
coroutines = "1.7.0-RC"
datetime = "0.4.0"
javassist = "3.28.0-GA"
kotlinPoet = "1.12.0"
ksp = "1.8.10-1.0.9"
kotlinPoet = "1.13.1"
ksp = "1.8.20-1.0.11"
objenesis = "3.2"

[plugins]
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
1,006 changes: 689 additions & 317 deletions kotlin-js-store/yarn.lock

Large diffs are not rendered by default.

27 changes: 13 additions & 14 deletions mockmp-gradle-plugin/build.gradle.kts
@@ -1,5 +1,5 @@
plugins {
id("org.kodein.gradle-plugin")
kodein.gradlePlugin
`kotlin-dsl`
alias(libs.plugins.buildConfig)
}
Expand All @@ -9,26 +9,25 @@ dependencies {
implementation(kodeinGlobals.kotlin.gradlePlugin)
}

gradlePlugin.plugins.register("mockmp") {
id = "org.kodein.mock.mockmp"
implementationClass = "org.kodein.mock.gradle.MocKMPGradlePlugin"
displayName = "MocKMP"
description = "Applies the MocKMP symbol processor to a Kotlin/Multiplatform project"
}

pluginBundle {
description = "Applies the MocKMP symbol processor to a Kotlin/Multiplatform project"
tags = listOf("kotlin", "mock", "test")
gradlePlugin {
plugins.register("mockmp") {
id = "org.kodein.mock.mockmp"
implementationClass = "org.kodein.mock.gradle.MocKMPGradlePlugin"
displayName = "MocKMP"
description = "Applies the MocKMP symbol processor to a Kotlin/Multiplatform project"
@Suppress("UnstableApiUsage")
tags.set(listOf("kotlin", "mock", "test"))
}
}

buildConfig {
packageName("org.kodein.mock.gradle")
buildConfigField("String", "VERSION", "\"${project.version}\"")
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions {
freeCompilerArgs = freeCompilerArgs + "-Xsuppress-version-warnings"
kotlin.target.compilations.all {
compileTaskProvider.configure {
compilerOptions.freeCompilerArgs.add("-Xsuppress-version-warnings")
}
}

Expand Down
Expand Up @@ -72,8 +72,8 @@ class MocKMPGradlePlugin : Plugin<Project> {
?: throw GradleException("Could not find JVM or Android target")

when (jvmTarget.preset!!.name) {
"jvm" -> addKSPDependency(project, "ksp${jvmTarget.name.capitalize()}Test")
"android" -> addKSPDependency(project, "ksp${jvmTarget.name.capitalize()}TestDebug")
"jvm" -> addKSPDependency(project, "ksp${jvmTarget.name.replaceFirstChar { it.titlecase() }}Test")
"android" -> addKSPDependency(project, "ksp${jvmTarget.name.replaceFirstChar { it.titlecase() }}TestDebug")
}

project.afterEvaluate {
Expand All @@ -93,8 +93,8 @@ class MocKMPGradlePlugin : Plugin<Project> {
project.tasks.withType<KotlinCompile<*>>().all {
if (name.startsWith("compile") && name.contains("TestKotlin")) {
when (jvmTarget.preset!!.name) {
"jvm" -> dependsOn("kspTestKotlin${jvmTarget.name.capitalize()}")
"android" -> dependsOn("kspDebugUnitTestKotlin${jvmTarget.name.capitalize()}")
"jvm" -> dependsOn("kspTestKotlin${jvmTarget.name.replaceFirstChar { it.titlecase() }}")
"android" -> dependsOn("kspDebugUnitTestKotlin${jvmTarget.name.replaceFirstChar { it.titlecase() }}")
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion mockmp-processor/build.gradle.kts
@@ -1,5 +1,5 @@
plugins {
id("org.kodein.library.jvm")
kodein.library.jvm
}

dependencies {
Expand Down
17 changes: 7 additions & 10 deletions mockmp-runtime/build.gradle.kts
@@ -1,17 +1,14 @@
plugins {
id("org.kodein.library.mpp")
kodein.library.mpp
}

kodein {
kotlin {
add(kodeinTargets.jvm.jvm) {
main.dependencies {
implementation(libs.objenesis)
implementation(libs.javassist)
}
kotlin.kodein {
all()
jvm {
sources.mainDependencies {
implementation(libs.objenesis)
implementation(libs.javassist)
}
add(kodeinTargets.native.all)
add(kodeinTargets.js.js)
}
}

Expand Down
10 changes: 10 additions & 0 deletions mockmp-runtime/src/wasmMain/kotlin/org/kodein/mock/errorsWasm.kt
@@ -0,0 +1,10 @@
package org.kodein.mock


public actual class MockerVerificationLazyAssertionError
@PublishedApi internal actual constructor(messageBuilder: () -> String)
: MockerVerificationAssertionError(null)
{
public actual val lazyMessage: String by lazy(messageBuilder)
override val message: String get() = lazyMessage
}
16 changes: 16 additions & 0 deletions mockmp-runtime/src/wasmMain/kotlin/org/kodein/mock/platformWasm.kt
@@ -0,0 +1,16 @@
package org.kodein.mock

import kotlin.reflect.KClass


// This works while this issue is unresolved:
// https://youtrack.jetbrains.com/issue/KT-40613
@Suppress("UNCHECKED_CAST")
private fun <T> Any?.unsafeCast(): T = this as T

private object UnsafeValue

internal actual fun <T> References.unsafeValue(cls: KClass<*>): T = UnsafeValue.unsafeCast<T>()

@PublishedApi
internal actual fun KClass<*>.bestName(): String = simpleName ?: "Unknown"
4 changes: 2 additions & 2 deletions settings.gradle.kts
Expand Up @@ -4,13 +4,13 @@ buildscript {
maven(url = "https://raw.githubusercontent.com/kosi-libs/kodein-internal-gradle-plugin/mvn-repo")
}
dependencies {
classpath("org.kodein.internal.gradle:kodein-internal-gradle-settings:7.0.5")
classpath("org.kodein.internal.gradle:kodein-internal-gradle-settings:8.0.2")
}
}

apply { plugin("org.kodein.settings") }

rootProject.name = "MocKMP"
rootProject.name = "Kosi-MocKMP"

include(
":mockmp-runtime",
Expand Down
45 changes: 20 additions & 25 deletions test-helper/mockmp-test-helper-junit5/build.gradle.kts
@@ -1,35 +1,30 @@
plugins {
id("org.kodein.library.mpp")
kodein.library.mpp
}

kodein {
kotlin {
common.main {
kotlin.srcDir("$buildDir/src/commonMain/kotlin")
dependencies {
api(projects.mockmpRuntime)
implementation(kodeinGlobals.kotlin.test)
}
}
add(kodeinTargets.jvm.jvm) {
main.dependencies {
implementation(kodeinGlobals.kotlin.test.junit5)
}
}
add(kodeinTargets.native.all)
add(kodeinTargets.js.js)
val copySrc by tasks.creating(Sync::class) {
from("$projectDir/../mockmp-test-helper/src")
into("$buildDir/src")
}

val copySrc by tasks.creating(Sync::class) {
from("$projectDir/../mockmp-test-helper/src")
into("$buildDir/src")
kotlin.kodein {
all {
compilations.all {
compileTaskProvider.configure { dependsOn(copySrc) }
}

targets.all {
compilations.all {
compileTaskProvider.configure { dependsOn(copySrc) }
}
}
common.main {
kotlin.srcDir("$buildDir/src/commonMain/kotlin")
dependencies {
api(projects.mockmpRuntime)
implementation(kodeinGlobals.kotlin.test)
}
}

jvm {
sources.mainDependencies {
implementation(kodeinGlobals.kotlin.test.junit5)
}
}
}

Expand Down
23 changes: 10 additions & 13 deletions test-helper/mockmp-test-helper/build.gradle.kts
@@ -1,20 +1,17 @@
plugins {
id("org.kodein.library.mpp")
kodein.library.mpp
}

kodein {
kotlin {
common.main.dependencies {
api(projects.mockmpRuntime)
implementation(kodeinGlobals.kotlin.test)
}
add(kodeinTargets.jvm.jvm) {
main.dependencies {
implementation(kodeinGlobals.kotlin.test.junit)
}
kotlin.kodein {
all()
common.mainDependencies {
api(projects.mockmpRuntime)
implementation(kodeinGlobals.kotlin.test)
}
jvm {
sources.mainDependencies {
implementation(kodeinGlobals.kotlin.test.junit)
}
add(kodeinTargets.native.all)
add(kodeinTargets.js.js)
}
}

Expand Down
51 changes: 20 additions & 31 deletions tests/tests-junit4/build.gradle.kts
@@ -1,35 +1,31 @@
plugins {
id("org.kodein.mpp")
kodein.mpp
alias(libs.plugins.ksp)
}

kodein {
kotlin {
common.main.dependencies {
implementation(libs.datetime)
kotlin.kodein {
allTestable {
compilations.test {
compileTaskProvider { dependsOn("kspTestKotlinJvm") }
}
}

common.test {
dependencies {
implementation(projects.mockmpRuntime)
implementation(projects.testHelper.mockmpTestHelper)
implementation(libs.coroutines.test)
implementation(kodeinGlobals.kotlin.test.junit)
}
// Adding KSP JVM result to COMMON source set
kotlin.srcDir("build/generated/ksp/jvm/jvmTest/kotlin")
common.mainDependencies {
implementation(libs.datetime)
}
common.test {
dependencies {
implementation(projects.mockmpRuntime)
implementation(projects.testHelper.mockmpTestHelper)
implementation(libs.coroutines.test)
}
// Adding KSP JVM result to COMMON source set
kotlin.srcDir("build/generated/ksp/jvm/jvmTest/kotlin")
}

add(kodeinTargets.jvm.jvm)
add(kodeinTargets.native.allDarwin + kodeinTargets.native.allDesktop)
add(kodeinTargets.js.js)

targets.all {
compilations.all {
kotlinOptions {
allWarningsAsErrors = true
}
}
jvm {
sources.mainDependencies {
implementation(kodeinGlobals.kotlin.test.junit)
}
}
}
Expand All @@ -42,10 +38,3 @@ dependencies {
// Running KSP for JVM only
"kspJvmTest"(projects.mockmpProcessor)
}

// Adding KSP JVM as a dependency to all Kotlin compilations
tasks.withType<org.jetbrains.kotlin.gradle.dsl.KotlinCompile<*>>().all {
if (name.startsWith("compileTestKotlin")) {
dependsOn("kspTestKotlinJvm")
}
}
6 changes: 3 additions & 3 deletions tests/tests-junit4/src/commonMain/kotlin/foo/Types.kt
Expand Up @@ -7,7 +7,7 @@ import data.Direction
@RequiresOptIn
annotation class ExperimentalTest

typealias FooMap = Map<String, List<Pair<Int, Set<String>>>>
typealias FooMap<T> = Map<T, List<Pair<Int, Set<String>>>>

interface Foo<out T : Any> {
val roString: String
Expand All @@ -20,13 +20,13 @@ interface Foo<out T : Any> {
fun doAbstract(abs: Abs)
fun doSealedClass(s: SCls)
fun doSealedInterface(s: SItf)
fun doMap(m: FooMap)
fun doMap(m: FooMap<String>)
fun newInt(): Int
fun newString(): String
fun newStringNullable(): String?
fun newT(): T
val defaultT: T
val map: FooMap
val map: FooMap<String>
val list: List<Set<Int>>

@Deprecated("This is a test")
Expand Down

0 comments on commit 00b4f62

Please sign in to comment.