mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[Gradle|TestFramework] fix: made the tearDown more tolerant to failures in the setUp
GitOrigin-RevId: e6cfb03986d9ccaf181daf66f62a171b2db8f7c8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
03e140a2da
commit
fcdd70af41
@@ -15,7 +15,11 @@ import org.junit.jupiter.api.AfterEach
|
||||
|
||||
abstract class GradleExecutionBaseTestCase : GradleProjectTestCase() {
|
||||
|
||||
private lateinit var executionFixture: GradleExecutionTestFixture
|
||||
private var _executionFixture: GradleExecutionTestFixture? = null
|
||||
private val executionFixture: GradleExecutionTestFixture
|
||||
get() = requireNotNull(_executionFixture) {
|
||||
"Gradle execution fixture wasn't setup. Please use [GradleBaseTestCase.test] function inside your tests."
|
||||
}
|
||||
|
||||
fun getExecutionEnvironment(): ExecutionEnvironment {
|
||||
return executionFixture.getExecutionEnvironment()
|
||||
@@ -30,13 +34,14 @@ abstract class GradleExecutionBaseTestCase : GradleProjectTestCase() {
|
||||
|
||||
cleanupProjectBuildDirectory()
|
||||
|
||||
executionFixture = GradleExecutionTestFixtureImpl(project, projectRoot)
|
||||
_executionFixture = GradleExecutionTestFixtureImpl(project, projectRoot)
|
||||
executionFixture.setUp()
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
runAll(
|
||||
{ executionFixture.tearDown() },
|
||||
{ _executionFixture?.tearDown() },
|
||||
{ _executionFixture = null },
|
||||
{ cleanupProjectBuildDirectory() },
|
||||
{ super.tearDown() },
|
||||
)
|
||||
|
||||
+10
-12
@@ -11,28 +11,26 @@ import org.junit.jupiter.api.AfterAll
|
||||
@GradleProjectTestApplication
|
||||
abstract class GradleProjectBaseTestCase {
|
||||
|
||||
private var fixture: GradleProjectTestFixture? = null
|
||||
|
||||
private var _gradleFixture: GradleProjectTestFixture? = null
|
||||
val gradleFixture: GradleProjectTestFixture
|
||||
get() = requireNotNull(fixture) {
|
||||
"Gradle fixture isn't setup. Please use [GradleBaseTestCase.test] function inside your tests."
|
||||
get() = requireNotNull(_gradleFixture) {
|
||||
"Gradle fixture wasn't setup. Please use [GradleBaseTestCase.test] function inside your tests."
|
||||
}
|
||||
|
||||
open fun setUp() = Unit
|
||||
|
||||
open fun tearDown() = Unit
|
||||
|
||||
open fun patchFixtureBuilder(fixtureBuilder: GradleTestFixtureBuilder): GradleTestFixtureBuilder = fixtureBuilder
|
||||
|
||||
open fun test(gradleVersion: GradleVersion, fixtureBuilder: GradleTestFixtureBuilder, test: () -> Unit) {
|
||||
val patchedBuilder = patchFixtureBuilder(fixtureBuilder)
|
||||
fixture = getOrCreateGradleTestFixture(gradleVersion, patchedBuilder)
|
||||
setUp()
|
||||
runAll(
|
||||
{ test() },
|
||||
{
|
||||
_gradleFixture = getOrCreateGradleTestFixture(gradleVersion, fixtureBuilder)
|
||||
setUp()
|
||||
test()
|
||||
},
|
||||
{ tearDown() },
|
||||
{ rollbackOrDestroyGradleTestFixture(gradleFixture) },
|
||||
{ fixture = null }
|
||||
{ _gradleFixture?.let { rollbackOrDestroyGradleTestFixture(it) } },
|
||||
{ _gradleFixture = null }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+14
-14
@@ -32,12 +32,18 @@ internal class GradleProjectTestFixtureImpl private constructor(
|
||||
override val fileFixture: FileTestFixture
|
||||
) : GradleProjectTestFixture {
|
||||
|
||||
private lateinit var _project: Project
|
||||
|
||||
private lateinit var testDisposable: Disposable
|
||||
private var _testDisposable: Disposable? = null
|
||||
private val testDisposable: Disposable
|
||||
get() = requireNotNull(_testDisposable) {
|
||||
"Gradle fixture wasn't setup. Please use [GradleBaseTestCase.test] function inside your tests."
|
||||
}
|
||||
|
||||
private var _project: Project? = null
|
||||
override val project: Project
|
||||
get() = _project
|
||||
get() = requireNotNull(_project) {
|
||||
"Gradle fixture wasn't setup. Please use [GradleBaseTestCase.test] function inside your tests."
|
||||
}
|
||||
|
||||
override val module: Module
|
||||
get() = project.modules.single { it.name == project.name }
|
||||
|
||||
@@ -57,7 +63,7 @@ internal class GradleProjectTestFixtureImpl private constructor(
|
||||
)
|
||||
|
||||
override fun setUp() {
|
||||
testDisposable = Disposer.newDisposable()
|
||||
_testDisposable = Disposer.newDisposable()
|
||||
|
||||
sdkFixture.setUp()
|
||||
fileFixture.setUp()
|
||||
@@ -65,21 +71,15 @@ internal class GradleProjectTestFixtureImpl private constructor(
|
||||
installGradleProjectReloadWatcher()
|
||||
|
||||
_project = runBlocking { openProjectAsync(fileFixture.root) }
|
||||
IndexingTestUtil.waitUntilIndexesAreReady(_project)
|
||||
IndexingTestUtil.waitUntilIndexesAreReady(project)
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
runAll(
|
||||
{ ApplicationManager.getApplication().serviceIfCreated<FileBasedIndexEx>()?.waitUntilIndicesAreInitialized() },
|
||||
{ runBlocking { fileFixture.root.refreshAndAwait() } },
|
||||
{
|
||||
runBlocking {
|
||||
if (this@GradleProjectTestFixtureImpl::_project.isInitialized) {
|
||||
_project.closeProjectAsync()
|
||||
}
|
||||
}
|
||||
},
|
||||
{ Disposer.dispose(testDisposable) },
|
||||
{ runBlocking { _project?.closeProjectAsync() } },
|
||||
{ _testDisposable?.let { Disposer.dispose(it) } },
|
||||
{ fileFixture.tearDown() },
|
||||
{ sdkFixture.tearDown() }
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user