[AA] add generated tests for scripts

^KT-61431
This commit is contained in:
Dmitrii Gridin
2023-08-24 14:30:06 +02:00
committed by Space Team
parent 932c2a6e15
commit 5557ea690d
7 changed files with 109 additions and 86 deletions
@@ -1,11 +1,9 @@
// FILE: main.kts
import a.b.c.dependency.Foo
fun foo<caret>(): a.b.c.dependency.Foo = t
// FILE: dependency.kt
package a.b.c.dependency package a.b.c.dependency
import a.b.c.dependency.Foo.Nested
class Foo { class Foo {
class Nested class Nested
} }
fun foo<caret>(): a.b.c.dependency.Foo.Nested = t
@@ -1,7 +1,7 @@
with DO_NOT_SHORTEN: with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED: with SHORTEN_IF_ALREADY_IMPORTED:
[type] a.b.c.dependency.Foo [type] a.b.c.dependency.Foo.Nested
with SHORTEN_AND_IMPORT: with SHORTEN_AND_IMPORT:
[type] a.b.c.dependency.Foo [type] a.b.c.dependency.Foo.Nested
with SHORTEN_AND_STAR_IMPORT: with SHORTEN_AND_STAR_IMPORT:
[type] a.b.c.dependency.Foo [type] a.b.c.dependency.Foo.Nested
@@ -1,9 +1,7 @@
// FILE: main.kts
fun foo<caret>(): a.b.c.dependency.Foo = t
// FILE: dependency.kt
package a.b.c.dependency package a.b.c.dependency
class Foo { class Foo {
class Nested class Nested
} }
fun foo<caret>(): a.b.c.dependency.Foo.Nested = t
@@ -1,4 +1,7 @@
with DO_NOT_SHORTEN: with DO_NOT_SHORTEN:
with SHORTEN_IF_ALREADY_IMPORTED: with SHORTEN_IF_ALREADY_IMPORTED:
[type] a.b.c.dependency.Foo
with SHORTEN_AND_IMPORT: with SHORTEN_AND_IMPORT:
[type] a.b.c.dependency.Foo.Nested
with SHORTEN_AND_STAR_IMPORT: with SHORTEN_AND_STAR_IMPORT:
[type] a.b.c.dependency.Foo.Nested
@@ -28,6 +28,11 @@ data class AnalysisApiTestConfiguratorFactoryData(
val analysisApiMode: AnalysisApiMode, val analysisApiMode: AnalysisApiMode,
) )
fun AnalysisApiTestConfiguratorFactoryData.defaultExtension(): String = when (this.moduleKind) {
TestModuleKind.ScriptSource -> "kts"
else -> "kt"
}
enum class AnalysisSessionMode(val suffix: String) { enum class AnalysisSessionMode(val suffix: String) {
Normal("Normal"), Normal("Normal"),
@@ -82,7 +82,7 @@ internal fun AnalysisApiTestGroup.generateAnalysisApiTests() {
} }
} }
group(filter = testModuleKindIs(TestModuleKind.Source)) { group(filter = testModuleKindIs(TestModuleKind.Source, TestModuleKind.ScriptSource)) {
generateAnalysisApiComponentsTests() generateAnalysisApiComponentsTests()
generateAnalysisApiNonComponentsTests() generateAnalysisApiNonComponentsTests()
generateResolveExtensionsTests() generateResolveExtensionsTests()
@@ -97,7 +97,7 @@ private fun AnalysisApiTestGroup.generateResolveExtensionsTests() {
testModuleKindIs(TestModuleKind.Source) testModuleKindIs(TestModuleKind.Source)
) { ) {
test(AbstractReferenceResolveWithResolveExtensionTest::class) { test(AbstractReferenceResolveWithResolveExtensionTest::class) {
model("referenceResolve") model(it, "referenceResolve")
} }
} }
} }
@@ -105,23 +105,23 @@ private fun AnalysisApiTestGroup.generateResolveExtensionsTests() {
private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() { private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() {
group("symbols", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) { group("symbols", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) {
test(AbstractSymbolByPsiTest::class) { test(AbstractSymbolByPsiTest::class) {
model("symbolByPsi") model(it, "symbolByPsi")
} }
test(AbstractSymbolByJavaPsiTest::class, filter = frontendIs(FrontendKind.Fir)) { test(AbstractSymbolByJavaPsiTest::class, filter = frontendIs(FrontendKind.Fir)) {
model("symbolByJavaPsi") model(it, "symbolByJavaPsi")
} }
test(AbstractSingleSymbolByPsiTest::class) { test(AbstractSingleSymbolByPsiTest::class) {
model("singleSymbolByPsi") model(it, "singleSymbolByPsi")
} }
test(AbstractSymbolRestoreFromDifferentModuleTest::class) { test(AbstractSymbolRestoreFromDifferentModuleTest::class) {
model("symbolRestoreFromDifferentModule") model(it, "symbolRestoreFromDifferentModule")
} }
test(AbstractMultiModuleSymbolByPsiTest::class) { test(AbstractMultiModuleSymbolByPsiTest::class) {
model("multiModuleSymbolByPsi") model(it, "multiModuleSymbolByPsi")
} }
test( test(
@@ -129,63 +129,63 @@ private fun AnalysisApiTestGroup.generateAnalysisApiNonComponentsTests() {
) { ) {
when (it.analysisApiMode) { when (it.analysisApiMode) {
AnalysisApiMode.Ide -> AnalysisApiMode.Ide ->
model("symbolByFqName") model(it, "symbolByFqName")
AnalysisApiMode.Standalone -> AnalysisApiMode.Standalone ->
model("symbolByFqName", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled")) model(it, "symbolByFqName", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled"))
} }
} }
test(AbstractSymbolByReferenceTest::class) { test(AbstractSymbolByReferenceTest::class) {
when (it.analysisApiMode) { when (it.analysisApiMode) {
AnalysisApiMode.Ide -> AnalysisApiMode.Ide ->
model("symbolByReference") model(it, "symbolByReference")
AnalysisApiMode.Standalone -> AnalysisApiMode.Standalone ->
model("symbolByReference", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled")) model(it, "symbolByReference", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled"))
} }
} }
} }
group("types", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) { group("types", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) {
test(AbstractTypeByDeclarationReturnTypeTest::class) { test(AbstractTypeByDeclarationReturnTypeTest::class) {
model("byDeclarationReturnType") model(it, "byDeclarationReturnType")
} }
} }
group("annotations") { group("annotations") {
test(AbstractAnalysisApiAnnotationsOnTypesTest::class) { test(AbstractAnalysisApiAnnotationsOnTypesTest::class) {
model("annotationsOnTypes") model(it, "annotationsOnTypes")
} }
test(AbstractAnalysisApiAnnotationsOnDeclarationsTest::class) { test(AbstractAnalysisApiAnnotationsOnDeclarationsTest::class) {
model("annotationsOnDeclaration") model(it, "annotationsOnDeclaration")
} }
test(AbstractAnalysisApiSpecificAnnotationOnDeclarationTest::class) { test(AbstractAnalysisApiSpecificAnnotationOnDeclarationTest::class) {
model("specificAnnotations") model(it, "specificAnnotations")
} }
test( test(
AbstractAnalysisApiAnnotationsOnFilesTest::class, AbstractAnalysisApiAnnotationsOnFilesTest::class,
filter = analysisSessionModeIs(AnalysisSessionMode.Normal), filter = analysisSessionModeIs(AnalysisSessionMode.Normal),
) { ) {
model("annotationsOnFiles") model(it, "annotationsOnFiles")
} }
test(AbstractAnalysisApiAnnotationsOnDeclarationsWithMetaTest::class) { test(AbstractAnalysisApiAnnotationsOnDeclarationsWithMetaTest::class) {
model("metaAnnotations") model(it, "metaAnnotations")
} }
} }
group("substitutors", filter = frontendIs(FrontendKind.Fir)) { group("substitutors", filter = frontendIs(FrontendKind.Fir)) {
test(AbstractAnalysisApiSubstitutorsTest::class) { test(AbstractAnalysisApiSubstitutorsTest::class) {
model("typeSubstitution") model(it, "typeSubstitution")
} }
} }
group("standalone", filter = analysisApiModeIs(AnalysisApiMode.Standalone)) { group("standalone", filter = analysisApiModeIs(AnalysisApiMode.Standalone)) {
test(AbstractPsiDeclarationProviderTest::class) { test(AbstractPsiDeclarationProviderTest::class) {
model("singleModule") model(it, "singleModule")
} }
} }
} }
@@ -196,16 +196,16 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
test(AbstractResolveCallTest::class) { test(AbstractResolveCallTest::class) {
when (it.analysisApiMode) { when (it.analysisApiMode) {
AnalysisApiMode.Ide -> AnalysisApiMode.Ide ->
model("resolveCall") model(it, "resolveCall")
AnalysisApiMode.Standalone -> AnalysisApiMode.Standalone ->
model("resolveCall", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled")) model(it, "resolveCall", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled"))
} }
} }
test( test(
AbstractResolveCandidatesTest::class AbstractResolveCandidatesTest::class
) { ) {
model("resolveCandidates") model(it, "resolveCandidates")
} }
} }
@@ -213,16 +213,17 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
test(AbstractMultiModuleResolveCallTest::class, filter = frontendIs(FrontendKind.Fir)) { test(AbstractMultiModuleResolveCallTest::class, filter = frontendIs(FrontendKind.Fir)) {
when (it.analysisApiMode) { when (it.analysisApiMode) {
AnalysisApiMode.Ide -> AnalysisApiMode.Ide ->
model("resolveCall") model(it, "resolveCall")
AnalysisApiMode.Standalone -> AnalysisApiMode.Standalone ->
model("resolveCall") model(it, "resolveCall")
} }
} }
} }
component( component(
"compilerFacility", "compilerFacility",
filter = frontendIs(FrontendKind.Fir) filter = testModuleKindIs(TestModuleKind.Source)
and frontendIs(FrontendKind.Fir)
and analysisSessionModeIs(AnalysisSessionMode.Normal) and analysisSessionModeIs(AnalysisSessionMode.Normal)
and analysisApiModeIs(AnalysisApiMode.Ide) and analysisApiModeIs(AnalysisApiMode.Ide)
) { ) {
@@ -233,57 +234,61 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
component("compileTimeConstantProvider") { component("compileTimeConstantProvider") {
test(AbstractCompileTimeConstantEvaluatorTest::class) { test(AbstractCompileTimeConstantEvaluatorTest::class) {
model("evaluate") model(it, "evaluate")
} }
} }
component("expressionInfoProvider") { component("expressionInfoProvider") {
test(AbstractWhenMissingCasesTest::class) { test(AbstractWhenMissingCasesTest::class) {
model("whenMissingCases") model(it, "whenMissingCases")
} }
test(AbstractReturnTargetSymbolTest::class) { test(AbstractReturnTargetSymbolTest::class) {
model("returnExpressionTargetSymbol") model(it, "returnExpressionTargetSymbol")
} }
test(AbstractIsUsedAsExpressionTest::class) { test(AbstractIsUsedAsExpressionTest::class) {
model("isUsedAsExpression") model(it, "isUsedAsExpression")
} }
} }
component("referenceShortener", filter = frontendIs(FrontendKind.Fir) and analysisSessionModeIs(AnalysisSessionMode.Normal)) { component("referenceShortener", filter = frontendIs(FrontendKind.Fir) and analysisSessionModeIs(AnalysisSessionMode.Normal)) {
test(AbstractReferenceShortenerTest::class) { test(AbstractReferenceShortenerTest::class) {
model("referenceShortener", pattern = TestGeneratorUtil.KT_OR_KTS) model(it, "referenceShortener")
} }
test(AbstractReferenceShortenerForWholeFileTest::class) { test(AbstractReferenceShortenerForWholeFileTest::class) {
model("referenceShortenerWholeFile", pattern = TestGeneratorUtil.KT_OR_KTS) model(it, "referenceShortenerWholeFile")
} }
} }
component("expressionTypeProvider") { component("expressionTypeProvider") {
test(AbstractExpectedExpressionTypeTest::class) { test(AbstractExpectedExpressionTypeTest::class) {
model("expectedExpressionType") model(it, "expectedExpressionType")
} }
test( test(
AbstractHLExpressionTypeTest::class AbstractHLExpressionTypeTest::class
) { ) {
model("expressionType") model(it, "expressionType")
} }
test( test(
AbstractDeclarationReturnTypeTest::class AbstractDeclarationReturnTypeTest::class
) { ) {
model("declarationReturnType") model(it, "declarationReturnType")
} }
} }
component("diagnosticsProvider", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) { component("diagnosticsProvider", filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) {
test(AbstractCollectDiagnosticsTest::class) { test(AbstractCollectDiagnosticsTest::class) {
model("diagnostics") model(it, "diagnostics")
} }
test(AbstractCodeFragmentCollectDiagnosticsTest::class, filter = frontendIs(FrontendKind.Fir)) { test(
AbstractCodeFragmentCollectDiagnosticsTest::class,
filter = testModuleKindIs(TestModuleKind.Source) and frontendIs(FrontendKind.Fir),
) {
model("codeFragmentDiagnostics", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model("codeFragmentDiagnostics", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
} }
} }
@@ -291,15 +296,15 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
// for K1, symbols do not have a proper equality implementation, so the tests are failing // for K1, symbols do not have a proper equality implementation, so the tests are failing
component("containingDeclarationProvider", filter = frontendIs(FrontendKind.Fir)) { component("containingDeclarationProvider", filter = frontendIs(FrontendKind.Fir)) {
test(AbstractContainingDeclarationProviderByPsiTest::class) { test(AbstractContainingDeclarationProviderByPsiTest::class) {
model("containingDeclarationByPsi") model(it, "containingDeclarationByPsi")
} }
test(AbstractContainingDeclarationProviderByMemberScopeTest::class) { test(AbstractContainingDeclarationProviderByMemberScopeTest::class) {
model("containingDeclarationFromMemberScope") model(it, "containingDeclarationFromMemberScope")
} }
test(AbstractContainingDeclarationProviderByDelegatedMemberScopeTest::class) { test(AbstractContainingDeclarationProviderByDelegatedMemberScopeTest::class) {
model("containingDeclarationByDelegatedMemberScope") model(it, "containingDeclarationByDelegatedMemberScope")
} }
} }
@@ -308,109 +313,109 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
AbstractAnalysisApiImportOptimizerTest::class, AbstractAnalysisApiImportOptimizerTest::class,
filter = analysisSessionModeIs(AnalysisSessionMode.Normal), filter = analysisSessionModeIs(AnalysisSessionMode.Normal),
) { ) {
model("analyseImports", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model(it, "analyseImports")
} }
} }
component("multiplatformInfoProvider") { component("multiplatformInfoProvider") {
test(AbstractExpectForActualTest::class) { test(AbstractExpectForActualTest::class) {
model("expectForActual") model(it, "expectForActual")
} }
} }
component("psiTypeProvider") { component("psiTypeProvider") {
test(AbstractAnalysisApiPsiTypeProviderTest::class) { test(AbstractAnalysisApiPsiTypeProviderTest::class) {
model("psiType/forDeclaration") model(it, "psiType/forDeclaration")
} }
test(AbstractAnalysisApiExpressionPsiTypeProviderTest::class, filter = frontendIs(FrontendKind.Fir)) { test(AbstractAnalysisApiExpressionPsiTypeProviderTest::class, filter = frontendIs(FrontendKind.Fir)) {
model("psiType/forExpression") model(it, "psiType/forExpression")
} }
} }
component("resolveExtensionInfoProvider", filter = frontendIs(FrontendKind.Fir)) { component("resolveExtensionInfoProvider", filter = frontendIs(FrontendKind.Fir)) {
test(AbstractResolveExtensionInfoProviderTest::class) { test(AbstractResolveExtensionInfoProviderTest::class) {
model("extensionScopeWithPsi") model(it, "extensionScopeWithPsi")
} }
} }
component("smartCastProvider") { component("smartCastProvider") {
test(AbstractHLSmartCastInfoTest::class) { test(AbstractHLSmartCastInfoTest::class) {
model("smartCastInfo") model(it, "smartCastInfo")
} }
} }
component("symbolDeclarationOverridesProvider") { component("symbolDeclarationOverridesProvider") {
test(AbstractOverriddenDeclarationProviderTest::class) { test(AbstractOverriddenDeclarationProviderTest::class) {
model("overriddenSymbols") model(it, "overriddenSymbols")
} }
test(AbstractIsSubclassOfTest::class) { test(AbstractIsSubclassOfTest::class) {
model("isSubclassOf") model(it, "isSubclassOf")
} }
} }
component("symbolDeclarationRenderer") { component("symbolDeclarationRenderer") {
test(AbstractRendererTest::class) { test(AbstractRendererTest::class) {
model("renderDeclaration") model(it, "renderDeclaration")
} }
} }
component("symbolInfoProvider") { component("symbolInfoProvider") {
test(AbstractAnnotationApplicableTargetsTest::class) { test(AbstractAnnotationApplicableTargetsTest::class) {
model("annotationApplicableTargets") model(it, "annotationApplicableTargets")
} }
} }
component("typeCreator") { component("typeCreator") {
test(AbstractTypeParameterTypeTest::class) { test(AbstractTypeParameterTypeTest::class) {
model("typeParameter") model(it, "typeParameter")
} }
test(AbstractBuildClassTypeTest::class, filter = analysisSessionModeIs(AnalysisSessionMode.Normal)/*no non-file context element*/) { test(AbstractBuildClassTypeTest::class, filter = analysisSessionModeIs(AnalysisSessionMode.Normal)/*no non-file context element*/) {
model("classType") model(it, "classType")
} }
} }
component("typeInfoProvider") { component("typeInfoProvider") {
test(AbstractFunctionClassKindTest::class) { test(AbstractFunctionClassKindTest::class) {
model("functionClassKind") model(it, "functionClassKind")
} }
test(AbstractAnalysisApiGetSuperTypesTest::class, filter = frontendIs(FrontendKind.Fir)) { test(AbstractAnalysisApiGetSuperTypesTest::class, filter = frontendIs(FrontendKind.Fir)) {
model("superTypes") model(it, "superTypes")
} }
test(AbstractIsDenotableTest::class) { test(AbstractIsDenotableTest::class) {
model("isDenotable", excludedPattern = ".*\\.descriptors\\.kt$") model(it, "isDenotable", excludedPattern = ".*\\.descriptors\\.kt$")
} }
} }
component("typeProvider") { component("typeProvider") {
group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) { group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal)) {
test(AbstractHasCommonSubtypeTest::class) { test(AbstractHasCommonSubtypeTest::class) {
model("haveCommonSubtype") model(it, "haveCommonSubtype")
} }
} }
test(AbstractTypeReferenceTest::class) { test(AbstractTypeReferenceTest::class) {
model("typeReference") model(it, "typeReference")
} }
} }
component("signatureSubstitution") { component("signatureSubstitution") {
group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal) and frontendIs(FrontendKind.Fir)) { group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal) and frontendIs(FrontendKind.Fir)) {
test(AbstractAnalysisApiSymbolAsSignatureTest::class) { test(AbstractAnalysisApiSymbolAsSignatureTest::class) {
model("symbolAsSignature") model(it, "symbolAsSignature")
} }
test(AbstractAnalysisApiSymbolSubstitutionTest::class) { test(AbstractAnalysisApiSymbolSubstitutionTest::class) {
model("symbolSubstitution") model(it, "symbolSubstitution")
} }
test(AbstractAnalysisApiSignatureSubstitutionTest::class) { test(AbstractAnalysisApiSignatureSubstitutionTest::class) {
model("signatureSubstitution") model(it, "signatureSubstitution")
} }
test(AbstractAnalysisApiSignatureContractsTest::class) { test(AbstractAnalysisApiSignatureContractsTest::class) {
model("signatureContracts") model(it, "signatureContracts")
} }
} }
} }
@@ -418,7 +423,7 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
component("substitutorFactory") { component("substitutorFactory") {
group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal) and frontendIs(FrontendKind.Fir)) { group(filter = analysisSessionModeIs(AnalysisSessionMode.Normal) and frontendIs(FrontendKind.Fir)) {
test(AbstractSubstitutorBuilderTest::class) { test(AbstractSubstitutorBuilderTest::class) {
model("substitutorBuilder") model(it, "substitutorBuilder")
} }
} }
} }
@@ -426,22 +431,22 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
component("referenceResolveProvider") { component("referenceResolveProvider") {
test(AbstractIsImplicitCompanionReferenceTest::class) { test(AbstractIsImplicitCompanionReferenceTest::class) {
model("isImplicitReferenceToCompanion") model(it, "isImplicitReferenceToCompanion")
} }
} }
component("scopeProvider") { component("scopeProvider") {
group(filter = frontendIs(FrontendKind.Fir)) { group(filter = frontendIs(FrontendKind.Fir)) {
test(AbstractTypeScopeTest::class) { test(AbstractTypeScopeTest::class) {
model("typeScope") model(it, "typeScope")
} }
test(AbstractScopeContextForPositionTest::class) { test(AbstractScopeContextForPositionTest::class) {
model("scopeContextForPosition") model(it, "scopeContextForPosition")
} }
test(AbstractFileImportingScopeContextTest::class) { test(AbstractFileImportingScopeContextTest::class) {
model("importingScopeContext") model(it, "importingScopeContext")
} }
} }
@@ -450,7 +455,7 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
AbstractSubstitutionOverridesUnwrappingTest::class, AbstractSubstitutionOverridesUnwrappingTest::class,
filter = frontendIs(FrontendKind.Fir), filter = frontendIs(FrontendKind.Fir),
) { ) {
model("substitutionOverridesUnwrapping") model(it, "substitutionOverridesUnwrapping")
} }
test( test(
@@ -459,25 +464,25 @@ private fun AnalysisApiTestGroup.generateAnalysisApiComponentsTests() {
) { ) {
when (it.analysisApiMode) { when (it.analysisApiMode) {
AnalysisApiMode.Ide -> AnalysisApiMode.Ide ->
model("memberScopeByFqName") model(it, "memberScopeByFqName")
AnalysisApiMode.Standalone -> AnalysisApiMode.Standalone ->
model("memberScopeByFqName", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled")) model(it, "memberScopeByFqName", excludeDirsRecursively = listOf("withTestCompilerPluginEnabled"))
} }
} }
test(AbstractFileScopeTest::class) { test(AbstractFileScopeTest::class) {
model("fileScopeTest", extension = "kt") model(it, "fileScopeTest")
} }
test(AbstractDelegateMemberScopeTest::class) { test(AbstractDelegateMemberScopeTest::class) {
model("delegatedMemberScope") model(it, "delegatedMemberScope")
} }
test( test(
AbstractDeclaredMemberScopeTest::class, AbstractDeclaredMemberScopeTest::class,
filter = frontendIs(FrontendKind.Fir), filter = frontendIs(FrontendKind.Fir),
) { ) {
model("declaredMemberScope") model(it, "declaredMemberScope")
} }
} }
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.generators.tests.analysis.api.dsl
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiMode
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfiguratorFactoryData
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.defaultExtension
import org.jetbrains.kotlin.generators.TestGroup import org.jetbrains.kotlin.generators.TestGroup
import org.jetbrains.kotlin.generators.TestGroupSuite import org.jetbrains.kotlin.generators.TestGroupSuite
import org.jetbrains.kotlin.generators.getDefaultSuiteTestClassName import org.jetbrains.kotlin.generators.getDefaultSuiteTestClassName
@@ -30,7 +31,6 @@ internal class AnalysisApiTestGroup(
generator.suite.init() generator.suite.init()
} }
fun test( fun test(
testClass: KClass<*>, testClass: KClass<*>,
filter: TestFilter = { true }, filter: TestFilter = { true },
@@ -53,6 +53,20 @@ internal class AnalysisApiTestGroup(
} }
} }
internal fun TestGroup.TestClass.model(
data: AnalysisApiTestConfiguratorFactoryData,
relativeRootPath: String,
excludeDirsRecursively: List<String> = listOf(),
excludedPattern: String? = null,
) {
model(
relativeRootPath = relativeRootPath,
extension = data.defaultExtension(),
excludeDirsRecursively = excludeDirsRecursively,
excludedPattern = excludedPattern,
)
}
private fun TestGroup.analysisApiTestClass( private fun TestGroup.analysisApiTestClass(
data: AnalysisApiTestConfiguratorFactoryData, data: AnalysisApiTestConfiguratorFactoryData,
testClass: KClass<*>, testClass: KClass<*>,