From 68235b978b6acbad22020fa77ebe21914a98ba14 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 27 Oct 2023 12:09:28 +0200 Subject: [PATCH] [Analysis] add test generator for Kotlin/Native tests inside Analysis API This test generator is enabled only if Kotlin/Native support is enabled in the project ^KT-62910 --- .../analysis-api-generator/build.gradle.kts | 6 +++- .../generator-kotlin-native/build.gradle.kts | 29 +++++++++++++++++++ .../konan/GenerateAnalysisApiNativeTests.kt | 19 ++++++++++++ .../api/dsl/AnalysisApiTestGenerator.kt | 4 +-- .../analysis/api/dsl/AnalysisApiTestGroup.kt | 2 +- settings.gradle | 4 +++ 6 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 generators/analysis-api-generator/generator-kotlin-native/build.gradle.kts create mode 100644 generators/analysis-api-generator/generator-kotlin-native/tests/org/jetbrains/kotlin/generators/tests/analysis/api/konan/GenerateAnalysisApiNativeTests.kt diff --git a/generators/analysis-api-generator/build.gradle.kts b/generators/analysis-api-generator/build.gradle.kts index 57a36d2e29b..e1e92220621 100644 --- a/generators/analysis-api-generator/build.gradle.kts +++ b/generators/analysis-api-generator/build.gradle.kts @@ -30,6 +30,10 @@ dependencies { testRuntimeOnly(libs.junit.jupiter.engine) } -val generateFrontendApiTests by generator("org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt") +val generateFrontendApiTests by generator("org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt") { + if (kotlinBuildProperties.isKotlinNativeEnabled) { + dependsOn(":generators:analysis-api-generator:generator-kotlin-native:generateAnalysisApiNativeTests") + } +} testsJar() diff --git a/generators/analysis-api-generator/generator-kotlin-native/build.gradle.kts b/generators/analysis-api-generator/generator-kotlin-native/build.gradle.kts new file mode 100644 index 00000000000..d5fc27f3b0b --- /dev/null +++ b/generators/analysis-api-generator/generator-kotlin-native/build.gradle.kts @@ -0,0 +1,29 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +sourceSets { + "main" { none() } + "test" { projectDefault() } +} + +dependencies { + api(kotlinStdlib("jdk8")) + + testImplementation(projectTests(":generators:test-generator")) + testImplementation(projectTests(":compiler:tests-common")) + testImplementation(projectTests(":compiler:tests-spec")) + testImplementation(projectTests(":generators:analysis-api-generator")) + + testImplementation(intellijCore()) + testApi(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter.api) + testRuntimeOnly(libs.junit.jupiter.engine) +} + + +val generateAnalysisApiNativeTests by generator("org.jetbrains.kotlin.generators.tests.analysis.api.konan.GenerateAnalysisApiNativeTestsKt") + +testsJar() + diff --git a/generators/analysis-api-generator/generator-kotlin-native/tests/org/jetbrains/kotlin/generators/tests/analysis/api/konan/GenerateAnalysisApiNativeTests.kt b/generators/analysis-api-generator/generator-kotlin-native/tests/org/jetbrains/kotlin/generators/tests/analysis/api/konan/GenerateAnalysisApiNativeTests.kt new file mode 100644 index 00000000000..a76b82aa40e --- /dev/null +++ b/generators/analysis-api-generator/generator-kotlin-native/tests/org/jetbrains/kotlin/generators/tests/analysis/api/konan/GenerateAnalysisApiNativeTests.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.generators.tests.analysis.api.konan + +import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.AnalysisApiTestGroup +import org.jetbrains.kotlin.generators.tests.analysis.api.dsl.generate + +fun main(args: Array) { + System.setProperty("java.awt.headless", "true") + generate(args) { + generateTests() + } +} + +private fun AnalysisApiTestGroup.generateTests() { +} diff --git a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGenerator.kt b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGenerator.kt index fe5cf45aca2..e8a506b8180 100644 --- a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGenerator.kt +++ b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGenerator.kt @@ -8,13 +8,13 @@ package org.jetbrains.kotlin.generators.tests.analysis.api.dsl import org.jetbrains.kotlin.generators.TestGroupSuite import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 -internal class AnalysisApiTestGenerator(val suite: TestGroupSuite) { +class AnalysisApiTestGenerator(val suite: TestGroupSuite) { fun group(init: AnalysisApiTestGroup.() -> Unit) { AnalysisApiTestGroup(this, { true }, null).init() } } -internal fun generate(args: Array, init: AnalysisApiTestGroup.() -> Unit) { +fun generate(args: Array, init: AnalysisApiTestGroup.() -> Unit) { generateTestGroupSuiteWithJUnit5(args, additionalMethodGenerators = listOf(FrontendConfiguratorTestGenerator)) { AnalysisApiTestGenerator(this).group(init) } diff --git a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGroup.kt b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGroup.kt index 5a73451697f..8c9e7991a47 100644 --- a/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGroup.kt +++ b/generators/analysis-api-generator/tests/org/jetbrains/kotlin/generators/tests/analysis/api/dsl/AnalysisApiTestGroup.kt @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.generators.getDefaultSuiteTestClassName import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly import kotlin.reflect.KClass -internal class AnalysisApiTestGroup( +class AnalysisApiTestGroup( private val generator: AnalysisApiTestGenerator, private val groupFilter: TestFilter, private val directory: String?, diff --git a/settings.gradle b/settings.gradle index d158dd05410..d51f0c89209 100644 --- a/settings.gradle +++ b/settings.gradle @@ -577,6 +577,10 @@ include ":generators:analysis-api-generator", ":prepare:analysis-api-test-framework", ":tools:ide-plugin-dependencies-validator" +if (buildProperties.isKotlinNativeEnabled) { + include ":generators:analysis-api-generator:generator-kotlin-native" +} + if (buildProperties.inJpsBuildIdeaSync) { include ":kotlin-stdlib:jps-build"