Always clean language and api versions after usage
This commit is contained in:
committed by
Nikolay Krasko
parent
c0dac9bf32
commit
af3b057ba2
+17
-2
@@ -247,7 +247,7 @@ fun <T> withCustomCompilerOptions(fileText: String, project: Project, module: Mo
|
||||
}
|
||||
}
|
||||
|
||||
fun configureCompilerOptions(fileText: String, project: Project, module: Module): Boolean {
|
||||
private fun configureCompilerOptions(fileText: String, project: Project, module: Module): Boolean {
|
||||
val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $LANGUAGE_VERSION_DIRECTIVE ")
|
||||
val jvmTarget = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// $JVM_TARGET_DIRECTIVE ")
|
||||
// We can have several such directives in quickFixMultiFile tests
|
||||
@@ -310,7 +310,22 @@ private fun rollbackCompilerOptions(project: Project, module: Module) {
|
||||
KotlinCompilerSettings.getInstance(project).update { this.additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS }
|
||||
}
|
||||
|
||||
fun configureLanguageAndApiVersion(
|
||||
fun withCustomLanguageAndApiVersion(
|
||||
project: Project,
|
||||
module: Module,
|
||||
languageVersion: String,
|
||||
apiVersion: String?,
|
||||
body: () -> Unit
|
||||
) {
|
||||
configureLanguageAndApiVersion(project, module, languageVersion, apiVersion)
|
||||
try {
|
||||
body()
|
||||
} finally {
|
||||
configureLanguageAndApiVersion(project, module, LanguageVersion.LATEST_STABLE.versionString, null)
|
||||
}
|
||||
}
|
||||
|
||||
private fun configureLanguageAndApiVersion(
|
||||
project: Project,
|
||||
module: Module,
|
||||
languageVersion: String,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.idea.codeInsight
|
||||
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion
|
||||
import org.jetbrains.kotlin.idea.test.withCustomLanguageAndApiVersion
|
||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@@ -282,8 +282,9 @@ class OverrideImplementTest : AbstractOverrideImplementTest() {
|
||||
}
|
||||
|
||||
fun testCopyExperimental() {
|
||||
configureLanguageAndApiVersion(project, module, "1.3", "1.3")
|
||||
doOverrideFileTest("targetFun")
|
||||
withCustomLanguageAndApiVersion(project, module, "1.3", "1.3") {
|
||||
doOverrideFileTest("targetFun")
|
||||
}
|
||||
}
|
||||
|
||||
fun testUnresolvedType() {
|
||||
|
||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase.*
|
||||
import org.jetbrains.kotlin.idea.test.configureLanguageAndApiVersion
|
||||
import org.jetbrains.kotlin.idea.test.withCustomLanguageAndApiVersion
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.allChildren
|
||||
@@ -43,27 +43,29 @@ private const val RUN_PREFIX = "// RUN:"
|
||||
class RunConfigurationTest : AbstractRunConfigurationTest() {
|
||||
fun testMainInTest() {
|
||||
val createModuleResult = configureModule(moduleDirPath("module"), getTestProject().baseDir!!)
|
||||
configureLanguageAndApiVersion(
|
||||
createModuleResult.module.project, createModuleResult.module, LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString,
|
||||
)
|
||||
ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createModuleResult.module, addJdk(testRootDisposable, ::mockJdk))
|
||||
withCustomLanguageAndApiVersion(
|
||||
createModuleResult.module.project, createModuleResult.module,
|
||||
LanguageVersionSettingsImpl.DEFAULT.languageVersion.versionString, apiVersion = null
|
||||
) {
|
||||
ConfigLibraryUtil.configureKotlinRuntimeAndSdk(createModuleResult.module, addJdk(testRootDisposable, ::mockJdk))
|
||||
|
||||
val runConfiguration = createConfigurationFromMain(getTestProject(), "some.main")
|
||||
val javaParameters = getJavaRunParameters(runConfiguration)
|
||||
val runConfiguration = createConfigurationFromMain(getTestProject(), "some.main")
|
||||
val javaParameters = getJavaRunParameters(runConfiguration)
|
||||
|
||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.srcOutputDir))
|
||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.testOutputDir))
|
||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.srcOutputDir))
|
||||
assertTrue(javaParameters.classPath.rootDirs.contains(createModuleResult.testOutputDir))
|
||||
|
||||
createModuleResult.srcDir?.children?.filter { it.extension == "kt" }?.forEach {
|
||||
val psiFile = PsiManager.getInstance(createModuleResult.module.project).findFile(it)
|
||||
if (psiFile is KtFile) {
|
||||
psiFile.acceptChildren(
|
||||
object : KtVisitorVoid() {
|
||||
override fun visitNamedFunction(function: KtNamedFunction) {
|
||||
functionVisitor(createModuleResult.module, function)
|
||||
}
|
||||
},
|
||||
)
|
||||
createModuleResult.srcDir?.children?.filter { it.extension == "kt" }?.forEach {
|
||||
val psiFile = PsiManager.getInstance(createModuleResult.module.project).findFile(it)
|
||||
if (psiFile is KtFile) {
|
||||
psiFile.acceptChildren(
|
||||
object : KtVisitorVoid() {
|
||||
override fun visitNamedFunction(function: KtNamedFunction) {
|
||||
functionVisitor(createModuleResult.module, function)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user