diff --git a/intellij.idea.community.main.iml b/intellij.idea.community.main.iml
index 02eb547b9d63..f7b83e53ddfb 100644
--- a/intellij.idea.community.main.iml
+++ b/intellij.idea.community.main.iml
@@ -189,6 +189,7 @@
+
diff --git a/platform/workspaceModel/codegen/test/testSrc/com/intellij/workspaceModel/codegen/EntityCodeGenTest.kt b/platform/workspaceModel/codegen/test/testSrc/com/intellij/workspaceModel/codegen/EntityCodeGenTest.kt
index ba1d26081253..9257ef980cb4 100644
--- a/platform/workspaceModel/codegen/test/testSrc/com/intellij/workspaceModel/codegen/EntityCodeGenTest.kt
+++ b/platform/workspaceModel/codegen/test/testSrc/com/intellij/workspaceModel/codegen/EntityCodeGenTest.kt
@@ -1,47 +1,45 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.workspaceModel.codegen
-import com.intellij.openapi.application.WriteAction
+import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ex.PathManagerEx
import com.intellij.openapi.application.runWriteActionAndWait
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable
import com.intellij.openapi.fileEditor.FileDocumentManager
-import com.intellij.openapi.roots.ModuleRootManager
+import com.intellij.openapi.module.Module
+import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.VfsUtil
-import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.psi.PsiDocumentManager
+import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.testFramework.PlatformTestUtil
import com.intellij.util.io.assertMatches
import com.intellij.util.io.directoryContentOf
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
+import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
import java.io.File
import java.nio.file.Path
class EntityCodeGenTest: KotlinLightCodeInsightFixtureTestCase() {
- private var genFolder: VirtualFile? = null
-
override val testDataDirectory: File
get() = File(PathManagerEx.getCommunityHomePath() + "/platform/workspaceModel/codegen/test/testData/$testDirectoryName")
override fun setUp() {
super.setUp()
- // Set strip trailing spaces
val settings = EditorSettingsExternalizable.getInstance()
+ val oldValue = settings.stripTrailingSpaces
settings.stripTrailingSpaces = EditorSettingsExternalizable.STRIP_TRAILING_SPACES_WHOLE
-
- runWriteActionAndWait {
- genFolder = createGeneratedSourceFolder()
- }
- val entityFolderVfu = VirtualFileManager.getInstance().findFileByNioPath(testDataDirectory.toPath().resolve("before"))!!
- runWriteActionAndWait {
- VfsUtil.copyDirectory(this, entityFolderVfu, getSourceRootVfu(), null)
- }
+ disposeOnTearDown(Disposable {
+ settings.stripTrailingSpaces = oldValue
+ })
+ myFixture.copyDirectoryToProject("before", "")
}
+ override fun getProjectDescriptor(): LightProjectDescriptor = entitiesProjectDescriptor
+
fun testSimpleCase() {
doTest()
}
@@ -68,7 +66,7 @@ class EntityCodeGenTest: KotlinLightCodeInsightFixtureTestCase() {
private fun doTest() {
runWriteActionAndWait {
- CodeWriter.generate(project, getSourceRootVfu(), false) { genFolder }
+ CodeWriter.generate(project, myFixture.findFileInTempDir("."), false) { myFixture.tempDirFixture.findOrCreateDir("gen") }
PsiDocumentManager.getInstance(project).commitAllDocuments()
VirtualFileManager.getInstance().syncRefresh()
}
@@ -82,31 +80,27 @@ class EntityCodeGenTest: KotlinLightCodeInsightFixtureTestCase() {
val expectedDir = FileUtil.createTempDirectory(EntityCodeGenTest::class.java.simpleName, "${testDirectoryName}_api", true)
val expectedDirVfu = VirtualFileManager.getInstance().findFileByNioPath(expectedDir.toPath())!!
runWriteActionAndWait {
- VfsUtil.copyDirectory(this, getSourceRootVfu(), expectedDirVfu, null)
+ VfsUtil.copyDirectory(this, myFixture.findFileInTempDir("."), expectedDirVfu, null)
}
expectedDir.assertMatches(directoryContentOf(getExpectedDir()))
}
- private fun createGeneratedSourceFolder(): VirtualFile {
- val generatedFolder = WriteAction.compute {
- VfsUtil.createDirectoryIfMissing(getSourceRootVfu(), "gen")
- }
-
- val modifiableModel = ModuleRootManager.getInstance(module).modifiableModel
- val contentEntry = modifiableModel.contentEntries.first()
- contentEntry.addSourceFolder(generatedFolder, JavaSourceRootType.SOURCE,
- JpsJavaExtensionService.getInstance().createSourceRootProperties("", true))
- modifiableModel.commit()
- module.project.save()
- return generatedFolder
- }
-
- private fun getSourceRootVfu(): VirtualFile {
- val moduleRootManager = ModuleRootManager.getInstance(module)
- return moduleRootManager.contentEntries.first().sourceFolders.first().file!!
- }
private fun getExpectedDir(): Path {
return testDataDirectory.toPath().resolve("after")
}
+
+ companion object {
+ val entitiesProjectDescriptor: EntitiesProjectDescriptor by lazy { EntitiesProjectDescriptor() }
+ }
+
+ class EntitiesProjectDescriptor : KotlinLightProjectDescriptor() {
+ override fun configureModule(module: Module, model: ModifiableRootModel) {
+ val contentEntry = model.contentEntries.first()
+ val genFolder = VfsUtil.createDirectoryIfMissing(contentEntry.file, "gen")
+
+ contentEntry.addSourceFolder(genFolder, JavaSourceRootType.SOURCE,
+ JpsJavaExtensionService.getInstance().createSourceRootProperties("", true))
+ }
+ }
}
\ No newline at end of file