FIR IDE: abstract low-level-api from dependency on idea
This commit is contained in:
@@ -81,6 +81,7 @@ val generateTests by generator("org.jetbrains.kotlin.generators.tests.GenerateTe
|
||||
if (kotlinBuildProperties.getOrNull("attachedIntellijVersion") == null) {
|
||||
dependsOn(":generators:idea-generator:generateIdeaTests")
|
||||
}
|
||||
dependsOn(":generators:frontend-api-generator:generateFrontendApiTests")
|
||||
}
|
||||
|
||||
val generateProtoBuf by generator("org.jetbrains.kotlin.generators.protobuf.GenerateProtoBufKt", protobufSourceSet)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
id("jps-compatible")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
"main" { java.srcDirs("main") }
|
||||
"test" { projectDefault() }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile(kotlinStdlib("jdk8"))
|
||||
|
||||
testCompile(projectTests(":generators:test-generator"))
|
||||
testCompile(projectTests(":plugins:parcelize:parcelize-ide"))
|
||||
testCompile(projectTests(":kotlinx-serialization-ide-plugin"))
|
||||
testCompile(projectTests(":compiler:tests-common"))
|
||||
testCompile(projectTests(":compiler:tests-spec"))
|
||||
testCompile(projectTests(":idea:idea-frontend-fir:idea-fir-low-level-api"))
|
||||
testCompile(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
|
||||
testApiJUnit5()
|
||||
}
|
||||
|
||||
val generateFrontendApiTests by generator("org.jetbrains.kotlin.generators.tests.frontend.api.GenerateTestsKt")
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* 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.generators.tests.frontend.api
|
||||
|
||||
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirLazyBodiesCalculatorTest
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirLazyDeclarationResolveTest
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractFirOnAirResolveTest
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.AbstractPartialRawFirBuilderTestCase
|
||||
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.AbstractFileStructureTest
|
||||
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration
|
||||
import org.jetbrains.kotlin.spec.utils.tasks.detectDirsWithTestsMapFileOnly
|
||||
import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
System.setProperty("java.awt.headless", "true")
|
||||
|
||||
val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$"
|
||||
|
||||
|
||||
generateTestGroupSuiteWithJUnit5(args) {
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "compiler/fir/raw-fir/psi2fir/testData") {
|
||||
testClass<AbstractFirLazyBodiesCalculatorTest> {
|
||||
model("rawBuilder", testMethod = "doTest")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "idea/idea-frontend-fir/idea-fir-low-level-api/testdata") {
|
||||
testClass<AbstractFirOnAirResolveTest> {
|
||||
model("onAirResolve")
|
||||
}
|
||||
testClass<AbstractFirLazyDeclarationResolveTest> {
|
||||
model("lazyResolve")
|
||||
}
|
||||
|
||||
testClass<AbstractFileStructureTest> {
|
||||
model("fileStructure")
|
||||
}
|
||||
|
||||
testClass<AbstractFirContextCollectionTest> {
|
||||
model("fileStructure")
|
||||
}
|
||||
|
||||
testClass<AbstractDiagnosticTraversalCounterTest> {
|
||||
model("diagnosticTraversalCounter")
|
||||
}
|
||||
|
||||
testClass<AbstractPartialRawFirBuilderTestCase> {
|
||||
model("partialRawBuilder", testMethod = "doRawFirTest")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup(
|
||||
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
|
||||
"compiler/fir/analysis-tests/testData",
|
||||
) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerFirTestdataTestGenerated") {
|
||||
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
|
||||
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
|
||||
}
|
||||
}
|
||||
|
||||
testGroup(
|
||||
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
|
||||
"compiler/testData",
|
||||
) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerTestFE10TestdataTestGenerated") {
|
||||
model(
|
||||
"diagnostics/tests",
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
)
|
||||
model(
|
||||
"diagnostics/testsWithStdLib",
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
excludeDirs = listOf("native")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataSpecTest>(suiteTestClassName = "FirIdeSpecTest") {
|
||||
model(
|
||||
"diagnostics",
|
||||
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -15,6 +15,7 @@ dependencies {
|
||||
testCompile(projectTests(":idea:idea-fir-performance-tests"))
|
||||
testCompile(projectTests(":idea:idea-frontend-fir"))
|
||||
testCompile(projectTests(":idea:idea-frontend-fir:idea-fir-low-level-api"))
|
||||
testCompile(projectTests(":idea:idea-frontend-fir:fir-low-level-api-ide-impl"))
|
||||
testCompile(projectTests(":idea:idea-fir-fe10-binding"))
|
||||
testCompile(projectTests(":j2k"))
|
||||
testCompile(projectTests(":nj2k"))
|
||||
@@ -35,6 +36,7 @@ dependencies {
|
||||
testCompile(projectTests(":kotlinx-serialization-ide-plugin"))
|
||||
testCompile(projectTests(":compiler:tests-common"))
|
||||
testCompile(projectTests(":compiler:tests-spec"))
|
||||
testApiJUnit5()
|
||||
}
|
||||
|
||||
val generateIdeaTests by generator("org.jetbrains.kotlin.generators.tests.idea.GenerateTestsKt")
|
||||
|
||||
+11
-88
@@ -87,11 +87,8 @@ import org.jetbrains.kotlin.idea.fir.inspections.AbstractHLInspectionTest
|
||||
import org.jetbrains.kotlin.idea.fir.inspections.AbstractHLLocalInspectionTest
|
||||
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
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.resolve.AbstractInnerDeclarationsResolvePhaseTest
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.AbstractSessionsInvalidationTest
|
||||
@@ -109,6 +106,9 @@ import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByFqName
|
||||
import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByPsiTest
|
||||
import org.jetbrains.kotlin.idea.fir.frontend.api.symbols.AbstractSymbolByReferenceTest
|
||||
import org.jetbrains.kotlin.idea.fir.inspections.AbstractFe10BindingIntentionTest
|
||||
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.file.structure.AbstractFileStructureAndOutOfBlockModificationTrackerConsistencyTest
|
||||
import org.jetbrains.kotlin.idea.hierarchy.AbstractHierarchyTest
|
||||
import org.jetbrains.kotlin.idea.hierarchy.AbstractHierarchyWithLibTest
|
||||
import org.jetbrains.kotlin.idea.highlighter.*
|
||||
@@ -183,9 +183,11 @@ import org.jetbrains.kotlinx.serialization.idea.AbstractSerializationPluginIdeDi
|
||||
import org.jetbrains.kotlinx.serialization.idea.AbstractSerializationQuickFixTest
|
||||
import org.jetbrains.uast.test.kotlin.*
|
||||
import org.jetbrains.kotlin.spec.utils.tasks.detectDirsWithTestsMapFileOnly
|
||||
import org.jetbrains.kotlin.test.generators.generateTestGroupSuiteWithJUnit5
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
System.setProperty("java.awt.headless", "true")
|
||||
|
||||
generateTestGroupSuite(args) {
|
||||
val excludedFirTestdataPattern = "^(.+)\\.fir\\.kts?\$"
|
||||
|
||||
@@ -1047,100 +1049,21 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "idea/testData") {
|
||||
testClass<AbstractFirLazyResolveTest> {
|
||||
model("fir/lazyResolve", extension = "test", singleClass = true, filenameStartsLowerCase = true)
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "compiler/fir/raw-fir/psi2fir/testData") {
|
||||
testClass<AbstractFirLazyBodiesCalculatorTest> {
|
||||
model("rawBuilder", testMethod = "doTest")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", "idea/idea-frontend-fir/idea-fir-low-level-api/testdata") {
|
||||
testClass<AbstractFirMultiModuleLazyResolveTest> {
|
||||
model("multiModuleLazyResolve", recursive = false, extension = null)
|
||||
}
|
||||
testClass<AbstractFirSealedInheritorsTest> {
|
||||
model("resolveSealed", recursive = false, extension = null)
|
||||
}
|
||||
testClass<AbstractFirOnAirResolveTest> {
|
||||
model("onAirResolve")
|
||||
}
|
||||
testClass<AbstractFirLazyDeclarationResolveTest> {
|
||||
model("lazyResolve")
|
||||
}
|
||||
testClass<AbstractFirLibraryModuleDeclarationResolveTest> {
|
||||
model("libraryModuleResolve", recursive = false)
|
||||
}
|
||||
testGroup("idea/idea-frontend-fir/fir-low-level-api-ide-impl/tests", "idea/idea-frontend-fir/idea-fir-low-level-api/testdata") {
|
||||
testClass<AbstractProjectWideOutOfBlockKotlinModificationTrackerTest> {
|
||||
model("outOfBlockProjectWide")
|
||||
}
|
||||
testClass<AbstractFileStructureAndOutOfBlockModificationTrackerConsistencyTest> {
|
||||
model("outOfBlockProjectWide")
|
||||
}
|
||||
testClass<AbstractFileStructureTest> {
|
||||
model("fileStructure")
|
||||
}
|
||||
testClass<AbstractFirContextCollectionTest> {
|
||||
model("fileStructure")
|
||||
}
|
||||
testClass<AbstractDiagnosticTraversalCounterTest> {
|
||||
model("diagnosticTraversalCounter")
|
||||
}
|
||||
//
|
||||
// testClass<AbstractFileStructureAndOutOfBlockModificationTrackerConsistencyTest> {
|
||||
// model("outOfBlockProjectWide")
|
||||
// }
|
||||
|
||||
testClass<AbstractSessionsInvalidationTest> {
|
||||
model("sessionInvalidation", recursive = false, extension = null)
|
||||
}
|
||||
testClass<AbstractInnerDeclarationsResolvePhaseTest> {
|
||||
model("innerDeclarationsResolve")
|
||||
}
|
||||
testClass<AbstractPartialRawFirBuilderTestCase> {
|
||||
model("partialRawBuilder", testMethod = "doRawFirTest")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup(
|
||||
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
|
||||
"compiler/fir/analysis-tests/testData",
|
||||
) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerFirTestdataTestGenerated") {
|
||||
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
|
||||
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME, )
|
||||
}
|
||||
}
|
||||
|
||||
testGroup(
|
||||
"idea/idea-frontend-fir/idea-fir-low-level-api/tests",
|
||||
"compiler/testData",
|
||||
) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataTest>(suiteTestClassName = "DiagnosisCompilerTestFE10TestdataTestGenerated") {
|
||||
model(
|
||||
"diagnostics/tests",
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
)
|
||||
model(
|
||||
"diagnostics/testsWithStdLib",
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
excludeDirs = listOf("native")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
testGroup("idea/idea-frontend-fir/idea-fir-low-level-api/tests", testDataRoot = GeneralConfiguration.SPEC_TESTDATA_PATH
|
||||
) {
|
||||
testClass<AbstractDiagnosisCompilerTestDataSpecTest>(suiteTestClassName = "FirIdeSpecTest") {
|
||||
model(
|
||||
"diagnostics",
|
||||
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
|
||||
excludedPattern = excludedFirTestdataPattern,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
testGroup("idea/idea-fir/tests", "idea") {
|
||||
testClass<AbstractFirHighlightingTest> {
|
||||
model("testData/highlighter")
|
||||
|
||||
+5
-1
@@ -41,7 +41,11 @@ open class SimpleTestMethodModel(
|
||||
val found = matcher.find()
|
||||
assert(found) { file.name + " isn't matched by regex " + filenamePattern.pattern() }
|
||||
assert(matcher.groupCount() >= 1) { filenamePattern.pattern() }
|
||||
val extractedName = matcher.group(1) ?: error("extractedName should not be null: " + filenamePattern.pattern())
|
||||
val extractedName = try {
|
||||
matcher.group(1) ?: error("extractedName should not be null: " + filenamePattern.pattern())
|
||||
} catch (e: Throwable) {
|
||||
throw IllegalStateException("Error generating test ${file.name}", e)
|
||||
}
|
||||
val unescapedName = if (rootDir == file.parentFile) {
|
||||
extractedName
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user