diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTestSpec.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTestSpec.kt index 0fa4966a258..3e41deb5de8 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTestSpec.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractFirDiagnosticTestSpec.kt @@ -17,19 +17,23 @@ abstract class AbstractFirDiagnosticTestSpec : AbstractFirDiagnosticTest() { override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) with(builder) { - defaultDirectives { - +SPEC_HELPERS - +WITH_STDLIB - } - - useAdditionalSourceProviders(::SpecHelpersSourceFilesProvider) - - useAfterAnalysisCheckers( - ::FirIdenticalChecker, - ::FirFailingTestSuppressor, - ) - - useMetaTestConfigurators(::FirOldFrontendMetaConfigurator) + baseFirSpecDiagnosticTestConfiguration() } } } + +fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration() { + defaultDirectives { + +SPEC_HELPERS + +WITH_STDLIB + } + + useAdditionalSourceProviders(::SpecHelpersSourceFilesProvider) + + useAfterAnalysisCheckers( + ::FirIdenticalChecker, + ::FirFailingTestSuppressor, + ) + + useMetaTestConfigurators(::FirOldFrontendMetaConfigurator) +} diff --git a/generators/idea-generator/build.gradle.kts b/generators/idea-generator/build.gradle.kts index 647df086653..03f19ce3963 100644 --- a/generators/idea-generator/build.gradle.kts +++ b/generators/idea-generator/build.gradle.kts @@ -34,6 +34,7 @@ dependencies { testCompile(projectTests(":plugins:parcelize:parcelize-ide")) testCompile(projectTests(":kotlinx-serialization-ide-plugin")) testCompile(projectTests(":compiler:tests-common")) + testCompile(projectTests(":compiler:tests-spec")) } val generateIdeaTests by generator("org.jetbrains.kotlin.generators.tests.idea.GenerateTestsKt") diff --git a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt index f6ed8ba218b..a91a2c16d7f 100644 --- a/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt +++ b/generators/idea-generator/tests/org/jetbrains/kotlin/generators/tests/idea/GenerateTests.kt @@ -89,6 +89,7 @@ import org.jetbrains.kotlin.idea.fir.intentions.AbstractHLIntentionTest import org.jetbrains.kotlin.idea.fir.low.level.api.* import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.AbstractDiagnosticTraversalCounterTest import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.AbstractFirContextCollectionTest +import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataSpecTest import org.jetbrains.kotlin.idea.fir.low.level.api.diagnostic.compiler.based.AbstractDiagnosisCompilerTestDataTest import org.jetbrains.kotlin.idea.fir.low.level.api.file.structure.AbstractFileStructureAndOutOfBlockModificationTrackerConsistencyTest import org.jetbrains.kotlin.idea.fir.low.level.api.file.structure.AbstractFileStructureTest @@ -171,7 +172,9 @@ import org.jetbrains.kotlin.search.AbstractAnnotatedMembersSearchTest import org.jetbrains.kotlin.search.AbstractInheritorsSearchTest import org.jetbrains.kotlin.idea.fir.shortenRefs.AbstractFirShortenRefsTest import org.jetbrains.kotlin.shortenRefs.AbstractShortenRefsTest +import org.jetbrains.kotlin.spec.utils.GeneralConfiguration import org.jetbrains.kotlin.test.TargetBackend +import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestSpec import org.jetbrains.kotlin.tools.projectWizard.cli.AbstractProjectTemplateBuildFileGenerationTest import org.jetbrains.kotlin.tools.projectWizard.cli.AbstractYamlBuildFileGenerationTest import org.jetbrains.kotlin.tools.projectWizard.wizard.AbstractProjectTemplateNewWizardProjectImportTest @@ -179,6 +182,7 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.AbstractYamlNewWizardProj import org.jetbrains.kotlinx.serialization.idea.AbstractSerializationPluginIdeDiagnosticTest import org.jetbrains.kotlinx.serialization.idea.AbstractSerializationQuickFixTest import org.jetbrains.uast.test.kotlin.* +import org.jetbrains.kotlin.spec.utils.tasks.detectDirsWithTestsMapFileOnly fun main(args: Array) { System.setProperty("java.awt.headless", "true") @@ -1111,6 +1115,17 @@ fun main(args: Array) { } } + testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH + ) { + testClass { + model( + "diagnostics", + excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"), + excludedPattern = excludedFirTestdataPattern + ) + } + } + testGroup("idea/idea-fir/tests", "idea") { testClass { diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt index db0e1a3487e..71bbb8a70f9 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/compiler/based/IdeTestIgnoreHandler.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based import org.jetbrains.kotlin.test.WrappedException +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.model.AfterAnalysisChecker import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.services.TestServices @@ -58,4 +59,16 @@ class IdeTestIgnoreHandler(testServices: TestServices) : AfterAnalysisChecker(te } } +fun TestConfigurationBuilder.addIdeTestIgnoreHandler() { + /* IdeTestIgnoreHandler should be executed after FirFailingTestSuppressor, + otherwise IdeTestIgnoreHandler will suppress exceptions and FirFailingTestSuppressor will throw error + saying that file .fir.fail exists but test passes + */ + forTestsMatching("*") { + useAfterAnalysisCheckers( + ::IdeTestIgnoreHandler + ) + } +} + class TestWithFirIdeIgnoreAnnotationPassesException(override val message: String) : IllegalStateException() diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataSpecTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataSpecTest.kt new file mode 100644 index 00000000000..c9ff564b676 --- /dev/null +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataSpecTest.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2010-2021 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.idea.fir.low.level.api.diagnostic.compiler.based + +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.AbstractCompilerBasedTest +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.IdeTestIgnoreHandler +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.addIdeTestIgnoreHandler +import org.jetbrains.kotlin.test.runners.baseFirSpecDiagnosticTestConfiguration + +abstract class AbstractDiagnosisCompilerTestDataSpecTest : AbstractCompilerBasedTest() { + override fun TestConfigurationBuilder.configureTest() { + baseFirDiagnosticTestConfiguration() + baseFirSpecDiagnosticTestConfiguration() + addIdeTestIgnoreHandler() + } +} \ No newline at end of file diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataTest.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataTest.kt index 2c02fb94f2f..3144a892466 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataTest.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/tests/org/jetbrains/kotlin/idea/fir/low/level/api/diagnostic/compiler/based/AbstractDiagnosisCompilerTestDataTest.kt @@ -9,18 +9,11 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.AbstractCompil import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.IdeTestIgnoreHandler +import org.jetbrains.kotlin.idea.fir.low.level.api.compiler.based.addIdeTestIgnoreHandler abstract class AbstractDiagnosisCompilerTestDataTest : AbstractCompilerBasedTest() { override fun TestConfigurationBuilder.configureTest() { baseFirDiagnosticTestConfiguration() - /* IdeTestIgnoreHandler should be executed after FirFailingTestSuppressor, - otherwise IdeTestIgnoreHandler will suppress exceptions and FirFailingTestSuppressor will throw error - saying that file .fir.fail exists but test passes - */ - forTestsMatching("*") { - useAfterAnalysisCheckers( - ::IdeTestIgnoreHandler - ) - } + addIdeTestIgnoreHandler() } } \ No newline at end of file