Support LANGUAGE_VERSION directive in quick fix tests
This commit is contained in:
+23
-1
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -23,8 +23,11 @@ import com.intellij.openapi.actionSystem.ActionPlaces
|
|||||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||||
import com.intellij.openapi.actionSystem.Presentation
|
import com.intellij.openapi.actionSystem.Presentation
|
||||||
import com.intellij.openapi.actionSystem.ex.ActionManagerEx
|
import com.intellij.openapi.actionSystem.ex.ActionManagerEx
|
||||||
|
import com.intellij.openapi.application.WriteAction
|
||||||
import com.intellij.openapi.editor.ex.EditorEx
|
import com.intellij.openapi.editor.ex.EditorEx
|
||||||
|
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.startup.StartupManager
|
import com.intellij.openapi.startup.StartupManager
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
import com.intellij.openapi.util.text.StringUtil
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
@@ -32,7 +35,10 @@ import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess
|
|||||||
import com.intellij.testFramework.LightProjectDescriptor
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
import com.intellij.testFramework.LoggedErrorProcessor
|
import com.intellij.testFramework.LoggedErrorProcessor
|
||||||
import org.apache.log4j.Logger
|
import org.apache.log4j.Logger
|
||||||
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.idea.actions.internal.KotlinInternalMode
|
import org.jetbrains.kotlin.idea.actions.internal.KotlinInternalMode
|
||||||
|
import org.jetbrains.kotlin.idea.facet.configureFacet
|
||||||
|
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
||||||
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 org.jetbrains.kotlin.test.TestMetadata
|
import org.jetbrains.kotlin.test.TestMetadata
|
||||||
@@ -171,3 +177,19 @@ abstract class KotlinLightCodeInsightFixtureTestCase : KotlinLightCodeInsightFix
|
|||||||
return this::class.findAnnotation<TestMetadata>()?.value ?: super.getTestDataPath()
|
return this::class.findAnnotation<TestMetadata>()?.value ?: super.getTestDataPath()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun configureLanguageVersion(fileText: String, project: Project, module: Module) {
|
||||||
|
val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// LANGUAGE_VERSION: ")
|
||||||
|
if (version != null) {
|
||||||
|
val accessToken = WriteAction.start()
|
||||||
|
try {
|
||||||
|
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||||
|
val facet = module.getOrCreateFacet(modelsProvider, useProjectSettings = false)
|
||||||
|
facet.configureFacet(version, LanguageFeature.State.DISABLED, null, modelsProvider)
|
||||||
|
modelsProvider.commit()
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
accessToken.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -18,18 +18,14 @@ package org.jetbrains.kotlin.idea.inspections
|
|||||||
|
|
||||||
import com.google.common.collect.Lists
|
import com.google.common.collect.Lists
|
||||||
import com.intellij.codeInspection.ProblemDescriptor
|
import com.intellij.codeInspection.ProblemDescriptor
|
||||||
import com.intellij.openapi.application.WriteAction
|
|
||||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProviderImpl
|
|
||||||
import com.intellij.openapi.util.SystemInfo
|
import com.intellij.openapi.util.SystemInfo
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import junit.framework.ComparisonFailure
|
import junit.framework.ComparisonFailure
|
||||||
import junit.framework.TestCase
|
import junit.framework.TestCase
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.idea.facet.configureFacet
|
|
||||||
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
|
||||||
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils
|
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
|
import org.jetbrains.kotlin.idea.test.configureLanguageVersion
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
@@ -86,19 +82,7 @@ abstract class AbstractLocalInspectionTest : KotlinLightCodeInsightFixtureTestCa
|
|||||||
val fileText = FileUtil.loadFile(mainFile, true)
|
val fileText = FileUtil.loadFile(mainFile, true)
|
||||||
TestCase.assertTrue("\"<caret>\" is missing in file \"$mainFile\"", fileText.contains("<caret>"))
|
TestCase.assertTrue("\"<caret>\" is missing in file \"$mainFile\"", fileText.contains("<caret>"))
|
||||||
|
|
||||||
val version = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// LANGUAGE_VERSION: ")
|
configureLanguageVersion(fileText, project, module)
|
||||||
if (version != null) {
|
|
||||||
val accessToken = WriteAction.start()
|
|
||||||
try {
|
|
||||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
|
||||||
val facet = module.getOrCreateFacet(modelsProvider, useProjectSettings = false)
|
|
||||||
facet.configureFacet(version, LanguageFeature.State.DISABLED, null, modelsProvider)
|
|
||||||
modelsProvider.commit()
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
accessToken.finish()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val minJavaVersion = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// MIN_JAVA_VERSION: ")
|
val minJavaVersion = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// MIN_JAVA_VERSION: ")
|
||||||
if (minJavaVersion != null && !SystemInfo.isJavaVersionAtLeast(minJavaVersion)) return
|
if (minJavaVersion != null && !SystemInfo.isJavaVersionAtLeast(minJavaVersion)) return
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
* Copyright 2010-2017 JetBrains s.r.o.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -43,7 +43,10 @@ import java.io.IOException
|
|||||||
abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase() {
|
abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
@Throws(Exception::class)
|
@Throws(Exception::class)
|
||||||
protected fun doTest(beforeFileName: String) {
|
protected fun doTest(beforeFileName: String) {
|
||||||
enableInspections(beforeFileName)
|
val beforeFileText = FileUtil.loadFile(File(beforeFileName))
|
||||||
|
configureLanguageVersion(beforeFileText, project, module)
|
||||||
|
|
||||||
|
enableInspections(beforeFileName, beforeFileText)
|
||||||
|
|
||||||
doKotlinQuickFixTest(beforeFileName)
|
doKotlinQuickFixTest(beforeFileName)
|
||||||
checkForUnexpectedErrors()
|
checkForUnexpectedErrors()
|
||||||
@@ -140,8 +143,7 @@ abstract class AbstractQuickFixTest : KotlinLightCodeInsightFixtureTestCase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun enableInspections(beforeFileName: String) {
|
private fun enableInspections(beforeFileName: String, beforeFileText: String) {
|
||||||
val beforeFileText = FileUtil.loadFile(File(beforeFileName))
|
|
||||||
val toolsStrings = InTextDirectivesUtils.findListWithPrefixes(beforeFileText, "TOOL:")
|
val toolsStrings = InTextDirectivesUtils.findListWithPrefixes(beforeFileText, "TOOL:")
|
||||||
if (toolsStrings.isNotEmpty()) {
|
if (toolsStrings.isNotEmpty()) {
|
||||||
val inspections = toolsStrings.map { toolFqName ->
|
val inspections = toolsStrings.map { toolFqName ->
|
||||||
|
|||||||
Reference in New Issue
Block a user