[LL] Add LLFirSession invalidation tests
- This commit moves all session invalidation tests from the IDE which are non-cyclic to the Analysis API. Cyclic session invalidation tests cannot be moved because the Kotlin test infrastructure doesn't support cyclic module dependencies. - In fact, these new tests cover more cases, because the IDE tests only covered global module state and module out-of-block modification events. Crucially, global source modification events are now supported, which require libraries to be left alone. - Module out-of-block modification for libraries is technically undefined, but the test still checks this behavior. The current session invalidation implementation behaves the same for any kind of module-level modification event, so it is possible to publish a module OOBM event for libraries. If this changes in the future, we can disable those tests. But for now, it's good that these tests run, because they will alert us to (accidental) changes to this behavior. ^KT-56288 fixed ^KT-65265 fixed
This commit is contained in:
committed by
Space Team
parent
56a08319ec
commit
beb40484dd
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: E
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: F(L1, B)
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
E
|
||||
F
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
E
|
||||
F
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
F
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
F
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
F
|
||||
L1
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
F
|
||||
L1
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
L1
|
||||
L2
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
F
|
||||
G
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
L2
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
L2
|
||||
+1
@@ -0,0 +1 @@
|
||||
Module names of invalidated sessions:
|
||||
+1
@@ -0,0 +1 @@
|
||||
Module names of invalidated sessions:
|
||||
+1
@@ -0,0 +1 @@
|
||||
Module names of invalidated sessions:
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: G
|
||||
|
||||
// MODULE: F(L1)
|
||||
|
||||
// MODULE: E
|
||||
|
||||
// MODULE: D
|
||||
|
||||
// MODULE: C(F, G, L2)
|
||||
|
||||
// MODULE: B(D, E)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+1
@@ -0,0 +1 @@
|
||||
Module names of invalidated sessions:
|
||||
+1
@@ -0,0 +1 @@
|
||||
Module names of invalidated sessions:
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
L1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
@@ -0,0 +1,14 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: E(L1)
|
||||
|
||||
// MODULE: D(E)
|
||||
|
||||
// MODULE: C(D)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: B(C)
|
||||
|
||||
// MODULE: A(B)
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
L1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: E(L1)
|
||||
|
||||
// MODULE: D(E)
|
||||
|
||||
// MODULE: C(D)
|
||||
|
||||
// MODULE: B(C)
|
||||
|
||||
// MODULE: A(B)
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
L1
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
E
|
||||
L1
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
L2
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: D(L1)
|
||||
|
||||
// MODULE: C(D, L2)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: B(D)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
L2
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: D(L1)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: C(D, L2)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: B(D)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
L2
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: D(L1)
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
|
||||
// MODULE: C(D, L2)
|
||||
|
||||
// MODULE: B(D)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
L2
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: D(L1)
|
||||
|
||||
// MODULE: C(D, L2)
|
||||
|
||||
// MODULE: B(D)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
L1
|
||||
L2
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
B
|
||||
C
|
||||
D
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// MODULE: L1
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// FILE: l1.kt
|
||||
|
||||
// MODULE: L2
|
||||
// MODULE_KIND: LibraryBinary
|
||||
// WILDCARD_MODIFICATION_EVENT
|
||||
// FILE: l2.kt
|
||||
|
||||
// MODULE: D(L1)
|
||||
|
||||
// MODULE: C(D, L2)
|
||||
|
||||
// MODULE: B(D)
|
||||
|
||||
// MODULE: A(B, C)
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
L2
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
Module names of invalidated sessions:
|
||||
A
|
||||
C
|
||||
L2
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions
|
||||
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.configurators.AnalysisApiFirSourceTestConfigurator
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
|
||||
import org.jetbrains.kotlin.analysis.test.framework.directives.ModificationEventKind
|
||||
import org.jetbrains.kotlin.analysis.test.framework.directives.publishWildcardModificationEventsByDirective
|
||||
import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModuleProvider
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.test.services.TestModuleStructure
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.assertions
|
||||
|
||||
/**
|
||||
* Checks that sessions are invalidated after publishing modification events. The type of published modification event depends on the value
|
||||
* of [modificationEventKind]. This allows [AbstractSessionInvalidationTest] to check all modification event kinds with the same original
|
||||
* test data.
|
||||
*
|
||||
* See also `AbstractSessionInvalidationTest` on the IDE side, which is still required to check session invalidation in module structures
|
||||
* with cyclic dependencies.
|
||||
*/
|
||||
abstract class AbstractSessionInvalidationTest : AbstractAnalysisApiBasedTest() {
|
||||
protected abstract val modificationEventKind: ModificationEventKind
|
||||
|
||||
override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) {
|
||||
val allKtModules = testServices.ktModuleProvider.getModuleStructure().allKtModules()
|
||||
|
||||
val sessionsBeforeModification = getSessionsFor(allKtModules)
|
||||
moduleStructure.publishWildcardModificationEventsByDirective(modificationEventKind, testServices)
|
||||
val sessionsAfterModification = getSessionsFor(allKtModules)
|
||||
|
||||
val invalidatedSessions = buildSet {
|
||||
addAll(sessionsBeforeModification)
|
||||
removeAll(sessionsAfterModification)
|
||||
}
|
||||
|
||||
checkInvalidatedModules(moduleStructure, invalidatedSessions, testServices)
|
||||
checkSessionsMarkedInvalid(invalidatedSessions, testServices)
|
||||
}
|
||||
|
||||
private fun getSessionsFor(modules: List<KtModule>): List<LLFirSession> {
|
||||
val project = modules.first().project
|
||||
val sessionCache = LLFirSessionCache.getInstance(project)
|
||||
return modules.map { sessionCache.getSession(it) }
|
||||
}
|
||||
|
||||
private fun checkInvalidatedModules(
|
||||
testModuleStructure: TestModuleStructure,
|
||||
invalidatedSessions: Set<LLFirSession>,
|
||||
testServices: TestServices,
|
||||
) {
|
||||
val testModuleNames = testModuleStructure.modules.map { it.name }
|
||||
|
||||
val invalidatedModuleDescriptions = invalidatedSessions
|
||||
.map { it.ktModule.toString() }
|
||||
.filter {
|
||||
// We only want to include test modules in the output. Otherwise, it might include libraries from the test infrastructure.
|
||||
it in testModuleNames
|
||||
}
|
||||
.distinct()
|
||||
.sorted()
|
||||
|
||||
val actualText = buildString {
|
||||
appendLine("Module names of invalidated sessions:")
|
||||
invalidatedModuleDescriptions.forEach { appendLine(it) }
|
||||
}
|
||||
|
||||
testServices.assertions.assertEqualsToTestDataFileSibling(actualText, extension = ".${modificationEventKind.name.lowercase()}.txt")
|
||||
}
|
||||
|
||||
private fun checkSessionsMarkedInvalid(
|
||||
invalidatedSessions: Set<LLFirSession>,
|
||||
testServices: TestServices,
|
||||
) {
|
||||
invalidatedSessions.forEach { session ->
|
||||
testServices.assertions.assertFalse(session.isValid) {
|
||||
"The invalidated session `${session}` should have been marked invalid."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override val configurator: AnalysisApiTestConfigurator = AnalysisApiFirSourceTestConfigurator(analyseInDependentSession = false)
|
||||
}
|
||||
|
||||
abstract class AbstractModuleStateModificationSessionInvalidationTest : AbstractSessionInvalidationTest() {
|
||||
override val modificationEventKind: ModificationEventKind
|
||||
get() = ModificationEventKind.MODULE_STATE_MODIFICATION
|
||||
}
|
||||
|
||||
abstract class AbstractModuleOutOfBlockModificationSessionInvalidationTest : AbstractSessionInvalidationTest() {
|
||||
override val modificationEventKind: ModificationEventKind
|
||||
get() = ModificationEventKind.MODULE_OUT_OF_BLOCK_MODIFICATION
|
||||
}
|
||||
|
||||
abstract class AbstractGlobalModuleStateModificationSessionInvalidationTest : AbstractSessionInvalidationTest() {
|
||||
override val modificationEventKind: ModificationEventKind
|
||||
get() = ModificationEventKind.GLOBAL_MODULE_STATE_MODIFICATION
|
||||
}
|
||||
|
||||
abstract class AbstractGlobalSourceModuleStateModificationSessionInvalidationTest : AbstractSessionInvalidationTest() {
|
||||
override val modificationEventKind: ModificationEventKind
|
||||
get() = ModificationEventKind.GLOBAL_SOURCE_MODULE_STATE_MODIFICATION
|
||||
}
|
||||
|
||||
abstract class AbstractGlobalSourceOutOfBlockModificationSessionInvalidationTest : AbstractSessionInvalidationTest() {
|
||||
override val modificationEventKind: ModificationEventKind
|
||||
get() = ModificationEventKind.GLOBAL_SOURCE_OUT_OF_BLOCK_MODIFICATION
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/low-level-api-fir/testData/sessionInvalidation")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class GlobalModuleStateModificationSessionInvalidationTestGenerated extends AbstractGlobalModuleStateModificationSessionInvalidationTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInSessionInvalidation() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/sessionInvalidation"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeAdditionalEdge.kt")
|
||||
public void testBinaryTreeAdditionalEdge() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeAdditionalEdge.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateA.kt")
|
||||
public void testBinaryTreeInvalidateA() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateA.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateCD.kt")
|
||||
public void testBinaryTreeInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateF.kt")
|
||||
public void testBinaryTreeInvalidateF() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateF.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL1.kt")
|
||||
public void testBinaryTreeInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL2.kt")
|
||||
public void testBinaryTreeInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateNone.kt")
|
||||
public void testBinaryTreeInvalidateNone() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateNone.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateC.kt")
|
||||
public void testLinearInvalidateC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateL1.kt")
|
||||
public void testLinearInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateBC.kt")
|
||||
public void testRhombusInvalidateBC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateBC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateCD.kt")
|
||||
public void testRhombusInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateD.kt")
|
||||
public void testRhombusInvalidateD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL1.kt")
|
||||
public void testRhombusInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL2.kt")
|
||||
public void testRhombusInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL2.kt");
|
||||
}
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/low-level-api-fir/testData/sessionInvalidation")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class GlobalSourceModuleStateModificationSessionInvalidationTestGenerated extends AbstractGlobalSourceModuleStateModificationSessionInvalidationTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInSessionInvalidation() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/sessionInvalidation"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeAdditionalEdge.kt")
|
||||
public void testBinaryTreeAdditionalEdge() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeAdditionalEdge.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateA.kt")
|
||||
public void testBinaryTreeInvalidateA() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateA.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateCD.kt")
|
||||
public void testBinaryTreeInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateF.kt")
|
||||
public void testBinaryTreeInvalidateF() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateF.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL1.kt")
|
||||
public void testBinaryTreeInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL2.kt")
|
||||
public void testBinaryTreeInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateNone.kt")
|
||||
public void testBinaryTreeInvalidateNone() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateNone.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateC.kt")
|
||||
public void testLinearInvalidateC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateL1.kt")
|
||||
public void testLinearInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateBC.kt")
|
||||
public void testRhombusInvalidateBC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateBC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateCD.kt")
|
||||
public void testRhombusInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateD.kt")
|
||||
public void testRhombusInvalidateD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL1.kt")
|
||||
public void testRhombusInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL2.kt")
|
||||
public void testRhombusInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL2.kt");
|
||||
}
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/low-level-api-fir/testData/sessionInvalidation")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class GlobalSourceOutOfBlockModificationSessionInvalidationTestGenerated extends AbstractGlobalSourceOutOfBlockModificationSessionInvalidationTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInSessionInvalidation() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/sessionInvalidation"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeAdditionalEdge.kt")
|
||||
public void testBinaryTreeAdditionalEdge() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeAdditionalEdge.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateA.kt")
|
||||
public void testBinaryTreeInvalidateA() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateA.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateCD.kt")
|
||||
public void testBinaryTreeInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateF.kt")
|
||||
public void testBinaryTreeInvalidateF() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateF.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL1.kt")
|
||||
public void testBinaryTreeInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL2.kt")
|
||||
public void testBinaryTreeInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateNone.kt")
|
||||
public void testBinaryTreeInvalidateNone() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateNone.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateC.kt")
|
||||
public void testLinearInvalidateC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateL1.kt")
|
||||
public void testLinearInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateBC.kt")
|
||||
public void testRhombusInvalidateBC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateBC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateCD.kt")
|
||||
public void testRhombusInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateD.kt")
|
||||
public void testRhombusInvalidateD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL1.kt")
|
||||
public void testRhombusInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL2.kt")
|
||||
public void testRhombusInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL2.kt");
|
||||
}
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/low-level-api-fir/testData/sessionInvalidation")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ModuleOutOfBlockModificationSessionInvalidationTestGenerated extends AbstractModuleOutOfBlockModificationSessionInvalidationTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInSessionInvalidation() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/sessionInvalidation"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeAdditionalEdge.kt")
|
||||
public void testBinaryTreeAdditionalEdge() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeAdditionalEdge.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateA.kt")
|
||||
public void testBinaryTreeInvalidateA() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateA.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateCD.kt")
|
||||
public void testBinaryTreeInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateF.kt")
|
||||
public void testBinaryTreeInvalidateF() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateF.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL1.kt")
|
||||
public void testBinaryTreeInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL2.kt")
|
||||
public void testBinaryTreeInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateNone.kt")
|
||||
public void testBinaryTreeInvalidateNone() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateNone.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateC.kt")
|
||||
public void testLinearInvalidateC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateL1.kt")
|
||||
public void testLinearInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateBC.kt")
|
||||
public void testRhombusInvalidateBC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateBC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateCD.kt")
|
||||
public void testRhombusInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateD.kt")
|
||||
public void testRhombusInvalidateD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL1.kt")
|
||||
public void testRhombusInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL2.kt")
|
||||
public void testRhombusInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL2.kt");
|
||||
}
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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.analysis.low.level.api.fir.sessions;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||
import org.jetbrains.kotlin.test.TestMetadata;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.analysis.api.GenerateAnalysisApiTestsKt}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("analysis/low-level-api-fir/testData/sessionInvalidation")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class ModuleStateModificationSessionInvalidationTestGenerated extends AbstractModuleStateModificationSessionInvalidationTest {
|
||||
@Test
|
||||
public void testAllFilesPresentInSessionInvalidation() {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/sessionInvalidation"), Pattern.compile("^(.+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeAdditionalEdge.kt")
|
||||
public void testBinaryTreeAdditionalEdge() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeAdditionalEdge.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateA.kt")
|
||||
public void testBinaryTreeInvalidateA() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateA.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateCD.kt")
|
||||
public void testBinaryTreeInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateF.kt")
|
||||
public void testBinaryTreeInvalidateF() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateF.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL1.kt")
|
||||
public void testBinaryTreeInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateL2.kt")
|
||||
public void testBinaryTreeInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateL2.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("binaryTreeInvalidateNone.kt")
|
||||
public void testBinaryTreeInvalidateNone() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/binaryTreeInvalidateNone.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateC.kt")
|
||||
public void testLinearInvalidateC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("linearInvalidateL1.kt")
|
||||
public void testLinearInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/linearInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateBC.kt")
|
||||
public void testRhombusInvalidateBC() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateBC.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateCD.kt")
|
||||
public void testRhombusInvalidateCD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateCD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateD.kt")
|
||||
public void testRhombusInvalidateD() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateD.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL1.kt")
|
||||
public void testRhombusInvalidateL1() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL1.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("rhombusInvalidateL2.kt")
|
||||
public void testRhombusInvalidateL2() {
|
||||
runTest("analysis/low-level-api-fir/testData/sessionInvalidation/rhombusInvalidateL2.kt");
|
||||
}
|
||||
}
|
||||
+25
@@ -26,6 +26,11 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.AbstractScriptWho
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.AbstractSourceLazyDeclarationResolveScopeBasedTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.AbstractSourceWholeFileResolvePhaseTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.resolve.extensions.AbstractResolveExtensionDisposalAfterModificationEventTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.AbstractGlobalModuleStateModificationSessionInvalidationTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.AbstractGlobalSourceModuleStateModificationSessionInvalidationTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.AbstractGlobalSourceOutOfBlockModificationSessionInvalidationTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.AbstractModuleOutOfBlockModificationSessionInvalidationTest
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.AbstractModuleStateModificationSessionInvalidationTest
|
||||
import org.jetbrains.kotlin.generators.TestGroup
|
||||
import org.jetbrains.kotlin.generators.TestGroupSuite
|
||||
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
|
||||
@@ -286,6 +291,26 @@ internal fun TestGroupSuite.generateFirLowLevelApiTests() {
|
||||
testClass<AbstractResolveExtensionDisposalAfterModificationEventTest> {
|
||||
model("resolveExtensionDisposal")
|
||||
}
|
||||
|
||||
testClass<AbstractModuleStateModificationSessionInvalidationTest> {
|
||||
model("sessionInvalidation")
|
||||
}
|
||||
|
||||
testClass<AbstractModuleOutOfBlockModificationSessionInvalidationTest> {
|
||||
model("sessionInvalidation")
|
||||
}
|
||||
|
||||
testClass<AbstractGlobalModuleStateModificationSessionInvalidationTest> {
|
||||
model("sessionInvalidation")
|
||||
}
|
||||
|
||||
testClass<AbstractGlobalSourceModuleStateModificationSessionInvalidationTest> {
|
||||
model("sessionInvalidation")
|
||||
}
|
||||
|
||||
testClass<AbstractGlobalSourceOutOfBlockModificationSessionInvalidationTest> {
|
||||
model("sessionInvalidation")
|
||||
}
|
||||
}
|
||||
|
||||
testGroup("analysis/low-level-api-fir/tests", "analysis/analysis-api/testData") {
|
||||
|
||||
Reference in New Issue
Block a user