Add more tests for coroutines; use higher-level API to check that changes have been applied

This commit is contained in:
Dmitry Jemerov
2017-03-09 13:57:45 +01:00
parent 73a2c8c436
commit c9df227fef
@@ -27,10 +27,12 @@ import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFile
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase
import org.jetbrains.kotlin.config.CoroutineSupport import org.jetbrains.kotlin.config.CoroutineSupport
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.facet.KotlinFacetType
import org.jetbrains.kotlin.idea.framework.JavaRuntimeDetectionUtil import org.jetbrains.kotlin.idea.framework.JavaRuntimeDetectionUtil
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
import org.jetbrains.kotlin.idea.test.configureKotlinFacet import org.jetbrains.kotlin.idea.test.configureKotlinFacet
@@ -44,8 +46,20 @@ class LanguageFeatureQuickFixTest : LightPlatformCodeInsightFixtureTestCase() {
myFixture.configureByText("foo.kt", "suspend fun foo()") myFixture.configureByText("foo.kt", "suspend fun foo()")
assertFalse(KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesEnable) assertFalse(KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesEnable)
assertFalse(LanguageFeature.DoNotWarnOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project")) myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project"))
assertTrue(KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesEnable) assertTrue(LanguageFeature.DoNotWarnOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
}
fun testDisableCoroutines() {
configureRuntime("mockRuntime11")
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
myFixture.configureByText("foo.kt", "suspend fun foo()")
assertFalse(KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesEnable)
assertFalse(LanguageFeature.ErrorOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project"))
assertTrue(LanguageFeature.ErrorOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
} }
fun testEnableCoroutinesFacet() { fun testEnableCoroutinesFacet() {
@@ -59,6 +73,17 @@ class LanguageFeatureQuickFixTest : LightPlatformCodeInsightFixtureTestCase() {
assertEquals(CoroutineSupport.ENABLED, facet.configuration.settings.compilerInfo.coroutineSupport) assertEquals(CoroutineSupport.ENABLED, facet.configuration.settings.compilerInfo.coroutineSupport)
} }
fun testEnableCoroutines_UpdateRuntime() {
val runtime = configureRuntime("mockRuntime106")
resetProjectSettings(LanguageVersion.KOTLIN_1_1)
myFixture.configureByText("foo.kt", "suspend fun foo()")
assertFalse(LanguageFeature.DoNotWarnOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project"))
assertTrue(LanguageFeature.DoNotWarnOnCoroutines in project.getLanguageVersionSettings().additionalFeatures)
assertEquals(bundledRuntimeVersion(), JavaRuntimeDetectionUtil.getJavaRuntimeVersion(listOf(runtime)))
}
fun testIncreaseLangLevel() { fun testIncreaseLangLevel() {
configureRuntime("mockRuntime11") configureRuntime("mockRuntime11")
resetProjectSettings(LanguageVersion.KOTLIN_1_0) resetProjectSettings(LanguageVersion.KOTLIN_1_0)