KotlinLightCodeInsightFixtureTestCase: add configureCodeStyleAndRun

This commit is contained in:
Dmitry Gridin
2020-03-03 14:35:01 +07:00
parent f66b994946
commit baf2dd6b9b
2 changed files with 25 additions and 9 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.idea.test
import com.intellij.application.options.CodeStyle
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.ide.startup.impl.StartupManagerImpl
import com.intellij.openapi.actionSystem.ActionPlaces
@@ -26,6 +27,7 @@ import com.intellij.pom.java.LanguageLevel
import com.intellij.psi.PsiClassOwner
import com.intellij.psi.PsiJavaFile
import com.intellij.psi.PsiManager
import com.intellij.psi.codeStyle.CodeStyleSettings
import com.intellij.psi.search.FileTypeIndex
import com.intellij.psi.search.ProjectScope
import com.intellij.testFramework.LightProjectDescriptor
@@ -280,7 +282,7 @@ private fun configureCompilerOptions(fileText: String, project: Project, module:
return false
}
fun <T> configureRegistryAndRun(fileText: String, body: () -> T) {
fun configureRegistryAndRun(fileText: String, body: () -> Unit) {
val registers = InTextDirectivesUtils.findListWithPrefixes(fileText, "// REGISTRY:")
.map { it.split(' ') }
.map { Registry.get(it.first()) to it.last() }
@@ -296,6 +298,20 @@ fun <T> configureRegistryAndRun(fileText: String, body: () -> T) {
}
}
fun configureCodeStyleAndRun(
project: Project,
configurator: (CodeStyleSettings) -> Unit,
body: () -> Unit
) {
val codeStyleSettings = CodeStyle.getSettings(project)
try {
configurator(codeStyleSettings)
body()
} finally {
codeStyleSettings.clearCodeStyleSettings()
}
}
private fun rollbackCompilerOptions(project: Project, module: Module, removeFacet: Boolean) {
KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS }
KotlinCommonCompilerArgumentsHolder.getInstance(project).update { this.languageVersion = LanguageVersion.LATEST_STABLE.versionString }
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.idea.codeInsight.upDownMover.KotlinExpressionMover
import org.jetbrains.kotlin.idea.core.script.isScriptChangesNotifierDisabled
import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightTestCase
import org.jetbrains.kotlin.idea.test.configureCodeStyleAndRun
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
@@ -96,15 +97,14 @@ abstract class AbstractCodeMoverTest : KotlinLightCodeInsightTestCase() {
isApplicableChecker(isApplicableExpected, direction)
val codeStyleSettings = CodeStyle.getSettings(project)
try {
val configurator = FormatSettingsUtil.createConfigurator(fileText, codeStyleSettings)
configurator.configureSettings()
if (trailingComma) codeStyleSettings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true
configureCodeStyleAndRun(
project,
{
FormatSettingsUtil.createConfigurator(fileText, it).configureSettings()
if (trailingComma) it.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true
}
) {
invokeAndCheck(path, action, isApplicableExpected)
} finally {
codeStyleSettings.clearCodeStyleSettings()
}
}