mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJ-CR-129986 [Gradle|TestFramework] new: added GradleTestApplication annotation for the Gradle Junit 5 tests
GitOrigin-RevId: 3f5f37177ea5990722961086c7154a0917a36a7e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
dd5043893a
commit
31884a4053
@@ -7,19 +7,19 @@ import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.testFramework.closeProjectAsync
|
||||
import com.intellij.testFramework.common.runAll
|
||||
import com.intellij.testFramework.fixtures.IdeaTestFixture
|
||||
import com.intellij.testFramework.junit5.TestApplication
|
||||
import com.intellij.testFramework.utils.vfs.createDirectory
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixture.GradleExecutionTestFixture
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixture.GradleExecutionTestFixtureImpl
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixture
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.application.GradleTestApplication
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.impl.GradleTestFixtureImpl
|
||||
import org.jetbrains.plugins.gradle.testFramework.util.createSettingsFile
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.TestInfo
|
||||
|
||||
@TestApplication
|
||||
@GradleTestApplication
|
||||
abstract class GradleReloadProjectBaseTestCase {
|
||||
|
||||
private lateinit var testInfo: TestInfo
|
||||
|
||||
+2
-2
@@ -8,15 +8,15 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.testFramework.common.runAll
|
||||
import com.intellij.testFramework.junit5.TestApplication
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixture
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixtureFactory
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.application.GradleTestApplication
|
||||
import org.junit.jupiter.api.AfterEach
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.TestInfo
|
||||
|
||||
@TestApplication
|
||||
@GradleTestApplication
|
||||
abstract class GradleBaseTestCase {
|
||||
|
||||
private lateinit var testDisposable: Disposable
|
||||
|
||||
+1
@@ -22,6 +22,7 @@ import org.junit.jupiter.api.extension.ExtensionContext
|
||||
* orchestrate Gradle project with different configuration. These project instances are shared between tests.
|
||||
* They can be closed and opened at any time between the tests.
|
||||
*
|
||||
* @see GradleTestApplication
|
||||
* @see com.intellij.testFramework.junit5.TestApplication
|
||||
*/
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.plugins.gradle.testFramework.fixtures.application
|
||||
|
||||
import com.intellij.testFramework.junit5.TestApplication
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.tracker.ExternalSystemListenerLeakTracker
|
||||
import org.junit.jupiter.api.extension.*
|
||||
|
||||
/**
|
||||
* @see com.intellij.testFramework.junit5.TestApplication
|
||||
*/
|
||||
@TestApplication
|
||||
@ExtendWith(
|
||||
GradleTestApplicationLeakTrackerExtension::class
|
||||
)
|
||||
annotation class GradleTestApplication
|
||||
|
||||
private class GradleTestApplicationLeakTrackerExtension : BeforeEachCallback, AfterEachCallback {
|
||||
|
||||
companion object {
|
||||
private const val LEAK_TRACKERS_KEY = "Gradle application-level leak trackers"
|
||||
}
|
||||
|
||||
override fun beforeEach(context: ExtensionContext) {
|
||||
context.getStore(ExtensionContext.Namespace.GLOBAL)
|
||||
.put(LEAK_TRACKERS_KEY, GradleLeakTrackers())
|
||||
}
|
||||
|
||||
override fun afterEach(context: ExtensionContext) {
|
||||
context.getStore(ExtensionContext.Namespace.GLOBAL)
|
||||
.get(LEAK_TRACKERS_KEY, GradleLeakTrackers::class.java)
|
||||
.checkNothingLeaked()
|
||||
}
|
||||
|
||||
private class GradleLeakTrackers {
|
||||
|
||||
val externalSystemListenerLeakTracker = ExternalSystemListenerLeakTracker()
|
||||
|
||||
fun checkNothingLeaked() {
|
||||
externalSystemListenerLeakTracker.tearDown()
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-7
@@ -23,7 +23,6 @@ import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.plugins.gradle.service.project.open.linkAndSyncGradleProject
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixture
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixtureFactory
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.tracker.ExternalSystemListenerLeakTracker
|
||||
import org.jetbrains.plugins.gradle.testFramework.fixtures.tracker.OperationLeakTracker
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
import org.jetbrains.plugins.gradle.util.getGradleProjectReloadOperation
|
||||
@@ -35,7 +34,6 @@ class GradleTestFixtureImpl(
|
||||
override val gradleVersion: GradleVersion,
|
||||
) : GradleTestFixture {
|
||||
|
||||
private lateinit var listenerLeakTracker: ExternalSystemListenerLeakTracker
|
||||
private lateinit var reloadLeakTracker: OperationLeakTracker
|
||||
|
||||
private lateinit var testDisposable: Disposable
|
||||
@@ -48,9 +46,6 @@ class GradleTestFixtureImpl(
|
||||
override lateinit var gradleJvm: String
|
||||
|
||||
override fun setUp() {
|
||||
listenerLeakTracker = ExternalSystemListenerLeakTracker()
|
||||
listenerLeakTracker.setUp()
|
||||
|
||||
reloadLeakTracker = OperationLeakTracker { getGradleProjectReloadOperation(it) }
|
||||
reloadLeakTracker.setUp()
|
||||
|
||||
@@ -76,8 +71,7 @@ class GradleTestFixtureImpl(
|
||||
{ fileFixture.tearDown() },
|
||||
{ sdkFixture.tearDown() },
|
||||
{ Disposer.dispose(testDisposable) },
|
||||
{ reloadLeakTracker.tearDown() },
|
||||
{ listenerLeakTracker.tearDown() }
|
||||
{ reloadLeakTracker.tearDown() }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user