From 8e38f9d176e932de8068428f6a61485635b2a4be Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sat, 5 Dec 2020 00:03:29 +0300 Subject: [PATCH] Stop mangle common project descriptor in GenerateTestSupport tests Use custom project descriptor instead. Mitingate flaky failures: ERROR: Save settings failed java.lang.RuntimeException: java.io.IOException: Cannot save /test_path/test.ipr. Unable to open the file for writing. at com.intellij.util.ExceptionUtil.rethrow(ExceptionUtil.java:116) at com.intellij.util.lang.CompoundRuntimeException.throwIfNotEmpty(CompoundRuntimeException.java:106) at com.intellij.configurationStore.SaveResult.throwIfErrored(SaveResult.kt:59) at com.intellij.configurationStore.ComponentStoreImpl.save$suspendImpl(ComponentStoreImpl.kt:152) at com.intellij.configurationStore.ComponentStoreImpl$save$1.invokeSuspend(ComponentStoreImpl.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56) at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274) at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:84) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59) at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source) at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38) at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source) at com.intellij.configurationStore.StoreUtil$Companion.saveSettings(storeUtil.kt:44) at com.intellij.configurationStore.StoreUtil.saveSettings(storeUtil.kt) at com.intellij.openapi.project.impl.ProjectImpl.save(ProjectImpl.java:157) at org.jetbrains.kotlin.idea.codeInsight.generate.AbstractGenerateTestSupportMethodActionTest$setUpTestSourceRoot$1.invoke(AbstractGenerateTestSupportMethodActionTest.kt:22) at org.jetbrains.kotlin.idea.codeInsight.generate.AbstractGenerateTestSupportMethodActionTest$setUpTestSourceRoot$1.invoke(AbstractGenerateTestSupportMethodActionTest.kt:20) --- .../generate/AbstractCodeInsightActionTest.kt | 3 +- ...ractGenerateTestSupportMethodActionTest.kt | 31 +++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt index 08ce7d224b8..c5f900c06b0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt @@ -10,6 +10,7 @@ import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.Presentation import com.intellij.openapi.util.io.FileUtil import com.intellij.refactoring.util.CommonRefactoringUtil +import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.TestActionEvent import junit.framework.ComparisonFailure @@ -113,5 +114,5 @@ abstract class AbstractCodeInsightActionTest : KotlinLightCodeInsightFixtureTest } } - override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE + override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE } diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractGenerateTestSupportMethodActionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractGenerateTestSupportMethodActionTest.kt index 5efaae03728..5afc4ebfc85 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractGenerateTestSupportMethodActionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractGenerateTestSupportMethodActionTest.kt @@ -5,30 +5,27 @@ package org.jetbrains.kotlin.idea.codeInsight.generate -import com.intellij.openapi.roots.ModuleRootManager +import com.intellij.openapi.module.ModuleTypeId +import com.intellij.openapi.projectRoots.Sdk +import com.intellij.testFramework.LightProjectDescriptor +import org.jetbrains.jps.model.java.JavaSourceRootType +import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.idea.actions.generate.KotlinGenerateTestSupportActionBase -import org.jetbrains.kotlin.idea.util.application.runWriteAction +import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.test.InTextDirectivesUtils abstract class AbstractGenerateTestSupportMethodActionTest : AbstractCodeInsightActionTest() { - private fun setUpTestSourceRoot() { - val model = ModuleRootManager.getInstance(module).modifiableModel - val entry = model.contentEntries.single() - val sourceFolderFile = entry.sourceFolderFiles.single() - entry.removeSourceFolder(entry.sourceFolders.single()) - entry.addSourceFolder(sourceFolderFile, true) - runWriteAction { - model.commit() - module.project.save() - } - } - override fun createAction(fileText: String) = (super.createAction(fileText) as KotlinGenerateTestSupportActionBase).apply { testFrameworkToUse = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// TEST_FRAMEWORK:") } - override fun doTest(path: String) { - setUpTestSourceRoot() - super.doTest(path) + override fun getProjectDescriptor(): LightProjectDescriptor = TEST_ROOT_PROJECT_DESCRIPTOR + + companion object { + val TEST_ROOT_PROJECT_DESCRIPTOR = object : LightProjectDescriptor() { + override fun getModuleTypeId(): String = ModuleTypeId.JAVA_MODULE + override fun getSdk(): Sdk = PluginTestCaseBase.mockJdk() + override fun getSourceRootType(): JpsModuleSourceRootType<*> = JavaSourceRootType.TEST_SOURCE + } } } \ No newline at end of file