diff --git a/ultimate/resources/META-INF/kotlin-spring.xml.181 b/ultimate/resources/META-INF/kotlin-spring.xml.181 index 8055f15fe09..6bb1fd74148 100644 --- a/ultimate/resources/META-INF/kotlin-spring.xml.181 +++ b/ultimate/resources/META-INF/kotlin-spring.xml.181 @@ -3,7 +3,6 @@ - (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()!!.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() + super.tearDown() + } +}