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 package org.jetbrains.kotlin.idea.test
import com.intellij.application.options.CodeStyle
import com.intellij.ide.highlighter.JavaFileType import com.intellij.ide.highlighter.JavaFileType
import com.intellij.ide.startup.impl.StartupManagerImpl import com.intellij.ide.startup.impl.StartupManagerImpl
import com.intellij.openapi.actionSystem.ActionPlaces 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.PsiClassOwner
import com.intellij.psi.PsiJavaFile import com.intellij.psi.PsiJavaFile
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.codeStyle.CodeStyleSettings
import com.intellij.psi.search.FileTypeIndex import com.intellij.psi.search.FileTypeIndex
import com.intellij.psi.search.ProjectScope import com.intellij.psi.search.ProjectScope
import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.LightProjectDescriptor
@@ -280,7 +282,7 @@ private fun configureCompilerOptions(fileText: String, project: Project, module:
return false return false
} }
fun <T> configureRegistryAndRun(fileText: String, body: () -> T) { fun configureRegistryAndRun(fileText: String, body: () -> Unit) {
val registers = InTextDirectivesUtils.findListWithPrefixes(fileText, "// REGISTRY:") val registers = InTextDirectivesUtils.findListWithPrefixes(fileText, "// REGISTRY:")
.map { it.split(' ') } .map { it.split(' ') }
.map { Registry.get(it.first()) to it.last() } .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) { private fun rollbackCompilerOptions(project: Project, module: Module, removeFacet: Boolean) {
KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS } KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS }
KotlinCommonCompilerArgumentsHolder.getInstance(project).update { this.languageVersion = LanguageVersion.LATEST_STABLE.versionString } 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.core.script.isScriptChangesNotifierDisabled
import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightTestCase 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.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File import java.io.File
@@ -96,15 +97,14 @@ abstract class AbstractCodeMoverTest : KotlinLightCodeInsightTestCase() {
isApplicableChecker(isApplicableExpected, direction) isApplicableChecker(isApplicableExpected, direction)
val codeStyleSettings = CodeStyle.getSettings(project) configureCodeStyleAndRun(
try { project,
val configurator = FormatSettingsUtil.createConfigurator(fileText, codeStyleSettings) {
configurator.configureSettings() FormatSettingsUtil.createConfigurator(fileText, it).configureSettings()
if (trailingComma) it.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true
if (trailingComma) codeStyleSettings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true }
) {
invokeAndCheck(path, action, isApplicableExpected) invokeAndCheck(path, action, isApplicableExpected)
} finally {
codeStyleSettings.clearCodeStyleSettings()
} }
} }