181: KotlinSpringClassAnnotator dropped

This commit is contained in:
Nicolay Mitropolsky
2018-02-19 17:52:59 +03:00
committed by Nikolay Krasko
parent f539ed76a8
commit 4d65147373
3 changed files with 105 additions and 1 deletions
@@ -3,7 +3,6 @@
<multiHostInjector implementation="org.jetbrains.kotlin.idea.spring.el.KotlinSpringELInjector"/>
<codeInsight.lineMarkerProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.spring.lineMarking.KotlinSpringClassAnnotator"/>
<codeInsight.lineMarkerProvider language="kotlin" implementationClass="org.jetbrains.kotlin.idea.spring.lineMarking.KotlinSpringModelDependenciesLineMarkerProvider"/>
<localInspection implementationClass="org.jetbrains.kotlin.idea.spring.inspections.KotlinFinalClassOrFunSpringInspection"
@@ -0,0 +1,105 @@
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.idea.spring.tests.gutter
import com.google.gson.JsonArray
import com.google.gson.JsonObject
import com.google.gson.JsonParser
import com.intellij.codeInsight.daemon.LineMarkerProviders
import com.intellij.openapi.util.io.FileUtil
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
import icons.SpringApiIcons
import junit.framework.Assert
import junit.framework.AssertionFailedError
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.idea.jsonUtils.getString
import org.jetbrains.kotlin.idea.spring.tests.SpringTestFixtureExtension
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.test.TestFixtureExtension
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
abstract class AbstractSpringClassAnnotatorTest : KotlinLightCodeInsightFixtureTestCase() {
override fun getProjectDescriptor() = LightCodeInsightFixtureTestCase.JAVA_LATEST
override fun setUp() {
super.setUp()
TestFixtureExtension.loadFixture<SpringTestFixtureExtension>(myModule)
}
protected fun doTest(path: String) {
val configFilePath = "${KotlinTestUtils.getHomeDirectory()}/$path"
val configFile = File(configFilePath)
val testRoot = configFile.parentFile
val config = JsonParser().parse(FileUtil.loadFile(configFile, true)) as JsonObject
PluginTestCaseBase.addJdk(myFixture.projectDisposable, PluginTestCaseBase::mockJdk)
val withRuntime = config["withRuntime"]?.asBoolean ?: false
if (withRuntime) {
ConfigLibraryUtil.configureKotlinRuntimeAndSdk(myModule, PluginTestCaseBase.mockJdk())
}
try {
val springConfigFiles = (config["springConfig"] as JsonArray).map { it.asString }
myFixture.testDataPath = testRoot.absolutePath
for (file in testRoot.listFiles()) {
val name = file.name
if (file.isDirectory) myFixture.copyDirectoryToProject(name, name) else myFixture.configureByFile(name)
}
TestFixtureExtension.getFixture<SpringTestFixtureExtension>()!!.configureFileSet(myFixture, springConfigFiles)
val fileName = config.getString("file")
val iconName = config.getString("icon")
val icon = SpringApiIcons.Gutter::class.java.getField(iconName)[null]
val gutter = myFixture.findGutter(fileName) ?: throw AssertionError("no gutter for '$fileName'")
val gutterMark = gutter.let {
if (it.icon == icon) it
else myFixture.findGuttersAtCaret().let { gutters ->
gutters.firstOrNull() { it.icon == icon }
?: throw AssertionFailedError("no $icon in gutters: ${gutters.map { it.icon }}")
}
}
val tooltip = config.getString("tooltip")
Assert.assertEquals(tooltip, gutterMark.tooltipText)
val naming = config.getString("naming")
val targets = (config["targets"] as JsonArray).map { it.asString }
when (naming) {
"bean" -> checkBeanGutterTargets(gutterMark, targets)
"property" -> checkBeanPropertyTargets(gutterMark, targets)
"generic" -> checkPsiElementGutterTargets(gutterMark, targets)
else -> error("Unexpected naming: $naming")
}
}
finally {
if (withRuntime) {
ConfigLibraryUtil.unConfigureKotlinRuntimeAndSdk(myModule, PluginTestCaseBase.mockJdk())
}
}
}
override fun tearDown() {
TestFixtureExtension.unloadFixture<SpringTestFixtureExtension>()
super.tearDown()
}
}