From ea3b860d6149604e874a6833c7dd79ac3ec6e8a5 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 21 Oct 2022 15:23:15 +0200 Subject: [PATCH] [java] Upgrade testing dsl for kotest 5.5.1 --- .../lang/java/ast/ASTCatchStatementTest.kt | 2 +- .../pmd/lang/java/ast/KotlinTestingDsl.kt | 2 +- .../pmd/lang/java/ast/ParserTestSpec.kt | 75 ++++++++++--------- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTCatchStatementTest.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTCatchStatementTest.kt index 73a2c2d9b7..a87fdfaea4 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTCatchStatementTest.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ASTCatchStatementTest.kt @@ -57,7 +57,7 @@ class ASTCatchStatementTest : ParserTestSpec({ } child { - it.image shouldBe "e" + it.name shouldBe "e" } listOf(ioe, aerr) diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt index f759b45db9..d70f4b5d39 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/KotlinTestingDsl.kt @@ -28,7 +28,7 @@ enum class JavaVersion : Comparable { J19, J19__PREVIEW; /** Name suitable for use with e.g. [JavaParsingHelper.parse] */ - val pmdName: String = name.removePrefix("J").replaceFirst("__", "-").replace('_', '.').toLowerCase() + val pmdName: String = name.removePrefix("J").replaceFirst("__", "-").replace('_', '.').lowercase() val parser: JavaParsingHelper = JavaParsingHelper.WITH_PROCESSING.withDefaultVersion(pmdName) diff --git a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ParserTestSpec.kt b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ParserTestSpec.kt index 5239e33f65..c5e409a51f 100644 --- a/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ParserTestSpec.kt +++ b/pmd-java/src/test/kotlin/net/sourceforge/pmd/lang/java/ast/ParserTestSpec.kt @@ -4,15 +4,15 @@ package net.sourceforge.pmd.lang.java.ast -import io.kotest.core.config.configuration +import io.kotest.core.names.TestName +import io.kotest.core.source.sourceRef import io.kotest.core.spec.DslDrivenSpec -import io.kotest.core.spec.style.scopes.Lifecycle import io.kotest.core.spec.style.scopes.RootScope -import io.kotest.core.spec.style.scopes.RootTestRegistration -import io.kotest.core.test.TestCaseConfig -import io.kotest.core.test.TestContext +import io.kotest.core.spec.style.scopes.addContainer +import io.kotest.core.spec.style.scopes.addTest +import io.kotest.core.test.NestedTest +import io.kotest.core.test.TestScope import io.kotest.core.test.TestType -import io.kotest.core.test.createTestName import net.sourceforge.pmd.lang.ast.test.Assertions import net.sourceforge.pmd.lang.ast.test.IntelliMarker import io.kotest.matchers.should as kotlintestShould @@ -31,22 +31,16 @@ abstract class ParserTestSpec(body: ParserTestSpec.() -> Unit) : DslDrivenSpec() body() } - override fun lifecycle(): Lifecycle = Lifecycle.from(this) - override fun defaultConfig(): TestCaseConfig = actualDefaultConfig() - override fun defaultTestCaseConfig(): TestCaseConfig? = defaultTestConfig - override fun registration(): RootTestRegistration = RootTestRegistration.from(this) - - private fun actualDefaultConfig() = - defaultTestConfig ?: defaultTestCaseConfig() ?: configuration.defaultTestConfig - - fun test(name: String, disabled: Boolean = false, test: suspend TestContext.() -> Unit) = - registration().addTest( - name = createTestName(name), - xdisabled = disabled, - test = test, - config = actualDefaultConfig() + fun test(name: String, disabled: Boolean = false, test: suspend TestScope.() -> Unit) = + addTest( + testName = TestName(name), + disabled = disabled, + config = null, + type = TestType.Test, + test = test ) + /** * Defines a group of tests that should be named similarly, * with separate tests for separate versions. @@ -66,10 +60,11 @@ abstract class ParserTestSpec(body: ParserTestSpec.() -> Unit) : DslDrivenSpec() fun parserTestGroup(name: String, disabled: Boolean = false, spec: suspend GroupTestCtx.() -> Unit) = - registration().addContainerTest( - name = createTestName(name), + addContainer( + testName = TestName(name), test = { GroupTestCtx(this).spec() }, - xdisabled = disabled + disabled = disabled, + config = null ) /** @@ -117,37 +112,43 @@ abstract class ParserTestSpec(body: ParserTestSpec.() -> Unit) : DslDrivenSpec() } private suspend fun containedParserTestImpl( - context: TestContext, + scope: TestScope, name: String, javaVersion: JavaVersion, assertions: ParserTestCtx.() -> Unit) { - context.registerTestCase( - name = createTestName(name), - test = { ParserTestCtx(javaVersion).assertions() }, - config = actualDefaultConfig(), - type = TestType.Test + val nested = NestedTest( + name = TestName(name), + test = { ParserTestCtx(javaVersion).assertions() }, + config = null, + type = TestType.Test, + disabled = false, + source = sourceRef() ) + scope.registerTestCase(nested) } - inner class GroupTestCtx(private val context: TestContext) { + inner class GroupTestCtx(private val scope: TestScope) { suspend fun onVersions(javaVersions: List, spec: suspend VersionedTestCtx.() -> Unit) { javaVersions.forEach { javaVersion -> - context.registerTestCase( - name = createTestName("Java ${javaVersion.pmdName}"), - test = { VersionedTestCtx(this, javaVersion).spec() }, - config = actualDefaultConfig(), - type = TestType.Container + val nested = NestedTest( + name = TestName("Java ${javaVersion.pmdName}"), + test = { VersionedTestCtx(this, javaVersion).spec() }, + config = null, + type = TestType.Container, + disabled = false, + source = sourceRef() ) + scope.registerTestCase(nested) } } - inner class VersionedTestCtx(private val context: TestContext, javaVersion: JavaVersion) : ParserTestCtx(javaVersion) { + inner class VersionedTestCtx(private val scope: TestScope, javaVersion: JavaVersion) : ParserTestCtx(javaVersion) { suspend infix fun String.should(matcher: Assertions) { - containedParserTestImpl(context, "'$this'", javaVersion = javaVersion) { + containedParserTestImpl(scope, "'$this'", javaVersion = javaVersion) { this@should kotlintestShould matcher } }