mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[external system][IDEA-306074] flush workspace model's cache in Gradle related tests
GitOrigin-RevId: ab8f16dbf7fac6a940f7847c7249945a91cc605c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9d8824c5c2
commit
d718c22e53
@@ -32,6 +32,7 @@ import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.vfs.impl.VirtualFilePointerTracker
|
||||
import com.intellij.platform.backend.workspace.WorkspaceModelCache
|
||||
import com.intellij.project.TestProjectManager
|
||||
import com.intellij.project.stateStore
|
||||
import com.intellij.util.containers.forEachGuaranteed
|
||||
@@ -432,11 +433,17 @@ private inline fun <R> closeOpenedProjectsIfFailImpl(closeProject: Project.() ->
|
||||
|
||||
private fun Project.closeProject(save: Boolean = false) {
|
||||
invokeAndWaitIfNeeded {
|
||||
if (save) {
|
||||
saveWorkspaceModel()
|
||||
}
|
||||
ProjectManagerEx.getInstanceEx().forceCloseProject(this, save = save)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun Project.closeProjectAsync(save: Boolean = false) {
|
||||
if (save) {
|
||||
saveWorkspaceModel()
|
||||
}
|
||||
ProjectManagerEx.getInstanceEx().forceCloseProjectAsync(this, save = save)
|
||||
}
|
||||
|
||||
@@ -579,6 +586,14 @@ suspend fun createOrLoadProject(
|
||||
createOrLoadProject(projectPath = file, loadComponentState = loadComponentState, options = options, task = task)
|
||||
}
|
||||
|
||||
private fun Project.saveWorkspaceModel() {
|
||||
val workspaceModelCache = WorkspaceModelCache.getInstance(this)
|
||||
requireNotNull(workspaceModelCache) {
|
||||
"WorkspaceModelCache should be enabled explicitly if you need to save the project in tests."
|
||||
}
|
||||
workspaceModelCache.saveCacheNow()
|
||||
}
|
||||
|
||||
private suspend fun createOrLoadProject(projectPath: Path,
|
||||
loadComponentState: Boolean,
|
||||
options: OpenProjectTask,
|
||||
|
||||
@@ -6,9 +6,12 @@ import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizard
|
||||
import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData
|
||||
import com.intellij.idea.IJIgnore
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.use
|
||||
import com.intellij.testFramework.useProjectAsync
|
||||
import com.intellij.testFramework.utils.module.assertModules
|
||||
import com.intellij.testFramework.withProjectAsync
|
||||
import com.intellij.workspaceModel.ide.impl.WorkspaceModelCacheImpl
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.javaGradleData
|
||||
import org.jetbrains.plugins.gradle.service.project.wizard.GradleNewProjectWizardStep.GradleDsl
|
||||
@@ -20,8 +23,8 @@ import org.junit.jupiter.api.Test
|
||||
class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
|
||||
@Test
|
||||
fun `test project create`() {
|
||||
runBlocking {
|
||||
fun `test project re-create`() = runBlocking {
|
||||
Disposer.newDisposable().use { disposable ->
|
||||
val projectInfo = projectInfo("project") {
|
||||
withJavaBuildFile()
|
||||
withSettingsFile {
|
||||
@@ -36,6 +39,8 @@ class GradleCreateProjectTest : GradleCreateProjectTestCase() {
|
||||
withJavaBuildFile()
|
||||
}
|
||||
}
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(disposable)
|
||||
createProjectByWizard(projectInfo)
|
||||
.useProjectAsync(save = true) { project ->
|
||||
assertProjectState(project, projectInfo)
|
||||
|
||||
@@ -3,6 +3,8 @@ package org.jetbrains.plugins.gradle.setup
|
||||
|
||||
import com.intellij.codeHighlighting.HighlightDisplayLevel
|
||||
import com.intellij.openapi.application.writeAction
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.use
|
||||
import com.intellij.openapi.vfs.writeText
|
||||
import com.intellij.profile.codeInspection.InspectionProfileManager
|
||||
import com.intellij.profile.codeInspection.ProjectInspectionProfileManager
|
||||
@@ -10,6 +12,7 @@ import com.intellij.testFramework.PlatformTestUtil
|
||||
import com.intellij.testFramework.useProjectAsync
|
||||
import com.intellij.testFramework.utils.module.assertModules
|
||||
import com.intellij.testFramework.utils.vfs.createFile
|
||||
import com.intellij.workspaceModel.ide.impl.WorkspaceModelCacheImpl
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings
|
||||
import org.junit.jupiter.api.Assertions
|
||||
@@ -45,13 +48,14 @@ class GradleOpenProjectTest : GradleOpenProjectTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test project re-open`() {
|
||||
runBlocking {
|
||||
fun `test project re-open`() = runBlocking {
|
||||
Disposer.newDisposable().use { disposable ->
|
||||
val projectInfo = getComplexProjectInfo("project")
|
||||
val linkedProjectInfo = getComplexProjectInfo("linked_project")
|
||||
initProject(projectInfo)
|
||||
initProject(linkedProjectInfo)
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(disposable)
|
||||
openProject("project")
|
||||
.useProjectAsync(save = true) {
|
||||
assertProjectState(it, projectInfo)
|
||||
@@ -67,13 +71,14 @@ class GradleOpenProjectTest : GradleOpenProjectTestCase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test project re-import deprecation`() {
|
||||
runBlocking {
|
||||
fun `test project re-import deprecation`() = runBlocking {
|
||||
Disposer.newDisposable().use { disposable ->
|
||||
val projectInfo = getComplexProjectInfo("project")
|
||||
val linkedProjectInfo = getComplexProjectInfo("linked_project")
|
||||
initProject(projectInfo)
|
||||
initProject(linkedProjectInfo)
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(disposable)
|
||||
openProject("project")
|
||||
.useProjectAsync(save = true) {
|
||||
assertProjectState(it, projectInfo)
|
||||
|
||||
+3
@@ -9,11 +9,13 @@ import com.intellij.openapi.observable.operation.core.whenOperationStarted
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.modules
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.use
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.testFramework.*
|
||||
import com.intellij.testFramework.common.runAll
|
||||
import com.intellij.testFramework.fixtures.SdkTestFixture
|
||||
import com.intellij.util.indexing.FileBasedIndexEx
|
||||
import com.intellij.workspaceModel.ide.impl.WorkspaceModelCacheImpl
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.gradle.util.GradleVersion
|
||||
import org.jetbrains.plugins.gradle.service.project.wizard.util.generateGradleWrapper
|
||||
@@ -65,6 +67,7 @@ internal class GradleProjectTestFixtureImpl private constructor(
|
||||
override fun setUp() {
|
||||
_testDisposable = Disposer.newDisposable()
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(testDisposable)
|
||||
sdkFixture.setUp()
|
||||
fileFixture.setUp()
|
||||
|
||||
|
||||
+31
-26
@@ -7,6 +7,7 @@ import com.intellij.openapi.project.getProjectCacheFileName
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.testFramework.openProjectAsync
|
||||
import com.intellij.testFramework.useProjectAsync
|
||||
import com.intellij.workspaceModel.ide.impl.WorkspaceModelCacheImpl
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager
|
||||
import org.junit.Test
|
||||
@@ -39,7 +40,6 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
}.useProjectAsync {
|
||||
assertProjectState(it, projectInfo)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
importProjectActionAsync(projectInfo.projectFile)
|
||||
}.useProjectAsync {
|
||||
assertProjectState(it, projectInfo)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,6 +96,8 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
fun `test project re-open`() = runBlocking {
|
||||
val projectInfo = generateProject("A")
|
||||
val linkedProjectInfo = generateProject("L")
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(testRootDisposable)
|
||||
waitForImport {
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
}.useProjectAsync(save = true) {
|
||||
@@ -137,6 +138,8 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
|
||||
runBlocking {
|
||||
val projectInfo = ProjectInfo(projectPom, "project", "m (1)", "M (2)")
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(testRootDisposable)
|
||||
waitForImport {
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
}.useProjectAsync(save = true) {
|
||||
@@ -154,6 +157,7 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
val projectInfo = generateProject("A")
|
||||
val linkedProjectInfo = generateProject("L")
|
||||
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(testRootDisposable)
|
||||
waitForImport {
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
}.useProjectAsync(save = true) {
|
||||
@@ -175,25 +179,26 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
val projectInfo = generateProject("A")
|
||||
|
||||
MavenProjectLegacyImporter.setAnswerToDeleteObsoleteModulesQuestion(true)
|
||||
val p1 = openProjectAsync(projectInfo.projectFile)
|
||||
p1.useProjectAsync(true) {
|
||||
// initial state: workspace import is disabled, has not been forced yet
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportForciblyTurnedOn = false
|
||||
waitForImportWithinTimeout(it) {
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportEnabled = false
|
||||
Unit
|
||||
}
|
||||
}
|
||||
WorkspaceModelCacheImpl.forceEnableCaching(testRootDisposable)
|
||||
|
||||
val p2 = openProjectAsync(projectInfo.projectFile)
|
||||
p2.useProjectAsync(true) {
|
||||
// check that workspace import has been forced
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
assertTrue(mavenProjectsManager.importingSettings.isWorkspaceImportEnabled)
|
||||
// user still chooses legacy import
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportEnabled = false
|
||||
}
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
.useProjectAsync(save = true) {
|
||||
// initial state: workspace import is disabled, has not been forced yet
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportForciblyTurnedOn = false
|
||||
waitForImportWithinTimeout(it) {
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportEnabled = false
|
||||
}
|
||||
}
|
||||
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
.useProjectAsync(save = true) {
|
||||
// check that workspace import has been forced
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
assertTrue(mavenProjectsManager.importingSettings.isWorkspaceImportEnabled)
|
||||
// user still chooses legacy import
|
||||
mavenProjectsManager.importingSettings.isWorkspaceImportEnabled = false
|
||||
}
|
||||
|
||||
val projectFileDir = projectInfo.projectFile.parent.toNioPath()
|
||||
val moduleFilePath = appSystemDir
|
||||
@@ -211,11 +216,11 @@ class MavenSetupProjectTest : MavenSetupProjectTestCase() {
|
||||
assertTrue("Module file is empty", Files.size(moduleFilePath) > 0)
|
||||
}
|
||||
|
||||
val p3 = openProjectAsync(projectInfo.projectFile)
|
||||
p3.useProjectAsync(true) {
|
||||
// check that workspace import has not been forced twice
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
assertFalse(mavenProjectsManager.importingSettings.isWorkspaceImportEnabled)
|
||||
}
|
||||
openProjectAsync(projectInfo.projectFile)
|
||||
.useProjectAsync(save = true) {
|
||||
// check that workspace import has not been forced twice
|
||||
val mavenProjectsManager = MavenProjectsManager.getInstance(it)
|
||||
assertFalse(mavenProjectsManager.importingSettings.isWorkspaceImportEnabled)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user