diff --git a/api/src/test/kotlin/se/ansman/kotshi/TestKotshiUtils.kt b/api/src/test/kotlin/se/ansman/kotshi/TestKotshiUtils.kt index 3b84c94..035f3b6 100644 --- a/api/src/test/kotlin/se/ansman/kotshi/TestKotshiUtils.kt +++ b/api/src/test/kotlin/se/ansman/kotshi/TestKotshiUtils.kt @@ -4,7 +4,7 @@ import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isNotEqualTo import com.squareup.moshi.JsonQualifier -import org.junit.Test +import org.junit.jupiter.api.Test import se.ansman.kotshi.KotshiUtils.createJsonQualifierImplementation import se.ansman.kotshi.KotshiUtils.matches import kotlin.reflect.KClass diff --git a/gradle-plugin/src/main/kotlin/library.gradle.kts b/gradle-plugin/src/main/kotlin/library.gradle.kts index ad3f7f9..8555769 100644 --- a/gradle-plugin/src/main/kotlin/library.gradle.kts +++ b/gradle-plugin/src/main/kotlin/library.gradle.kts @@ -25,10 +25,23 @@ tasks.withType().configureEach { } } +tasks.withType().configureEach { + useJUnitPlatform() + maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1) + systemProperties( + "junit.jupiter.execution.parallel.enabled" to "true", + "junit.jupiter.execution.parallel.config.strategy" to "dynamic", + "junit.jupiter.execution.parallel.config.dynamic.factor" to "1", + "junit.jupiter.execution.parallel.mode.default" to "concurrent", + "junit.jupiter.execution.parallel.mode.classes.default" to "concurrent", + ) +} + tasks.withType { enabled = false } dependencies { testImplementation(libs.junit) + testImplementation(libs.junit.jupiter) testImplementation(libs.assertk) testImplementation(libs.kotlin.test.junit) } \ No newline at end of file diff --git a/gradle-plugin/src/main/kotlin/test-library.gradle.kts b/gradle-plugin/src/main/kotlin/test-library.gradle.kts index 2f222cb..0d7d5ae 100644 --- a/gradle-plugin/src/main/kotlin/test-library.gradle.kts +++ b/gradle-plugin/src/main/kotlin/test-library.gradle.kts @@ -16,7 +16,6 @@ sourceSets { } tasks.withType().configureEach { - maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).coerceAtLeast(1) jvmArgs( "--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", "--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 2602c2b..bbd5e2a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -28,6 +28,8 @@ kotlinpoet-ksp = { module = "com.squareup:kotlinpoet-ksp", version.ref = "kotlin kotlinx-metadata = "org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.6.0" junit = "junit:junit:4.13.2" +junit-jupiter = "org.junit.jupiter:junit-jupiter:5.9.1" + assertk = "com.willowtreeapps.assertk:assertk-jvm:0.25" compileTesting-core = { module = "com.github.tschuchortdev:kotlin-compile-testing", version.ref = "compileTesting" } diff --git a/settings.gradle.kts b/settings.gradle.kts index a703d08..810b1a6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,10 @@ pluginManagement { } } +plugins { + id("com.gradle.enterprise") version "3.9" +} + rootProject.name = "kotshi" include("compiler") include("api") @@ -20,4 +24,14 @@ dependencyResolutionManagement { google() mavenCentral() } +} + +gradleEnterprise { + if (System.getenv("CI") != null) { + buildScan { + publishAlways() + termsOfServiceUrl = "https://gradle.com/terms-of-service" + termsOfServiceAgree = "yes" + } + } } \ No newline at end of file diff --git a/tests/ksp/src/test/kotlin/se/ansman/kotshi/KspGeneratorTest.kt b/tests/ksp/src/test/kotlin/se/ansman/kotshi/KspGeneratorTest.kt index 496ff40..ed18484 100644 --- a/tests/ksp/src/test/kotlin/se/ansman/kotshi/KspGeneratorTest.kt +++ b/tests/ksp/src/test/kotlin/se/ansman/kotshi/KspGeneratorTest.kt @@ -7,17 +7,20 @@ import com.tschuchort.compiletesting.SourceFile import com.tschuchort.compiletesting.kspArgs import com.tschuchort.compiletesting.kspIncremental import com.tschuchort.compiletesting.symbolProcessorProviders -import org.junit.Test +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.parallel.Execution +import org.junit.jupiter.api.parallel.ExecutionMode import se.ansman.kotshi.ksp.KotshiSymbolProcessor import se.ansman.kotshi.ksp.KotshiSymbolProcessorProvider import java.io.File import kotlin.test.assertEquals +@Execution(ExecutionMode.SAME_THREAD) class KspGeneratorTest : BaseGeneratorTest() { override val processorClassName: String get() = KotshiSymbolProcessor::class.java.canonicalName override val extraGeneratedFiles: List - get() = temporaryFolder.root.resolve("ksp/sources/kotlin/").listFiles()?.asList() ?: emptyList() + get() = temporaryFolder.resolve("ksp/sources/kotlin/").listFiles()?.asList() ?: emptyList() override fun KotlinCompilation.setUp(options: Map) { kspIncremental = true diff --git a/tests/src/test/kotlin/se/ansman/kotshi/BaseGeneratorTest.kt b/tests/src/test/kotlin/se/ansman/kotshi/BaseGeneratorTest.kt index 6229a55..4e48cec 100644 --- a/tests/src/test/kotlin/se/ansman/kotshi/BaseGeneratorTest.kt +++ b/tests/src/test/kotlin/se/ansman/kotshi/BaseGeneratorTest.kt @@ -9,9 +9,8 @@ import com.tschuchort.compiletesting.KotlinCompilation import com.tschuchort.compiletesting.SourceFile import com.tschuchort.compiletesting.SourceFile.Companion.java import com.tschuchort.compiletesting.SourceFile.Companion.kotlin -import org.junit.Rule -import org.junit.Test -import org.junit.rules.TemporaryFolder +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.io.TempDir import se.ansman.kotshi.Errors.ignoredDataClassPropertyWithoutDefaultValue import se.ansman.kotshi.Errors.javaClassNotSupported import se.ansman.kotshi.Errors.jsonDefaultValueAppliedToInvalidType @@ -29,9 +28,8 @@ import se.ansman.kotshi.assertions.isAssignableTo import java.io.File abstract class BaseGeneratorTest { - @Rule - @JvmField - val temporaryFolder: TemporaryFolder = TemporaryFolder() + @TempDir + lateinit var temporaryFolder: File protected abstract val processorClassName: String protected open val extraGeneratedFiles: List get() = emptyList() @@ -572,7 +570,7 @@ abstract class BaseGeneratorTest { protected fun compile(vararg sources: SourceFile, options: Map = emptyMap()) = KotlinCompilation() .apply { - workingDir = temporaryFolder.root + workingDir = temporaryFolder this.sources = sources.asList() inheritClassPath = true messageOutputStream = System.out // see diagnostics in real time