UpdateConfigurationQuickFixTest: update tests
This commit is contained in:
@@ -14,11 +14,14 @@ import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEdito
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.JarFileSystem
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.testFramework.exceptionCases.AbstractExceptionCase
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments.Companion.DEFAULT
|
||||
import org.jetbrains.kotlin.config.CompilerSettings.Companion.DEFAULT_ADDITIONAL_ARGUMENTS
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||
import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion
|
||||
@@ -42,8 +45,23 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
myFixture.configureByText("foo.kt", "inline class My(val n: Int)")
|
||||
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Disable inline classes support in the project"))
|
||||
assertEquals(LanguageFeature.State.DISABLED, inlineClassesSupport)
|
||||
assertException(object : AbstractExceptionCase<AssertionError>() {
|
||||
override fun getExpectedExceptionClass(): Class<AssertionError> = AssertionError::class.java
|
||||
|
||||
override fun tryClosure() {
|
||||
myFixture.findSingleIntention("Disable inline classes support in the project")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun testEnableInlineClasses() {
|
||||
configureRuntime("mockRuntime11")
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_3)
|
||||
myFixture.configureByText("foo.kt", "inline class My(val n: Int)")
|
||||
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Enable inline classes support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED, inlineClassesSupport)
|
||||
}
|
||||
|
||||
fun testEnableCoroutines() {
|
||||
@@ -51,7 +69,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
|
||||
myFixture.configureByText("foo.kt", "suspend fun foo()")
|
||||
|
||||
assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
@@ -62,7 +80,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
|
||||
myFixture.configureByText("foo.kt", "suspend fun foo()")
|
||||
|
||||
assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, coroutineSupport)
|
||||
@@ -159,12 +177,14 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
|
||||
fun testAddKotlinReflect() {
|
||||
configureRuntime("mockRuntime11")
|
||||
myFixture.configureByText("foo.kt", """class Foo(val prop: Any) {
|
||||
myFixture.configureByText(
|
||||
"foo.kt", """class Foo(val prop: Any) {
|
||||
fun func() {}
|
||||
}
|
||||
|
||||
fun y01() = Foo::prop.gett<caret>er
|
||||
""")
|
||||
"""
|
||||
)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Add kotlin-reflect.jar to the classpath"))
|
||||
val kotlinRuntime = KotlinJavaModuleConfigurator.instance.getKotlinLibrary(module)!!
|
||||
val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name }
|
||||
@@ -190,10 +210,13 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
}
|
||||
|
||||
private fun resetProjectSettings(version: LanguageVersion) {
|
||||
KotlinCompilerSettings.getInstance(project).update {
|
||||
additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS
|
||||
}
|
||||
KotlinCommonCompilerArgumentsHolder.getInstance(project).update {
|
||||
languageVersion = version.versionString
|
||||
apiVersion = version.versionString
|
||||
coroutinesState = CommonCompilerArguments.WARN
|
||||
coroutinesState = DEFAULT
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,6 +227,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.InlineClasses)
|
||||
|
||||
override fun tearDown() {
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_3)
|
||||
FacetManager.getInstance(module).getFacetByType(KotlinFacetType.TYPE_ID)?.let {
|
||||
FacetUtil.deleteFacet(it)
|
||||
}
|
||||
|
||||
+33
-8
@@ -7,17 +7,21 @@ package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.facet.FacetManager
|
||||
import com.intellij.facet.impl.FacetUtil
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel
|
||||
import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.openapi.vfs.JarFileSystem
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.testFramework.exceptionCases.AbstractExceptionCase
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments.Companion.DEFAULT
|
||||
import org.jetbrains.kotlin.config.CompilerSettings.Companion.DEFAULT_ADDITIONAL_ARGUMENTS
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||
import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion
|
||||
@@ -38,8 +42,23 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
myFixture.configureByText("foo.kt", "inline class My(val n: Int)")
|
||||
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Disable inline classes support in the project"))
|
||||
assertEquals(LanguageFeature.State.DISABLED, inlineClassesSupport)
|
||||
assertException(object : AbstractExceptionCase<AssertionError>() {
|
||||
override fun getExpectedExceptionClass(): Class<AssertionError> = AssertionError::class.java
|
||||
|
||||
override fun tryClosure() {
|
||||
myFixture.findSingleIntention("Disable inline classes support in the project")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fun testEnableInlineClasses() {
|
||||
configureRuntime("mockRuntime11")
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_3)
|
||||
myFixture.configureByText("foo.kt", "inline class My(val n: Int)")
|
||||
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Enable inline classes support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED, inlineClassesSupport)
|
||||
}
|
||||
|
||||
fun testEnableCoroutines() {
|
||||
@@ -47,7 +66,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
|
||||
myFixture.configureByText("foo.kt", "suspend fun foo()")
|
||||
|
||||
assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
@@ -58,7 +77,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
|
||||
myFixture.configureByText("foo.kt", "suspend fun foo()")
|
||||
|
||||
assertEquals(CommonCompilerArguments.WARN, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState)
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project"))
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, coroutineSupport)
|
||||
@@ -155,12 +174,14 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
|
||||
fun testAddKotlinReflect() {
|
||||
configureRuntime("mockRuntime11")
|
||||
myFixture.configureByText("foo.kt", """class Foo(val prop: Any) {
|
||||
myFixture.configureByText(
|
||||
"foo.kt", """class Foo(val prop: Any) {
|
||||
fun func() {}
|
||||
}
|
||||
|
||||
fun y01() = Foo::prop.gett<caret>er
|
||||
""")
|
||||
"""
|
||||
)
|
||||
myFixture.launchAction(myFixture.findSingleIntention("Add kotlin-reflect.jar to the classpath"))
|
||||
val kotlinRuntime = KotlinJavaModuleConfigurator.instance.getKotlinLibrary(module)!!
|
||||
val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name }
|
||||
@@ -186,10 +207,13 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
}
|
||||
|
||||
private fun resetProjectSettings(version: LanguageVersion) {
|
||||
KotlinCompilerSettings.getInstance(project).update {
|
||||
additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS
|
||||
}
|
||||
KotlinCommonCompilerArgumentsHolder.getInstance(project).update {
|
||||
languageVersion = version.versionString
|
||||
apiVersion = version.versionString
|
||||
coroutinesState = CommonCompilerArguments.WARN
|
||||
coroutinesState = DEFAULT
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,6 +224,7 @@ class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase(
|
||||
get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.InlineClasses)
|
||||
|
||||
override fun tearDown() {
|
||||
resetProjectSettings(LanguageVersion.KOTLIN_1_3)
|
||||
FacetManager.getInstance(module).getFacetByType(KotlinFacetType.TYPE_ID)?.let {
|
||||
FacetUtil.deleteFacet(it)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user